initial commit
authorRastislav Szabo <raszabo@cisco.com>
Thu, 4 May 2017 09:09:03 +0000 (11:09 +0200)
committerRastislav Szabo <raszabo@cisco.com>
Thu, 4 May 2017 09:12:35 +0000 (11:12 +0200)
Signed-off-by: Rastislav Szabo <raszabo@cisco.com>
566 files changed:
README.md [new file with mode: 0644]
adapter/adapter.go [new file with mode: 0644]
adapter/doc.go [new file with mode: 0644]
adapter/mock/binapi_reflect/binapi_reflect.go [new file with mode: 0644]
adapter/mock/mock_adapter.go [new file with mode: 0644]
adapter/vppapiclient/empty_adapter.go [new file with mode: 0644]
adapter/vppapiclient/vppapiclient_adapter.go [new file with mode: 0644]
api/api.go [new file with mode: 0644]
api/api_test.go [new file with mode: 0644]
api/doc.go [new file with mode: 0644]
api/ifcounters/doc.go [new file with mode: 0644]
api/ifcounters/ifcounters.go [new file with mode: 0644]
api/ifcounters/ifcounters_test.go [new file with mode: 0644]
binapi_generator/doc.go [new file with mode: 0644]
binapi_generator/generator.go [new file with mode: 0644]
binapi_generator/generator_test.go [new file with mode: 0644]
binapi_generator/testdata/acl.api.json [new file with mode: 0644]
binapi_generator/testdata/af_packet.api.json [new file with mode: 0644]
binapi_generator/testdata/input-generate-error.json [new file with mode: 0644]
binapi_generator/testdata/input-read-json-error.json [new file with mode: 0644]
binapi_generator/testdata/input.txt [new file with mode: 0644]
binapi_generator/testdata/ip.api.json [new file with mode: 0644]
core/bin_api/vpe/vpe.go [new file with mode: 0644]
core/core.go [new file with mode: 0644]
core/core_test.go [new file with mode: 0644]
core/doc.go [new file with mode: 0644]
core/msg_codec.go [new file with mode: 0644]
core/notifications.go [new file with mode: 0644]
doc.go [new file with mode: 0644]
examples/bin_api/acl.api.json [new file with mode: 0644]
examples/bin_api/acl/acl.go [new file with mode: 0644]
examples/bin_api/af_packet.api.json [new file with mode: 0644]
examples/bin_api/af_packet/af_packet.go [new file with mode: 0644]
examples/bin_api/interface.api.json [new file with mode: 0644]
examples/bin_api/interfaces/interfaces.go [new file with mode: 0644]
examples/bin_api/ip.api.json [new file with mode: 0644]
examples/bin_api/ip/ip.go [new file with mode: 0644]
examples/bin_api/memif.api.json [new file with mode: 0644]
examples/bin_api/memif/memif.go [new file with mode: 0644]
examples/bin_api/tap.api.json [new file with mode: 0644]
examples/bin_api/tap/tap.go [new file with mode: 0644]
examples/bin_api/uflow.api.json [new file with mode: 0644]
examples/bin_api/uflow/uflow.go [new file with mode: 0644]
examples/example_client.go [new file with mode: 0644]
examples/examples [new file with mode: 0755]
glide.lock [new file with mode: 0644]
glide.yaml [new file with mode: 0644]
govpp.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/.gitignore [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/.travis.yml [new file with mode: 0644]
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/alt_exit.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/alt_exit_test.go [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/entry_test.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/examples/basic/basic.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/examples/hook/hook.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/formatter_bench_test.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/hook_test.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/hooks.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/hooks/syslog/README.md [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/hooks/syslog/syslog.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/hooks/test/test.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/hooks/test/test_test.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/json_formatter.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/json_formatter_test.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/logger.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/logger_bench_test.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/logrus.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/logrus_test.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/terminal_appengine.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/text_formatter_test.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/writer.go [new file with mode: 0644]
vendor/github.com/bennyscetbun/jsongo/.gitignore [new file with mode: 0644]
vendor/github.com/bennyscetbun/jsongo/LICENSE [new file with mode: 0644]
vendor/github.com/bennyscetbun/jsongo/README.md [new file with mode: 0644]
vendor/github.com/bennyscetbun/jsongo/debug.go [new file with mode: 0644]
vendor/github.com/bennyscetbun/jsongo/jsongo.go [new file with mode: 0644]
vendor/github.com/bennyscetbun/jsongo/print.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/.travis.yml [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/LICENSE [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/README.md [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/bench_test.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/binary.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/custom.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/custom_float16.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/custom_float16_test.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/custom_test.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/field.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/field_test.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/fields.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/fields_test.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/legacy.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/packable_test.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/packer.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/parse.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/parse_test.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/struc.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/struc_test.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/types.go [new file with mode: 0644]
vendor/github.com/lunixbochs/struc/types_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/.gitignore [new file with mode: 0644]
vendor/github.com/onsi/gomega/.travis.yml [new file with mode: 0644]
vendor/github.com/onsi/gomega/CHANGELOG.md [new file with mode: 0644]
vendor/github.com/onsi/gomega/LICENSE [new file with mode: 0644]
vendor/github.com/onsi/gomega/README.md [new file with mode: 0644]
vendor/github.com/onsi/gomega/format/format.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/format/format_suite_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/format/format_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gbytes/buffer.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gbytes/buffer_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gbytes/say_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gexec/build.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gexec/build_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gexec/exit_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gexec/prefixed_writer.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gexec/session.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gexec/session_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/ghttp/handlers.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto [new file with mode: 0644]
vendor/github.com/onsi/gomega/ghttp/test_server.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/ghttp/test_server_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gomega_dsl.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/elements.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/elements_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/fields.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/fields_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/ignore.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/ignore_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/pointer.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/pointer_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/gstruct/types.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/internal/assertion/assertion.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/internal/oraclematcher/oracle_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/and.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/and_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_a_directory.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_false_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_identical_to.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_true_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_zero_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/consist_of.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/consist_of_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/equal_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_key_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_len_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_prefix_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_suffix_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/match_error_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/match_json_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/match_regexp_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/match_yaml_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/not.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/not_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/or.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/or_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/panic_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/receive_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/succeed_matcher.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraphmatching.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/support/goraph/edge/edge.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/support/goraph/node/node.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/support/goraph/util/util.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/type_support.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/with_transform.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/matchers/with_transform_test.go [new file with mode: 0644]
vendor/github.com/onsi/gomega/types/types.go [new file with mode: 0644]
vendor/golang.org/x/sys/.gitattributes [new file with mode: 0644]
vendor/golang.org/x/sys/.gitignore [new file with mode: 0644]
vendor/golang.org/x/sys/AUTHORS [new file with mode: 0644]
vendor/golang.org/x/sys/CONTRIBUTING.md [new file with mode: 0644]
vendor/golang.org/x/sys/CONTRIBUTORS [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/README [new file with mode: 0644]
vendor/golang.org/x/sys/codereview.cfg [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/asm.s [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/asm_plan9_386.s [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/const_plan9.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/dir_plan9.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/env_plan9.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/env_unset.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/errors_plan9.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/mkall.sh [new file with mode: 0755]
vendor/golang.org/x/sys/plan9/mkerrors.sh [new file with mode: 0755]
vendor/golang.org/x/sys/plan9/mksyscall.pl [new file with mode: 0755]
vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh [new file with mode: 0755]
vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/pwd_plan9.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/race.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/race0.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/str.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/syscall.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/syscall_plan9.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/syscall_test.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/plan9/zsysnum_plan9.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/.gitignore [new file with mode: 0644]
vendor/golang.org/x/sys/unix/README.md [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_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_mipsx.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_linux_s390x.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/bluetooth_linux.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/constants.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/creds_test.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/dirent.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/endian_big.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/endian_little.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/export_test.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/gccgo_linux_sparc64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/linux/Dockerfile [new file with mode: 0644]
vendor/golang.org/x/sys/unix/linux/mkall.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/linux/mksysnum.pl [new file with mode: 0755]
vendor/golang.org/x/sys/unix/linux/types.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/mkpost.go [new file with mode: 0644]
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_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/mmap_unix_test.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/openbsd_pledge.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/openbsd_test.go [new file with mode: 0644]
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_bsd_test.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_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_freebsd_test.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_amd64_gc.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_mipsx.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_linux_s390x.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_linux_test.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_test.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/syscall_unix_gc.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_unix_test.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_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_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_mips.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_mipsle.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_linux_s390x.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.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_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_mips.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_mipsle.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_linux_s390x.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.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_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_mips.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_mipsle.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_linux_s390x.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.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_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_mips.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_mipsle.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_linux_s390x.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.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/golang.org/x/sys/windows/asm_windows_386.s [new file with mode: 0644]
vendor/golang.org/x/sys/windows/asm_windows_amd64.s [new file with mode: 0644]
vendor/golang.org/x/sys/windows/dll_windows.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/env_unset.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/env_windows.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/eventlog.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/exec_windows.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/mksyscall.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/race.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/race0.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/registry/export_test.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/registry/key.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/registry/mksyscall.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/registry/registry_test.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/registry/syscall.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/registry/value.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/security_windows.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/service.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/str.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/debug/log.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/debug/service.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/event.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/eventlog/install.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/eventlog/log.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/example/beep.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/example/install.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/example/main.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/example/manage.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/example/service.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/go12.c [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/go12.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/go13.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/mgr/config.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/mgr/mgr.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/mgr/service.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/security.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/service.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/svc_test.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/sys_386.s [new file with mode: 0644]
vendor/golang.org/x/sys/windows/svc/sys_amd64.s [new file with mode: 0644]
vendor/golang.org/x/sys/windows/syscall.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/syscall_test.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/syscall_windows.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/syscall_windows_test.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/zsyscall_windows.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/ztypes_windows.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/ztypes_windows_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/windows/ztypes_windows_amd64.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/.travis.yml [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/decode_test.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/encode_test.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/suite_test.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]

diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..7e70986
--- /dev/null
+++ b/README.md
@@ -0,0 +1,142 @@
+## GoVPP
+
+This set of packages provide the API for communication with VPP from Go. It consists of the following packages:
+
+- [govpp](govpp.go): provides the entry point to govpp functionality
+- [api](api/api.go): API for communication with govpp core using Go channels (without the need of importing the govpp core package itself),
+- [core](core/): main functionality of the govpp, sends and receives the messages to/from VPP using the adapter, marshalls/unmarshalls them and forwards them between the client Go channels and the VPP,
+- [adapter](adapter/): adapter between govpp core and the VPP, responsible for sending and receiving binary-encoded data via shared memory,
+- [binapi_generator](binapi_generator/generator.go): Generator of Go structs out of the VPP binary API definitions in JSON format,
+- [examples](examples/): example VPP management application that exercises the govpp API on real-world use-cases.
+
+The design with separated govpp API package ([api](api/api.go)) and the govpp core package ([core](core/)) enables 
+plugin-based infrastructure, where one entity acts as a master responsible for talking with VPP (e.g. Agent 
+Core on the schema below) and multiple entities act as clients that are using the master for the communication with 
+VPP (Agent Plugins on the schema below). The clients can be built into standalone shared libraries without the need 
+of linking the govpp core and all its dependencies into them.
+
+```
+                                       +--------------+
+    +--------------+                   |              |
+    |              |                   | Agent Plugin |
+    |              |                   |              |
+    |  Agent Core  |                   +--------------+
+    |              |            +------+  govpp API   |
+    |              |            |      +--------------+
+    +--------------+     Go     |
+    |              |  channels  |      +--------------+
+    |  govpp core  +------------+      |              |
+    |              |            |      | Agent Plugin |
+    +------+-------+            |      |              |
+           |                    |      +--------------+
+binary API |                    +------+  govpp API   |
+  (shmem)  |                           +--------------+
+           |
+    +------+-------+
+    |              |
+    |      VPP     |    
+    |              |
+    +--------------+
+```
+
+
+## Example usage
+Generating Go bindings from the JSON files located in the `/usr/share/vpp/api/` directory 
+into the Go packages that will be created inside of the `bin_api` directory:
+```
+go run binapi_generator/generator.go --input-dir=/usr/share/vpp/api/ --output-dir=bin_api
+```
+
+Usage of the generated bindings:
+```go
+func main() {
+       conn, _ := govpp.Connect()
+       defer conn.Disconnect()
+
+       ch, _ := conn.NewAPIChannel()
+       defer ch.Close()
+  
+       req := &acl.ACLAddReplace{
+               ACLIndex: ^uint32(0),
+               Tag:      []byte("access list 1"),
+               R: []acl.ACLRule{
+                       {
+                               IsPermit:       1,
+                               SrcIPAddr:      net.ParseIP("10.0.0.0").To4(),
+                               SrcIPPrefixLen: 8,
+                               DstIPAddr:      net.ParseIP("192.168.1.0").To4(),
+                               DstIPPrefixLen: 24,
+                               Proto:          6,
+                       },
+                       {
+                               IsPermit:       1,
+                               SrcIPAddr:      net.ParseIP("8.8.8.8").To4(),
+                               SrcIPPrefixLen: 32,
+                               DstIPAddr:      net.ParseIP("172.16.0.0").To4(),
+                               DstIPPrefixLen: 16,
+                               Proto:          6,
+                       },
+               },
+       }
+       reply := &acl.ACLAddReplaceReply{}
+
+       err := ch.SendRequest(req).ReceiveReply(reply)
+}
+```
+
+The example above uses simple wrapper API over underlying go channels, see [example_client](examples/example_client.go) 
+for more examples, including the example on how to use the Go channels directly.
+
+
+## Build & Installation Procedure
+Govpp uses `vppapiclient` library from VPP codebase to communicate with VPP. To build govpp, vpp-dev package must be installed,
+either [from packages](https://wiki.fd.io/view/VPP/Installing_VPP_binaries_from_packages) or 
+[from sources](https://wiki.fd.io/view/VPP/Build,_install,_and_test_images#Build_A_VPP_Package).
+
+To build & install `vpp-dev` from sources:
+```
+git clone https://gerrit.fd.io/r/vpp
+cd vpp
+make install-dep
+make bootstrap
+make pkg-deb
+cd build-root
+sudo dpkg -i vpp*.deb
+```
+
+To build & install all govpp binaries into your `$GOPATH`:
+```
+cd govpp
+go build ./...
+go install ./...
+```
+
+
+## Building Go bindings from VPP binary APIs
+Once you have `binapi_generator` installed in your `$GOPATH`, you can use it to generate Go bindings from
+VPP APis in JSON format. The JSON input can be specified as a single file (`input-file` argument), or
+as a directory that will be scanned for all `.json` files (`input-dir`). The generated Go bindings will
+be placed into `output-dir` (by default current working directory), where each Go package will be placed into 
+a separated directory, e.g.:
+
+```
+binapi_generator --input-file=examples/bin_api/acl.api.json --output-dir=examples/bin_api
+binapi_generator --input-dir=examples/bin_api --output-dir=examples/bin_api
+```
+
+In Go, [go generate](https://blog.golang.org/generate) tool can be leveraged to ease the code generation
+process. It allows to specify generator instructions in any one of the regular (non-generated) `.go` files
+that are dependent on generated code using special comments, e.g. the one from [example_client](examples/example_client.go):
+```go
+// go:generate binapi_generator --input-dir=bin_api --output-dir=bin_api
+```
+
+The comment must start at the beginning of the line and have no spaces between the `//` and the `go:generate`. 
+After that marker, the rest of the line specifies a command for `go generate` to run. 
+
+The `go generate` tool automatically traverses the code base, looks for the special comments in Go code and 
+invokes the code generation, e.g.:
+```
+go generate ./...
+```
+Invokes all `go:generate` rules in all Go packages recursively.
diff --git a/adapter/adapter.go b/adapter/adapter.go
new file mode 100644 (file)
index 0000000..2843d2c
--- /dev/null
@@ -0,0 +1,33 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 adapter
+
+// VppAdapter provides connection to VPP. It is responsible for sending and receiving of binary-encoded messages to/from VPP.
+type VppAdapter interface {
+       // Connect connects the process to VPP.
+       Connect() error
+
+       // Disconnect disconnects the process from VPP.
+       Disconnect()
+
+       // GetMsgID returns a runtime message ID for the given message name and CRC.
+       GetMsgID(msgName string, msgCrc string) (uint16, error)
+
+       // SendMsg sends a binary-encoded message to VPP.
+       SendMsg(clientID uint32, data []byte) error
+
+       // SetMsgCallback sets a callback function that will be called by the adapter whenever a message comes from VPP.
+       SetMsgCallback(func(context uint32, msgId uint16, data []byte))
+}
diff --git a/adapter/doc.go b/adapter/doc.go
new file mode 100644 (file)
index 0000000..5b0ac8a
--- /dev/null
@@ -0,0 +1,9 @@
+// Package adapter provides an interface between govpp core and the VPP. It is responsible for sending
+// and receiving binary-encoded data to/from VPP via shared memory.
+//
+// The default adapter being used for connection with real VPP is called vppapiclient. It is based on the
+// communication with the vppapiclient VPP library written in C via CGO.
+//
+// Apart from the vppapiclient adapter, mock adapter is provided for unit/integration testing where the actual
+// communication with VPP is not demanded.
+package adapter
diff --git a/adapter/mock/binapi_reflect/binapi_reflect.go b/adapter/mock/binapi_reflect/binapi_reflect.go
new file mode 100644 (file)
index 0000000..f860150
--- /dev/null
@@ -0,0 +1,74 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 binapi_reflect is a helper package for generic handling of VPP binary API messages
+// in the mock adapter and integration tests.
+package binapi_reflect
+
+import (
+       "reflect"
+)
+
+const SwIfIndex = "SwIfIndex"
+const Retval = "Retval"
+const Reply = "_reply"
+
+// TODO comment
+func FindFieldOfType(reply reflect.Type, fieldName string) (reflect.StructField, bool) {
+       if reply.Kind() == reflect.Struct {
+               field, found := reply.FieldByName(fieldName)
+               return field, found
+       } else if reply.Kind() == reflect.Ptr && reply.Elem().Kind() == reflect.Struct {
+               field, found := reply.Elem().FieldByName(fieldName)
+               return field, found
+       }
+       return reflect.StructField{}, false
+}
+
+// TODO comment
+func FindFieldOfValue(reply reflect.Value, fieldName string) (reflect.Value, bool) {
+       if reply.Kind() == reflect.Struct {
+               field := reply.FieldByName(fieldName)
+               return field, field.IsValid()
+       } else if reply.Kind() == reflect.Ptr && reply.Elem().Kind() == reflect.Struct {
+               field := reply.Elem().FieldByName(fieldName)
+               return field, field.IsValid()
+       }
+       return reflect.Value{}, false
+}
+
+// TODO comment
+func IsReplySwIfIdx(reply reflect.Type) bool {
+       _, found := FindFieldOfType(reply, SwIfIndex)
+       return found
+}
+
+// TODO comment
+func SetSwIfIdx(reply reflect.Value, swIfIndex uint32) {
+       if field, found := FindFieldOfValue(reply, SwIfIndex); found {
+               field.Set(reflect.ValueOf(swIfIndex))
+       }
+}
+
+// TODO comment
+func SetRetVal(reply reflect.Value, retVal int32) {
+       if field, found := FindFieldOfValue(reply, Retval); found {
+               field.Set(reflect.ValueOf(retVal))
+       }
+}
+
+// TODO comment
+func ReplyNameFor(request string) (string, bool) {
+       return request + Reply, true
+}
diff --git a/adapter/mock/mock_adapter.go b/adapter/mock/mock_adapter.go
new file mode 100644 (file)
index 0000000..cc3be07
--- /dev/null
@@ -0,0 +1,302 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 mock is an alternative VPP adapter aimed for unit/integration testing where the
+// actual communication with VPP is not demanded.
+package mock
+
+import (
+       "bytes"
+       "log"
+       "reflect"
+       "sync"
+
+       "github.com/lunixbochs/struc"
+
+       "gerrit.fd.io/r/govpp/adapter"
+       "gerrit.fd.io/r/govpp/adapter/mock/binapi_reflect"
+       "gerrit.fd.io/r/govpp/api"
+)
+
+// VppAdapter represents a mock VPP adapter that can be used for unit/integration testing instead of the vppapiclient adapter.
+type VppAdapter struct {
+       callback func(context uint32, msgId uint16, data []byte)
+
+       msgNameToIds *map[string]uint16
+       msgIdsToName *map[uint16]string
+       msgIdSeq     uint16
+       binApiTypes  map[string]reflect.Type
+       //TODO lock
+}
+
+// replyHeader represents a common header of each VPP request message.
+type requestHeader struct {
+       VlMsgID     uint16
+       ClientIndex uint32
+       Context     uint32
+}
+
+// replyHeader represents a common header of each VPP reply message.
+type replyHeader struct {
+       VlMsgID uint16
+       Context uint32
+}
+
+// replyHeader represents a common header of each VPP reply message.
+type vppOtherHeader struct {
+       VlMsgID uint16
+}
+
+// defaultReply is a default reply message that mock adapter returns for a request.
+type defaultReply struct {
+       Retval int32
+}
+
+// MessageDTO is a structure used for propageating informations to ReplyHandlers
+type MessageDTO struct {
+       MsgID    uint16
+       MsgName  string
+       ClientID uint32
+       Data     []byte
+}
+
+// ReplyHandler is a type that allows to extend the behaviour of VPP mock.
+// Return value prepared is used to signalize that mock reply is calculated.
+type ReplyHandler func(request MessageDTO) (reply []byte, msgID uint16, prepared bool)
+
+const (
+       //defaultMsgID      = 1 // default message ID to be returned from GetMsgId
+       defaultReplyMsgID = 2 // default message ID for the reply to be sent back via callback
+)
+
+var replies []api.Message        // FIFO queue of messages
+var replyHandlers []ReplyHandler // callbacks that are able to calculate mock responses
+var repliesLock sync.Mutex       // mutex for the queue
+var mode = 0
+
+const useRepliesQueue = 1  // use replies in the queue instead of the default one
+const useReplyHandlers = 2 //use ReplyHandler
+
+// NewVppAdapter returns a new mock adapter.
+func NewVppAdapter() adapter.VppAdapter {
+       return &VppAdapter{}
+}
+
+// Connect emulates connecting the process to VPP.
+func (a *VppAdapter) Connect() error {
+       return nil
+}
+
+// Disconnect emulates disconnecting the process from VPP.
+func (a *VppAdapter) Disconnect() {
+       // no op
+}
+
+func (a *VppAdapter) GetMsgNameByID(msgId uint16) (string, bool) {
+       a.initMaps()
+
+       switch msgId {
+       case 100:
+               return "control_ping", true
+       case 101:
+               return "control_ping_reply", true
+       case 200:
+               return "sw_interface_dump", true
+       case 201:
+               return "sw_interface_details", true
+       }
+
+       msgName, found := (*a.msgIdsToName)[msgId]
+
+       return msgName, found
+}
+
+func (a *VppAdapter) RegisterBinApiTypes(binApiTypes map[string]reflect.Type) {
+       a.initMaps()
+       for _, v := range binApiTypes {
+               if msg, ok := reflect.New(v).Interface().(api.Message); ok {
+                       a.binApiTypes[msg.GetMessageName()] = v
+               }
+       }
+}
+
+func (a *VppAdapter) ReplyTypeFor(requestMsgName string) (reflect.Type, uint16, bool) {
+       replyName, foundName := binapi_reflect.ReplyNameFor(requestMsgName)
+       if foundName {
+               if reply, found := a.binApiTypes[replyName]; found {
+                       msgID, err := a.GetMsgID(replyName, "")
+                       if err == nil {
+                               return reply, msgID, found
+                       }
+               }
+       }
+
+       return nil, 0, false
+}
+
+func (a *VppAdapter) ReplyFor(requestMsgName string) (api.Message, uint16, bool) {
+       replType, msgID, foundReplType := a.ReplyTypeFor(requestMsgName)
+       if foundReplType {
+               msgVal := reflect.New(replType)
+               if msg, ok := msgVal.Interface().(api.Message); ok {
+                       log.Println("FFF ", replType, msgID, foundReplType)
+                       return msg, msgID, true
+               }
+       }
+
+       return nil, 0, false
+}
+
+func (a *VppAdapter) ReplyBytes(request MessageDTO, reply api.Message) ([]byte, error) {
+       replyMsgId, err := a.GetMsgID(reply.GetMessageName(), reply.GetCrcString())
+       if err != nil {
+               log.Println("ReplyBytesE ", replyMsgId, " ", reply.GetMessageName(), " clientId: ", request.ClientID,
+                       " ", err)
+               return nil, err
+       }
+       log.Println("ReplyBytes ", replyMsgId, " ", reply.GetMessageName(), " clientId: ", request.ClientID)
+
+       buf := new(bytes.Buffer)
+       struc.Pack(buf, &replyHeader{VlMsgID: replyMsgId, Context: request.ClientID})
+       struc.Pack(buf, reply)
+
+       return buf.Bytes(), nil
+}
+
+// GetMsgID returns mocked message ID for the given message name and CRC.
+func (a *VppAdapter) GetMsgID(msgName string, msgCrc string) (uint16, error) {
+       switch msgName {
+       case "control_ping":
+               return 100, nil
+       case "control_ping_reply":
+               return 101, nil
+       case "sw_interface_dump":
+               return 200, nil
+       case "sw_interface_details":
+               return 201, nil
+       }
+
+       a.initMaps()
+
+       if msgId, found := (*a.msgNameToIds)[msgName]; found {
+               return msgId, nil
+       } else {
+               a.msgIdSeq++
+               msgId = a.msgIdSeq
+               (*a.msgNameToIds)[msgName] = msgId
+               (*a.msgIdsToName)[msgId] = msgName
+
+               log.Println("VPP GetMessageId ", msgId, " name:", msgName, " crc:", msgCrc)
+
+               return msgId, nil
+       }
+}
+
+func (a *VppAdapter) initMaps() {
+       if a.msgIdsToName == nil {
+               a.msgIdsToName = &map[uint16]string{}
+               a.msgNameToIds = &map[string]uint16{}
+               a.msgIdSeq = 1000
+       }
+
+       if a.binApiTypes == nil {
+               a.binApiTypes = map[string]reflect.Type{}
+       }
+}
+
+// SendMsg emulates sending a binary-encoded message to VPP.
+func (a *VppAdapter) SendMsg(clientID uint32, data []byte) error {
+       switch mode {
+       case useReplyHandlers:
+               for i := len(replyHandlers) - 1; i >= 0; i-- {
+                       replyHandler := replyHandlers[i]
+
+                       buf := bytes.NewReader(data)
+                       reqHeader := requestHeader{}
+                       struc.Unpack(buf, &reqHeader)
+
+                       a.initMaps()
+                       reqMsgName, _ := (*a.msgIdsToName)[reqHeader.VlMsgID]
+
+                       reply, msgID, finished := replyHandler(MessageDTO{reqHeader.VlMsgID, reqMsgName,
+                               clientID, data})
+                       if finished {
+                               a.callback(clientID, msgID, reply)
+                               return nil
+                       }
+               }
+               fallthrough
+       case useRepliesQueue:
+               repliesLock.Lock()
+               defer repliesLock.Unlock()
+
+               // pop all replies from queue
+               for i, reply := range replies {
+                       if i > 0 && reply.GetMessageName() == "control_ping_reply" {
+                               // hack - do not send control_ping_reply immediately, leave it for the the next callback
+                               replies = []api.Message{}
+                               replies = append(replies, reply)
+                               return nil
+                       }
+                       msgID, _ := a.GetMsgID(reply.GetMessageName(), reply.GetCrcString())
+                       buf := new(bytes.Buffer)
+                       if reply.GetMessageType() == api.ReplyMessage {
+                               struc.Pack(buf, &replyHeader{VlMsgID: msgID, Context: clientID})
+                       } else {
+                               struc.Pack(buf, &requestHeader{VlMsgID: msgID, Context: clientID})
+                       }
+                       struc.Pack(buf, reply)
+                       a.callback(clientID, msgID, buf.Bytes())
+               }
+               if len(replies) > 0 {
+                       replies = []api.Message{}
+                       return nil
+               }
+
+               //fallthrough
+       default:
+               // return default reply
+               buf := new(bytes.Buffer)
+               msgID := uint16(defaultReplyMsgID)
+               struc.Pack(buf, &replyHeader{VlMsgID: msgID, Context: clientID})
+               struc.Pack(buf, &defaultReply{})
+               a.callback(clientID, msgID, buf.Bytes())
+       }
+       return nil
+}
+
+// SetMsgCallback sets a callback function that will be called by the adapter whenever a message comes from the mock.
+func (a *VppAdapter) SetMsgCallback(cb func(context uint32, msgID uint16, data []byte)) {
+       a.callback = cb
+}
+
+// MockReply stores a message to be returned when the next request comes. It is a FIFO queue - multiple replies
+// can be pushed into it, the first one will be popped when some request comes.
+//
+// It is able to also receive callback that calculates the reply
+func (a *VppAdapter) MockReply(msg api.Message) {
+       repliesLock.Lock()
+       defer repliesLock.Unlock()
+
+       replies = append(replies, msg)
+       mode = useRepliesQueue
+}
+
+func (a *VppAdapter) MockReplyHandler(replyHandler ReplyHandler) {
+       repliesLock.Lock()
+       defer repliesLock.Unlock()
+
+       replyHandlers = append(replyHandlers, replyHandler)
+       mode = useReplyHandlers
+}
diff --git a/adapter/vppapiclient/empty_adapter.go b/adapter/vppapiclient/empty_adapter.go
new file mode 100644 (file)
index 0000000..2701c87
--- /dev/null
@@ -0,0 +1,52 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 windows darwin
+
+/*
+       This is just an empty adapter that does nothing. It builds only on Windows and OSX, where the real
+       VPP API client adapter does not build. Its sole purpose is to make the compiler happy on Windows and OSX.
+*/
+
+package vppapiclient
+
+import (
+       "gerrit.fd.io/r/govpp/adapter"
+)
+
+type vppAPIClientAdapter struct{}
+
+func NewVppAdapter() adapter.VppAdapter {
+       return &vppAPIClientAdapter{}
+}
+
+func (a *vppAPIClientAdapter) Connect() error {
+       return nil
+}
+
+func (a *vppAPIClientAdapter) Disconnect() {
+       // no op
+}
+
+func (a *vppAPIClientAdapter) GetMsgID(msgName string, msgCrc string) (uint16, error) {
+       return 0, nil
+}
+
+func (a *vppAPIClientAdapter) SendMsg(clientID uint32, data []byte) error {
+       return nil
+}
+
+func (a *vppAPIClientAdapter) SetMsgCallback(cb func(context uint32, msgID uint16, data []byte)) {
+       // no op
+}
diff --git a/adapter/vppapiclient/vppapiclient_adapter.go b/adapter/vppapiclient/vppapiclient_adapter.go
new file mode 100644 (file)
index 0000000..9340f58
--- /dev/null
@@ -0,0 +1,149 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 !windows,!darwin
+
+// Package vppapiclient is the default VPP adapter being used for the connection with VPP via shared memory.
+// It is based on the communication with the vppapiclient VPP library written in C via CGO.
+package vppapiclient
+
+/*
+#cgo CFLAGS: -DPNG_DEBUG=1
+#cgo LDFLAGS: -lvppapiclient
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <arpa/inet.h>
+#include <vpp-api/client/vppapiclient.h>
+
+extern void go_msg_callback(uint16_t, uint32_t, void*, size_t);
+
+typedef struct __attribute__((__packed__)) _req_header {
+    uint16_t msg_id;
+    uint32_t client_index;
+    uint32_t context;
+} req_header_t;
+
+typedef struct __attribute__((__packed__)) _reply_header {
+    uint16_t msg_id;
+    uint32_t context;
+} reply_header_t;
+
+static void
+govpp_msg_callback (unsigned char *data, int size)
+{
+    reply_header_t *header = ((reply_header_t *)data);
+    go_msg_callback(ntohs(header->msg_id), ntohl(header->context), data, size);
+}
+
+static int
+govpp_connect()
+{
+    return vac_connect("govpp", NULL, govpp_msg_callback, 32);
+}
+
+static int
+govvp_disconnect()
+{
+    return vac_disconnect();
+}
+
+static int
+govpp_send(uint32_t context, void *data, size_t size)
+{
+       req_header_t *header = ((req_header_t *)data);
+       header->context = htonl(context);
+    return vac_write(data, size);
+}
+
+static uint32_t
+govpp_get_msg_index(char *name_and_crc)
+{
+    return vac_get_msg_index(name_and_crc);
+}
+*/
+import "C"
+
+import (
+       "errors"
+       "fmt"
+       "reflect"
+       "unsafe"
+
+       "gerrit.fd.io/r/govpp/adapter"
+)
+
+// vppAPIClientAdapter is the opaque context of the adapter.
+type vppAPIClientAdapter struct {
+       callback func(context uint32, msgId uint16, data []byte)
+}
+
+var vppClient *vppAPIClientAdapter // global vpp API client adapter context
+
+// NewVppAdapter returns a new vpp API client adapter.
+func NewVppAdapter() adapter.VppAdapter {
+       return &vppAPIClientAdapter{}
+}
+
+// Connect connects the process to VPP.
+func (a *vppAPIClientAdapter) Connect() error {
+       vppClient = a
+       rc := C.govpp_connect()
+       if rc != 0 {
+               return fmt.Errorf("unable to connect to VPP (error=%d)", rc)
+       }
+       return nil
+}
+
+// Disconnect disconnects the process from VPP.
+func (a *vppAPIClientAdapter) Disconnect() {
+       C.govvp_disconnect()
+}
+
+// GetMsgID returns a runtime message ID for the given message name and CRC.
+func (a *vppAPIClientAdapter) GetMsgID(msgName string, msgCrc string) (uint16, error) {
+       nameAndCrc := C.CString(fmt.Sprintf("%s_%s", msgName, msgCrc))
+       defer C.free(unsafe.Pointer(nameAndCrc))
+
+       msgID := uint16(C.govpp_get_msg_index(nameAndCrc))
+       if msgID == ^uint16(0) {
+               return msgID, errors.New("unkonwn message")
+       }
+
+       return msgID, nil
+}
+
+// SendMsg sends a binary-encoded message to VPP.
+func (a *vppAPIClientAdapter) SendMsg(clientID uint32, data []byte) error {
+       rc := C.govpp_send(C.uint32_t(clientID), unsafe.Pointer(&data[0]), C.size_t(len(data)))
+       if rc != 0 {
+               return fmt.Errorf("unable to send the message (error=%d)", rc)
+       }
+       return nil
+}
+
+// SetMsgCallback sets a callback function that will be called by the adapter whenever a message comes from VPP.
+func (a *vppAPIClientAdapter) SetMsgCallback(cb func(context uint32, msgID uint16, data []byte)) {
+       a.callback = cb
+}
+
+//export go_msg_callback
+func go_msg_callback(msgID C.uint16_t, context C.uint32_t, data unsafe.Pointer, size C.size_t) {
+       // convert unsafe.Pointer to byte slice
+       slice := &reflect.SliceHeader{Data: uintptr(data), Len: int(size), Cap: int(size)}
+       byteArr := *(*[]byte)(unsafe.Pointer(slice))
+
+       vppClient.callback(uint32(context), uint16(msgID), byteArr)
+}
diff --git a/api/api.go b/api/api.go
new file mode 100644 (file)
index 0000000..783f97a
--- /dev/null
@@ -0,0 +1,280 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 api
+
+import (
+       "errors"
+       "fmt"
+       "time"
+)
+
+// MessageType represents the type of a VPP message.
+type MessageType int
+
+const (
+       // RequestMessage represents a VPP request message
+       RequestMessage MessageType = iota
+       // ReplyMessage represents a VPP reply message
+       ReplyMessage
+       // OtherMessage represents other VPP message (e.g. counters)
+       OtherMessage
+)
+
+// Message is an interface that is implemented by all VPP Binary API messages generated by the binapi_generator.
+type Message interface {
+       // GetMessageName returns the original VPP name of the message, as defined in the VPP API.
+       GetMessageName() string
+
+       // GetMessageType returns the type of the VPP message.
+       GetMessageType() MessageType
+
+       // GetCrcString returns the string with CRC checksum of the message definition (the string represents a hexadecimal number).
+       GetCrcString() string
+}
+
+// DataType is an interface that is implemented by all VPP Binary API data types by the binapi_generator.
+type DataType interface {
+       // GetTypeName returns the original VPP name of the data type, as defined in the VPP API.
+       GetTypeName() string
+
+       // GetCrcString returns the string with CRC checksum of the data type definition (the string represents a hexadecimal number).
+       GetCrcString() string
+}
+
+// ChannelProvider provides the communication channel with govpp core.
+type ChannelProvider interface {
+       // NewAPIChannel returns a new channel for communication with VPP via govpp core.
+       // It uses default buffer sizes for the request and reply Go channels.
+       NewAPIChannel() (*Channel, error)
+
+       // NewAPIChannel returns a new channel for communication with VPP via govpp core.
+       // It allows to specify custom buffer sizes for the request and reply Go channels.
+       NewAPIChannelBuffered() (*Channel, error)
+}
+
+// MessageDecoder provides functionality for decoding binary data to generated API messages.
+type MessageDecoder interface {
+       // DecodeMsg decodes binary-encoded data of a message into provided Message structure.
+       DecodeMsg(data []byte, msg Message) error
+}
+
+// MessageIdentifier provides identification of generated API messages.
+type MessageIdentifier interface {
+       // GetMessageID returns message identifier of given API message.
+       GetMessageID(msg Message) (uint16, error)
+}
+
+// Channel is the main communication interface with govpp core. It contains two Go channels, one for sending the requests
+// to VPP and one for receiving the replies from it. The user can access the Go channels directly, or use the helper
+// methods  provided inside of this package.
+type Channel struct {
+       ReqChan   chan *VppRequest // channel for sending the requests to VPP, closing this channel releases all resources in the ChannelProvider
+       ReplyChan chan *VppReply   // channel where VPP replies are delivered to
+
+       NotifSubsChan      chan *NotifSubscribeRequest // channel for sending notification subscribe requests
+       NotifSubsReplyChan chan error                  // channel where replies to notification subscribe requests are delivered to
+
+       MsgDecoder    MessageDecoder    // used to decode binary data to generated API messages
+       MsgIdentifier MessageIdentifier // used to retrieve message ID of a message
+
+       replyTimeout time.Duration // maximum time that the API waits for a reply from VPP before returning an error, can be set with SetReplyTimeout
+       metadata     interface{}   // opaque metadata of the API channel
+}
+
+// VppRequest is a request that will be sent to VPP.
+type VppRequest struct {
+       Message   Message // binary API message to be send to VPP
+       Multipart bool    // true if multipart response is expected, false otherwise
+}
+
+// VppReply is a reply received from VPP.
+type VppReply struct {
+       MessageID         uint16 // ID of the message
+       Data              []byte // encoded data with the message - MessageDecoder can be used for decoding
+       LastReplyReceived bool   // in case of multipart replies, true if the last reply has been already received and this one should be ignored
+       Error             error  // in case of error, data is nil and this member contains error description
+}
+
+// NotifSubscribeRequest is a request to subscribe for delivery of specific notification messages.
+type NotifSubscribeRequest struct {
+       Subscription *NotifSubscription // subscription details
+       Subscribe    bool               // true if this is a request to subscribe, false if unsubscribe
+}
+
+// NotifSubscription represents a subscription for delivery of specific notification messages.
+type NotifSubscription struct {
+       NotifChan  chan Message   // channel where notification messages will be delivered to
+       MsgFactory func() Message // function that returns a new instance of the specific message that is expected as a notification
+}
+
+// RequestCtx is a context of a ongoing request (simple one - only one response is expected).
+type RequestCtx struct {
+       ch *Channel
+}
+
+// MultiRequestCtx is a context of a ongoing multipart request (multiple responses are expected).
+type MultiRequestCtx struct {
+       ch *Channel
+}
+
+const defaultReplyTimeout = time.Second * 1 // default timeout for replies from VPP, can be changed with SetReplyTimeout
+
+// NewChannelInternal returns a new channel structure with metadata field filled in with the provided argument.
+// Note that this is just a raw channel not yet connected to VPP, it is not intended to be used directly.
+// Use ChannelProvider to get an API channel ready for communication with VPP.
+func NewChannelInternal(metadata interface{}) *Channel {
+       return &Channel{
+               replyTimeout: defaultReplyTimeout,
+               metadata:     metadata,
+       }
+}
+
+// Metadata returns the metadata stored within the channel structure by the NewChannelInternal call.
+func (ch *Channel) Metadata() interface{} {
+       return ch.metadata
+}
+
+// SetReplyTimeout sets the timeout for replies from VPP. It represents the maximum time the API waits for a reply
+// from VPP before returning an error.
+func (ch *Channel) SetReplyTimeout(timeout time.Duration) {
+       ch.replyTimeout = timeout
+}
+
+// Close closes the API channel and releases all API channel-related resources in the ChannelProvider.
+func (ch *Channel) Close() {
+       if ch.ReqChan != nil {
+               close(ch.ReqChan)
+       }
+}
+
+// SendRequest asynchronously sends a request to VPP. Returns a request context, that can be used to call ReceiveReply.
+// In case of any errors by sending, the error will be delivered to ReplyChan (and returned by ReceiveReply).
+func (ch *Channel) SendRequest(msg Message) *RequestCtx {
+       ch.ReqChan <- &VppRequest{
+               Message: msg,
+       }
+       return &RequestCtx{ch: ch}
+}
+
+// ReceiveReply receives a reply from VPP (blocks until a reply is delivered from VPP, or until an error occurs).
+// The reply will be decoded into the msg argument. Error will be returned if the response cannot be received or decoded.
+func (req *RequestCtx) ReceiveReply(msg Message) error {
+       if req == nil || req.ch == nil {
+               return errors.New("invalid request context")
+       }
+
+       lastReplyReceived, err := req.ch.receiveReplyInternal(msg)
+
+       if lastReplyReceived {
+               err = errors.New("multipart reply recieved while a simple reply expected")
+       }
+       return err
+}
+
+// SendMultiRequest asynchronously sends a multipart request (request to which multiple responses are expected) to VPP.
+// Returns a multipart request context, that can be used to call ReceiveReply.
+// In case of any errors by sending, the error will be delivered to ReplyChan (and returned by ReceiveReply).
+func (ch *Channel) SendMultiRequest(msg Message) *MultiRequestCtx {
+       ch.ReqChan <- &VppRequest{
+               Message:   msg,
+               Multipart: true,
+       }
+       return &MultiRequestCtx{ch: ch}
+}
+
+// ReceiveReply receives a reply from VPP (blocks until a reply is delivered from VPP, or until an error occurs).
+// The reply will be decoded into the msg argument. If the last reply has been already consumed, LastReplyReceived is
+// set to true. Do not use the message itself if LastReplyReceived is true - it won't be filled with actual data.
+// Error will be returned if the response cannot be received or decoded.
+func (req *MultiRequestCtx) ReceiveReply(msg Message) (LastReplyReceived bool, err error) {
+       if req == nil || req.ch == nil {
+               return false, errors.New("invalid request context")
+       }
+
+       return req.ch.receiveReplyInternal(msg)
+}
+
+// receiveReplyInternal receives a reply from the reply channel into the provided msg structure.
+func (ch *Channel) receiveReplyInternal(msg Message) (LastReplyReceived bool, err error) {
+       if msg == nil {
+               return false, errors.New("nil message passed in")
+       }
+       select {
+       // blocks until a reply comes to ReplyChan or until timeout expires
+       case vppReply := <-ch.ReplyChan:
+               if vppReply.Error != nil {
+                       err = vppReply.Error
+                       return
+               }
+               if vppReply.LastReplyReceived {
+                       LastReplyReceived = true
+                       return
+               }
+               // message checks
+               expMsgID, err := ch.MsgIdentifier.GetMessageID(msg)
+               if err != nil {
+                       err = fmt.Errorf("message %s with CRC %s is not compatible with the VPP we are connected to",
+                               msg.GetMessageName(), msg.GetCrcString())
+                       return false, err
+               }
+               if vppReply.MessageID != expMsgID {
+                       err = fmt.Errorf("invalid message ID %d, expected %d", vppReply.MessageID, expMsgID)
+                       return false, err
+               }
+               // decode the message
+               err = ch.MsgDecoder.DecodeMsg(vppReply.Data, msg)
+
+       case <-time.After(ch.replyTimeout):
+               err = fmt.Errorf("no reply received within the timeout period %ds", ch.replyTimeout/time.Second)
+       }
+       return
+}
+
+// SubscribeNotification subscribes for receiving of the specified notification messages via provided Go channel.
+// Note that the caller is responsible for creating the Go channel with preferred buffer size. If the channel's
+// buffer is full, the notifications will not be delivered into it.
+func (ch *Channel) SubscribeNotification(notifChan chan Message, msgFactory func() Message) (*NotifSubscription, error) {
+       subscription := &NotifSubscription{
+               NotifChan:  notifChan,
+               MsgFactory: msgFactory,
+       }
+       ch.NotifSubsChan <- &NotifSubscribeRequest{
+               Subscription: subscription,
+               Subscribe:    true,
+       }
+       return subscription, <-ch.NotifSubsReplyChan
+}
+
+// UnsubscribeNotification unsubscribes from receiving the notifications tied to the provided notification subscription.
+func (ch *Channel) UnsubscribeNotification(subscription *NotifSubscription) error {
+       ch.NotifSubsChan <- &NotifSubscribeRequest{
+               Subscription: subscription,
+               Subscribe:    false,
+       }
+       return <-ch.NotifSubsReplyChan
+}
+
+// CheckMessageCompatibility checks whether provided messages are compatible with the version of VPP
+// which the library is connected to.
+func (ch *Channel) CheckMessageCompatibility(messages ...Message) error {
+       for _, msg := range messages {
+               _, err := ch.MsgIdentifier.GetMessageID(msg)
+               if err != nil {
+                       return fmt.Errorf("message %s with CRC %s is not compatible with the VPP we are connected to",
+                               msg.GetMessageName(), msg.GetCrcString())
+               }
+       }
+       return nil
+}
diff --git a/api/api_test.go b/api/api_test.go
new file mode 100644 (file)
index 0000000..15d706d
--- /dev/null
@@ -0,0 +1,322 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 api_test
+
+import (
+       "testing"
+       "time"
+
+       "gerrit.fd.io/r/govpp"
+       "gerrit.fd.io/r/govpp/adapter/mock"
+       "gerrit.fd.io/r/govpp/api"
+       "gerrit.fd.io/r/govpp/core"
+       "gerrit.fd.io/r/govpp/core/bin_api/vpe"
+       "gerrit.fd.io/r/govpp/examples/bin_api/interfaces"
+       "gerrit.fd.io/r/govpp/examples/bin_api/memif"
+       "gerrit.fd.io/r/govpp/examples/bin_api/tap"
+
+       . "github.com/onsi/gomega"
+)
+
+type testCtx struct {
+       mockVpp *mock.VppAdapter
+       conn    *core.Connection
+       ch      *api.Channel
+}
+
+func setupTest(t *testing.T) *testCtx {
+       RegisterTestingT(t)
+
+       ctx := &testCtx{}
+       ctx.mockVpp = &mock.VppAdapter{}
+       govpp.SetAdapter(ctx.mockVpp)
+
+       var err error
+       ctx.conn, err = govpp.Connect()
+       Expect(err).ShouldNot(HaveOccurred())
+
+       ctx.ch, err = ctx.conn.NewAPIChannel()
+       Expect(err).ShouldNot(HaveOccurred())
+
+       return ctx
+}
+
+func (ctx *testCtx) teardownTest() {
+       ctx.ch.Close()
+       ctx.conn.Disconnect()
+}
+
+func TestRequestReplyTapConnect(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       ctx.mockVpp.MockReply(&tap.TapConnectReply{
+               Retval:    10,
+               SwIfIndex: 1,
+       })
+       request := &tap.TapConnect{
+               TapName:      []byte("test-tap-name"),
+               UseRandomMac: 1,
+       }
+       reply := &tap.TapConnectReply{}
+
+       err := ctx.ch.SendRequest(request).ReceiveReply(reply)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(reply.Retval).To(BeEquivalentTo(10), "Incorrect retval value for TapConnectReply")
+       Expect(reply.SwIfIndex).To(BeEquivalentTo(1), "Incorrect SwIfIndex value for TapConnectReply")
+}
+
+func TestRequestReplyTapModify(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       ctx.mockVpp.MockReply(&tap.TapModifyReply{
+               Retval:    15,
+               SwIfIndex: 2,
+       })
+       request := &tap.TapModify{
+               TapName:           []byte("test-tap-modify"),
+               UseRandomMac:      1,
+               CustomDevInstance: 1,
+       }
+       reply := &tap.TapModifyReply{}
+
+       err := ctx.ch.SendRequest(request).ReceiveReply(reply)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(reply.Retval).To(BeEquivalentTo(15), "Incorrect retval value for TapModifyReply")
+       Expect(reply.SwIfIndex).To(BeEquivalentTo(2), "Incorrect SwIfIndex value for TapModifyReply")
+}
+
+func TestRequestReplyTapDelete(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       ctx.mockVpp.MockReply(&tap.TapDeleteReply{
+               Retval: 20,
+       })
+       request := &tap.TapDelete{
+               SwIfIndex: 3,
+       }
+       reply := &tap.TapDeleteReply{}
+
+       err := ctx.ch.SendRequest(request).ReceiveReply(reply)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(reply.Retval).To(BeEquivalentTo(20), "Incorrect retval value for TapDeleteReply")
+}
+
+func TestRequestReplySwInterfaceTapDump(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       byteName := []byte("dev-name-test")
+       ctx.mockVpp.MockReply(&tap.SwInterfaceTapDetails{
+               SwIfIndex: 25,
+               DevName:   byteName,
+       })
+       request := &tap.SwInterfaceTapDump{}
+       reply := &tap.SwInterfaceTapDetails{}
+
+       err := ctx.ch.SendRequest(request).ReceiveReply(reply)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(reply.SwIfIndex).To(BeEquivalentTo(25), "Incorrect SwIfIndex value for SwInterfaceTapDetails")
+       Expect(reply.DevName).ToNot(BeNil(), "Incorrect DevName value for SwInterfaceTapDetails")
+}
+
+func TestRequestReplyMemifCreate(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       ctx.mockVpp.MockReply(&memif.MemifCreateReply{
+               Retval:    22,
+               SwIfIndex: 4,
+       })
+       request := &memif.MemifCreate{
+               Role:       10,
+               Key:        12,
+               RingSize:   8000,
+               BufferSize: 50,
+       }
+       reply := &memif.MemifCreateReply{}
+
+       err := ctx.ch.SendRequest(request).ReceiveReply(reply)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(reply.Retval).To(BeEquivalentTo(22), "Incorrect Retval value for MemifCreate")
+       Expect(reply.SwIfIndex).To(BeEquivalentTo(4), "Incorrect SwIfIndex value for MemifCreate")
+}
+
+func TestRequestReplyMemifDelete(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       ctx.mockVpp.MockReply(&memif.MemifDeleteReply{
+               Retval: 24,
+       })
+       request := &memif.MemifDelete{
+               SwIfIndex: 15,
+       }
+       reply := &memif.MemifDeleteReply{}
+
+       err := ctx.ch.SendRequest(request).ReceiveReply(reply)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(reply.Retval).To(BeEquivalentTo(24), "Incorrect Retval value for MemifDelete")
+}
+
+func TestRequestReplyMemifDetails(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       ctx.mockVpp.MockReply(&memif.MemifDetails{
+               SwIfIndex: 25,
+               IfName:    []byte("memif-name"),
+               Role:      0,
+       })
+       request := &memif.MemifDump{}
+       reply := &memif.MemifDetails{}
+
+       err := ctx.ch.SendRequest(request).ReceiveReply(reply)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(reply.SwIfIndex).To(BeEquivalentTo(25), "Incorrect SwIfIndex value for MemifDetails")
+       Expect(reply.IfName).ToNot(BeEmpty(), "MemifDetails IfName is empty byte array")
+       Expect(reply.Role).To(BeEquivalentTo(0), "Incorrect Role value for MemifDetails")
+}
+
+func TestMultiRequestReplySwInterfaceTapDump(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       // mock reply
+       for i := 1; i <= 10; i++ {
+               byteName := []byte("dev-name-test")
+               ctx.mockVpp.MockReply(&tap.SwInterfaceTapDetails{
+                       SwIfIndex: uint32(i),
+                       DevName:   byteName,
+               })
+       }
+       ctx.mockVpp.MockReply(&vpe.ControlPingReply{})
+
+       reqCtx := ctx.ch.SendMultiRequest(&tap.SwInterfaceTapDump{})
+       cnt := 0
+       for {
+               msg := &tap.SwInterfaceTapDetails{}
+               stop, err := reqCtx.ReceiveReply(msg)
+               if stop {
+                       break // break out of the loop
+               }
+               Expect(err).ShouldNot(HaveOccurred())
+               cnt++
+       }
+       Expect(cnt).To(BeEquivalentTo(10))
+}
+
+func TestMultiRequestReplySwInterfaceMemifDump(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       // mock reply
+       for i := 1; i <= 10; i++ {
+               ctx.mockVpp.MockReply(&memif.MemifDetails{
+                       SwIfIndex: uint32(i),
+               })
+       }
+       ctx.mockVpp.MockReply(&vpe.ControlPingReply{})
+
+       reqCtx := ctx.ch.SendMultiRequest(&memif.MemifDump{})
+       cnt := 0
+       for {
+               msg := &memif.MemifDetails{}
+               stop, err := reqCtx.ReceiveReply(msg)
+               if stop {
+                       break // break out of the loop
+               }
+               Expect(err).ShouldNot(HaveOccurred())
+               cnt++
+       }
+       Expect(cnt).To(BeEquivalentTo(10))
+}
+
+func TestNotifications(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       // subscribe for notification
+       notifChan := make(chan api.Message, 1)
+       subs, err := ctx.ch.SubscribeNotification(notifChan, interfaces.NewSwInterfaceSetFlags)
+       Expect(err).ShouldNot(HaveOccurred())
+
+       // mock the notification and force its delivery
+       ctx.mockVpp.MockReply(&interfaces.SwInterfaceSetFlags{
+               SwIfIndex:   3,
+               AdminUpDown: 1,
+       })
+       ctx.mockVpp.SendMsg(0, []byte(""))
+
+       // receive the notification
+       notif := (<-notifChan).(*interfaces.SwInterfaceSetFlags)
+
+       // verify the received notifications
+       Expect(notif).ShouldNot(BeNil())
+       Expect(notif.SwIfIndex).To(BeEquivalentTo(3), "Incorrect SwIfIndex value for SwInterfaceSetFlags")
+       Expect(notif.AdminUpDown).To(BeEquivalentTo(1), "Incorrect AdminUpDown value for SwInterfaceSetFlags")
+
+       ctx.ch.UnsubscribeNotification(subs)
+}
+
+func TestCheckMessageCompatibility(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       err := ctx.ch.CheckMessageCompatibility(&interfaces.SwInterfaceSetFlags{})
+       Expect(err).ShouldNot(HaveOccurred())
+}
+
+func TestSetReplyTimeout(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       ctx.ch.SetReplyTimeout(time.Millisecond)
+
+       // first one request should work
+       ctx.mockVpp.MockReply(&vpe.ControlPingReply{})
+       err := ctx.ch.SendRequest(&vpe.ControlPing{}).ReceiveReply(&vpe.ControlPingReply{})
+       Expect(err).ShouldNot(HaveOccurred())
+
+       // no other reply ready - expect timeout
+       err = ctx.ch.SendRequest(&vpe.ControlPing{}).ReceiveReply(&vpe.ControlPingReply{})
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("timeout"))
+}
+
+func TestReceiveReplyNegative(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       // invalid context 1
+       reqCtx1 := &api.RequestCtx{}
+       err := reqCtx1.ReceiveReply(&vpe.ControlPingReply{})
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("invalid request context"))
+
+       // invalid context 2
+       reqCtx2 := &api.MultiRequestCtx{}
+       _, err = reqCtx2.ReceiveReply(&vpe.ControlPingReply{})
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("invalid request context"))
+
+       // NU
+       reqCtx3 := &api.RequestCtx{}
+       err = reqCtx3.ReceiveReply(nil)
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("invalid request context"))
+}
diff --git a/api/doc.go b/api/doc.go
new file mode 100644 (file)
index 0000000..e1abffe
--- /dev/null
@@ -0,0 +1,94 @@
+// Package api provides API for communication with govpp core using Go channels,
+// without the need of importing the govpp core package itself.
+//
+// The API offers two ways of communication with govpp core: using Go channels, or using convenient function
+// wrappers over the Go channels. The latter should be sufficient for most of the use cases.
+//
+// The entry point to the API is the Channel structure, that can be obtained from the existing connection using
+// the NewAPIChannel or NewAPIChannelBuffered functions:
+//
+//     conn, err := govpp.Connect()
+//     if err != nil {
+//             // handle error!
+//     }
+//     defer conn.Disconnect()
+//
+//     ch, err := conn.NewAPIChannel()
+//     if err != nil {
+//             // handle error!
+//     }
+//     defer ch.Close()
+//
+//
+// Simple Request-Reply API
+//
+// The simple version of the API is based on blocking SendRequest / ReceiveReply calls, where a single request
+// message is sent  to VPP and a single reply message is filled in when the reply comes from VPP:
+//
+//     req := &acl.ACLPluginGetVersion{}
+//     reply := &acl.ACLPluginGetVersionReply{}
+//
+//     err := ch.SendRequest(req).ReceiveReply(reply)
+//     // process the reply
+//
+// Note that if the reply message type that comes from VPP does not match with provided one, you'll get an error.
+//
+//
+// Multipart Reply API
+//
+// If multiple messages are expected as a reply to a request, SendMultiRequest API must be used:
+//
+//     req := &interfaces.SwInterfaceDump{}
+//     reqCtx := ch.SendMultiRequest(req)
+//
+//     for {
+//             reply := &interfaces.SwInterfaceDetails{}
+//             stop, err := reqCtx.ReceiveReply(reply)
+//             if stop {
+//                     break // break out of the loop
+//             }
+//             // process the reply
+//     }
+//
+// Note that if the last reply has been already consumed, stop boolean return value is set to true.
+// Do not use the message itself if stop is true - it won't be filled with actual data.
+//
+//
+// Go Channels API
+//
+// The blocking API introduced above may be not sufficient for some management applications that strongly
+// rely on usage of Go channels. In this case, the API allows to access the underlying Go channels directly, e.g.
+// the following replacement of the SendRequest / ReceiveReply API:
+//
+//     req := &acl.ACLPluginGetVersion{}
+//     // send the request to the request go channel
+//     ch.ReqChan <- &api.VppRequest{Message: req}
+//
+//     // receive a reply from the reply go channel
+//     vppReply := <-ch.ReplyChan
+//
+//     // decode the message
+//     reply := &acl.ACLPluginGetVersionReply{}
+//     err := ch.MsgDecoder.DecodeMsg(vppReply.Data, reply)
+//
+//     // process the reply
+//
+//
+// Notifications API
+//
+// to subscribe for receiving of the specified notification messages via provided Go channel, use the
+// SubscribeNotification API:
+//
+//     // subscribe for specific notification message
+//     notifChan := make(chan api.Message, 100)
+//     subs, _ := ch.SubscribeNotification(notifChan, interfaces.NewSwInterfaceSetFlags)
+//
+//     // receive one notification
+//     notif := (<-notifChan).(*interfaces.SwInterfaceSetFlags)
+//
+//     ch.UnsubscribeNotification(subs)
+//
+// Note that the caller is responsible for creating the Go channel with preferred buffer size. If the channel's
+// buffer is full, the notifications will not be delivered into it.
+//
+package api
diff --git a/api/ifcounters/doc.go b/api/ifcounters/doc.go
new file mode 100644 (file)
index 0000000..c918941
--- /dev/null
@@ -0,0 +1,4 @@
+// Package ifcounters provides the helper API for decoding VnetInterfaceCounters binary API message
+// that contains binary-encoded statistics data into the Go structs that are better consumable by the Go code.
+// TODO: example usage - currently in the example_client.go
+package ifcounters
diff --git a/api/ifcounters/ifcounters.go b/api/ifcounters/ifcounters.go
new file mode 100644 (file)
index 0000000..202fe6e
--- /dev/null
@@ -0,0 +1,147 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 ifcounters
+
+import (
+       "bytes"
+       "errors"
+       "fmt"
+
+       "github.com/lunixbochs/struc"
+)
+
+// VnetInterfaceCounters is the input data type defined in the 'interface.api', with binary encoded Data field,
+// that can be decoded into the InterfaceCounter or CombinedInterfaceCounter struct using this package.
+type VnetInterfaceCounters struct {
+       VnetCounterType uint8
+       IsCombined      uint8
+       FirstSwIfIndex  uint32
+       Count           uint32 `struc:"sizeof=Data"`
+       Data            []byte
+}
+
+// CounterType is the basic counter type - contains only packet statistics.
+type CounterType int
+
+// constants as defined in the vnet_interface_counter_type_t enum in 'vnet/interface.h'
+const (
+       Drop    CounterType = 0
+       Punt                = 1
+       IPv4                = 2
+       IPv6                = 3
+       RxNoBuf             = 4
+       RxMiss              = 5
+       RxError             = 6
+       TxError             = 7
+       MPLS                = 8
+)
+
+// CombinedCounterType is the extended counter type - contains both packet and byte statistics.
+type CombinedCounterType int
+
+// constants as defined in the vnet_interface_counter_type_t enum in 'vnet/interface.h'
+const (
+       Rx CombinedCounterType = 0
+       Tx                     = 1
+)
+
+// InterfaceCounter contains basic counter data (contains only packet statistics).
+type InterfaceCounter struct {
+       Type      CounterType
+       SwIfIndex uint32
+       Packets   uint64
+}
+
+// CombinedInterfaceCounter contains extended counter data (contains both packet and byte statistics).
+type CombinedInterfaceCounter struct {
+       Type      CombinedCounterType
+       SwIfIndex uint32
+       Packets   uint64
+       Bytes     uint64
+}
+
+type counterData struct {
+       Packets uint64
+}
+
+type counter struct {
+       Count uint32 `struc:"sizeof=Data"`
+       Data  []counterData
+}
+
+type combinedCounterData struct {
+       Packets uint64
+       Bytes   uint64
+}
+
+type combinedCounter struct {
+       Count uint32 `struc:"sizeof=Data"`
+       Data  []combinedCounterData
+}
+
+// DecodeCounters decodes VnetInterfaceCounters struct content into the slice of InterfaceCounter structs.
+func DecodeCounters(vnetCounters VnetInterfaceCounters) ([]InterfaceCounter, error) {
+       if vnetCounters.IsCombined == 1 {
+               return nil, errors.New("invalid argument - combined counter passed in")
+       }
+
+       // decode into internal struct
+       var c counter
+       buf := bytes.NewReader(vnetCounters.Data)
+       err := struc.Unpack(buf, &c)
+       if err != nil {
+               return nil, fmt.Errorf("unable to decode counter data: %v", err)
+       }
+
+       // prepare the slice
+       res := make([]InterfaceCounter, c.Count)
+
+       // fill in the slice
+       for i := uint32(0); i < c.Count; i++ {
+               res[i].Type = CounterType(vnetCounters.VnetCounterType)
+               res[i].SwIfIndex = vnetCounters.FirstSwIfIndex + i
+               res[i].Packets = c.Data[i].Packets
+       }
+
+       return res, nil
+}
+
+// DecodeCombinedCounters decodes VnetInterfaceCounters struct content into the slice of CombinedInterfaceCounter structs.
+func DecodeCombinedCounters(vnetCounters VnetInterfaceCounters) ([]CombinedInterfaceCounter, error) {
+       if vnetCounters.IsCombined != 1 {
+               return nil, errors.New("invalid argument - simple counter passed in")
+       }
+
+       // decode into internal struct
+       var c combinedCounter
+       buf := bytes.NewReader(vnetCounters.Data)
+       err := struc.Unpack(buf, &c)
+       if err != nil {
+               return nil, fmt.Errorf("unable to decode counter data: %v", err)
+       }
+
+       // prepare the slice
+       res := make([]CombinedInterfaceCounter, c.Count)
+
+       // fill in the slice
+       for i := uint32(0); i < c.Count; i++ {
+               res[i].Type = CombinedCounterType(vnetCounters.VnetCounterType)
+               res[i].SwIfIndex = vnetCounters.FirstSwIfIndex + i
+               res[i].Packets = c.Data[i].Packets
+               res[i].Bytes = c.Data[i].Bytes
+       }
+
+       return res, nil
+}
diff --git a/api/ifcounters/ifcounters_test.go b/api/ifcounters/ifcounters_test.go
new file mode 100644 (file)
index 0000000..6f9a1d9
--- /dev/null
@@ -0,0 +1,129 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 ifcounters
+
+import (
+       "testing"
+
+       . "github.com/onsi/gomega"
+)
+
+func TestDecodeCounters(t *testing.T) {
+       RegisterTestingT(t)
+
+       testCounters := VnetInterfaceCounters{
+               VnetCounterType: 1,
+               IsCombined:      0,
+               FirstSwIfIndex:  5,
+               Count:           2,
+               Data: []byte{0, 0, 0, 2, // Count
+                       0, 0, 0, 0, 0, 0, 0, 10, // first counter
+                       0, 0, 0, 0, 0, 0, 0, 11}, // second counter
+       }
+       counters, err := DecodeCounters(testCounters)
+
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(len(counters)).To(BeEquivalentTo(2), "Incorrect size of the returned slice.")
+
+       Expect(counters[0].Type).To(BeEquivalentTo(1), "Incorrect counter type.")
+       Expect(counters[0].SwIfIndex).To(BeEquivalentTo(5), "Incorrect SwIfIndex.")
+       Expect(counters[0].Packets).To(BeEquivalentTo(10), "Incorrect Packets count.")
+
+       Expect(counters[1].Type).To(BeEquivalentTo(1), "Incorrect counter type.")
+       Expect(counters[1].SwIfIndex).To(BeEquivalentTo(6), "Incorrect SwIfIndex.")
+       Expect(counters[1].Packets).To(BeEquivalentTo(11), "Incorrect Packets count.")
+}
+
+func TestDecodeCombinedCounters(t *testing.T) {
+       RegisterTestingT(t)
+
+       testCounters := VnetInterfaceCounters{
+               VnetCounterType: 1,
+               IsCombined:      1,
+               FirstSwIfIndex:  20,
+               Count:           2,
+               Data: []byte{0, 0, 0, 2, // Count
+                       0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 11, // first counter
+                       0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 13}, // second counter
+       }
+       counters, err := DecodeCombinedCounters(testCounters)
+
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(len(counters)).To(BeEquivalentTo(2), "Incorrect size of the returned slice.")
+
+       Expect(counters[0].Type).To(BeEquivalentTo(1), "Incorrect counter type.")
+       Expect(counters[0].SwIfIndex).To(BeEquivalentTo(20), "Incorrect SwIfIndex.")
+       Expect(counters[0].Packets).To(BeEquivalentTo(10), "Incorrect Packets count.")
+       Expect(counters[0].Bytes).To(BeEquivalentTo(11), "Incorrect Bytes count.")
+
+       Expect(counters[1].Type).To(BeEquivalentTo(1), "Incorrect counter type.")
+       Expect(counters[1].SwIfIndex).To(BeEquivalentTo(21), "Incorrect SwIfIndex.")
+       Expect(counters[1].Packets).To(BeEquivalentTo(12), "Incorrect Packets count.")
+       Expect(counters[1].Bytes).To(BeEquivalentTo(13), "Incorrect Bytes count.")
+}
+
+func TestDecodeCountersNegative1(t *testing.T) {
+       RegisterTestingT(t)
+
+       testCounters := VnetInterfaceCounters{
+               IsCombined: 1, // invalid, should be 0
+       }
+       counters, err := DecodeCounters(testCounters)
+
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("invalid argument"))
+       Expect(counters).To(BeNil())
+}
+
+func TestDecodeCombinedCountersNegative1(t *testing.T) {
+       RegisterTestingT(t)
+
+       testCounters := VnetInterfaceCounters{
+               IsCombined: 0, // invalid, should be 1
+       }
+       counters, err := DecodeCombinedCounters(testCounters)
+
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("invalid argument"))
+       Expect(counters).To(BeNil())
+}
+
+func TestDecodeCountersNegative2(t *testing.T) {
+       RegisterTestingT(t)
+
+       testCounters := VnetInterfaceCounters{
+               IsCombined: 0,
+               // no data
+       }
+       counters, err := DecodeCounters(testCounters)
+
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("unable to decode"))
+       Expect(counters).To(BeNil())
+}
+
+func TestDecodeCombinedCountersNegative2(t *testing.T) {
+       RegisterTestingT(t)
+
+       testCounters := VnetInterfaceCounters{
+               IsCombined: 1,
+               // no data
+       }
+       counters, err := DecodeCombinedCounters(testCounters)
+
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("unable to decode"))
+       Expect(counters).To(BeNil())
+}
diff --git a/binapi_generator/doc.go b/binapi_generator/doc.go
new file mode 100644 (file)
index 0000000..84a971b
--- /dev/null
@@ -0,0 +1,13 @@
+// Generator of Go structs out of the VPP binary API definitions in JSON format.
+//
+// The JSON input can be specified as a single file (using the `input-file`
+// CLI flag), or as a directory that will be scanned for all `.json` files
+// (using the `input-dir` CLI flag). The generated Go bindings will  be
+// placed into `output-dir` (by default the current working directory),
+// where each Go package will be placed into its own separate directory,
+// for example:
+//
+//    binapi_generator --input-file=examples/bin_api/acl.api.json --output-dir=examples/bin_api
+//    binapi_generator --input-dir=examples/bin_api --output-dir=examples/bin_api
+//
+package main
diff --git a/binapi_generator/generator.go b/binapi_generator/generator.go
new file mode 100644 (file)
index 0000000..0a66b37
--- /dev/null
@@ -0,0 +1,627 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 main
+
+import (
+       "bufio"
+       "bytes"
+       "encoding/json"
+       "errors"
+       "flag"
+       "fmt"
+       "io"
+       "io/ioutil"
+       "os"
+       "os/exec"
+       "path/filepath"
+       "strings"
+       "time"
+       "unicode"
+
+       "github.com/bennyscetbun/jsongo"
+)
+
+// MessageType represents the type of a VPP message.
+type messageType int
+
+const (
+       requestMessage messageType = iota // VPP request message
+       replyMessage                      // VPP reply message
+       otherMessage                      // other VPP message
+)
+
+const (
+       apiImportPath = "gerrit.fd.io/r/govpp/api" // import path of the govpp API
+       inputFileExt  = ".json"                                               // filename extension of files that should be processed as the input
+)
+
+// context is a structure storing details of a particular code generation task
+type context struct {
+       inputFile   string            // file with input JSON data
+       inputBuff   *bytes.Buffer     // contents of the input file
+       inputLine   int               // currently processed line in the input file
+       outputFile  string            // file with output data
+       packageName string            // name of the Go package being generated
+       packageDir  string            // directory where the package source files are located
+       types       map[string]string // map of the VPP typedef names to generated Go typedef names
+}
+
+func main() {
+       inputFile := flag.String("input-file", "", "Input JSON file.")
+       inputDir := flag.String("input-dir", ".", "Input directory with JSON files.")
+       outputDir := flag.String("output-dir", ".", "Output directory where package folders will be generated.")
+       flag.Parse()
+
+       if *inputFile == "" && *inputDir == "" {
+               fmt.Fprintln(os.Stderr, "ERROR: input-file or input-dir must be specified")
+               os.Exit(1)
+       }
+
+       var err, tmpErr error
+       if *inputFile != "" {
+               // process one input file
+               err = generateFromFile(*inputFile, *outputDir)
+               if err != nil {
+                       fmt.Fprintf(os.Stderr, "ERROR: code generation from %s failed: %v\n", *inputFile, err)
+               }
+       } else {
+               // process all files in specified directory
+               files, err := getInputFiles(*inputDir)
+               if err != nil {
+                       fmt.Fprintf(os.Stderr, "ERROR: code generation failed: %v\n", err)
+               }
+               for _, file := range files {
+                       tmpErr = generateFromFile(file, *outputDir)
+                       if tmpErr != nil {
+                               fmt.Fprintf(os.Stderr, "ERROR: code generation from %s failed: %v\n", file, err)
+                               err = tmpErr // remember that the error occurred
+                       }
+               }
+       }
+       if err != nil {
+               os.Exit(1)
+       }
+}
+
+// getInputFiles returns all input files located in specified directory
+func getInputFiles(inputDir string) ([]string, error) {
+       files, err := ioutil.ReadDir(inputDir)
+       if err != nil {
+               return nil, fmt.Errorf("reading directory %s failed: %v", inputDir, err)
+       }
+       res := make([]string, 0)
+       for _, f := range files {
+               if strings.HasSuffix(f.Name(), inputFileExt) {
+                       res = append(res, inputDir+"/"+f.Name())
+               }
+       }
+       return res, nil
+}
+
+// generateFromFile generates Go bindings from one input JSON file
+func generateFromFile(inputFile, outputDir string) error {
+       ctx, err := getContext(inputFile, outputDir)
+       if err != nil {
+               return err
+       }
+       // read the file
+       inputData, err := readFile(inputFile)
+       if err != nil {
+               return err
+       }
+       ctx.inputBuff = bytes.NewBuffer(inputData)
+
+       // parse JSON
+       jsonRoot, err := parseJSON(inputData)
+       if err != nil {
+               return err
+       }
+
+       // create output directory
+       err = os.MkdirAll(ctx.packageDir, 0777)
+       if err != nil {
+               return fmt.Errorf("creating output directory %s failed: %v", ctx.packageDir, err)
+       }
+
+       // open output file
+       f, err := os.Create(ctx.outputFile)
+       defer f.Close()
+       if err != nil {
+               return fmt.Errorf("creating output file %s failed: %v", ctx.outputFile, err)
+       }
+       w := bufio.NewWriter(f)
+
+       // generate Go package code
+       err = generatePackage(ctx, w, jsonRoot)
+       if err != nil {
+               return err
+       }
+
+       // go format the output file (non-fatal if fails)
+       exec.Command("gofmt", "-w", ctx.outputFile).Run()
+
+       return nil
+}
+
+// getContext returns context details of the code generation task
+func getContext(inputFile, outputDir string) (*context, error) {
+       if !strings.HasSuffix(inputFile, inputFileExt) {
+               return nil, fmt.Errorf("invalid input file name %s", inputFile)
+       }
+
+       ctx := &context{inputFile: inputFile}
+       inputFileName := filepath.Base(inputFile)
+
+       ctx.packageName = inputFileName[0:strings.Index(inputFileName, ".")]
+       if ctx.packageName == "interface" {
+               // 'interface' cannot be a package name, it is a go keyword
+               ctx.packageName = "interfaces"
+       }
+
+       ctx.packageDir = outputDir + "/" + ctx.packageName + "/"
+       ctx.outputFile = ctx.packageDir + ctx.packageName + ".go"
+
+       return ctx, nil
+}
+
+// readFile reads content of a file into memory
+func readFile(inputFile string) ([]byte, error) {
+
+       inputData, err := ioutil.ReadFile(inputFile)
+
+       if err != nil {
+               return nil, fmt.Errorf("reading data from file failed: %v", err)
+       }
+
+       return inputData, nil
+}
+
+// parseJSON parses a JSON data into an in-memory tree
+func parseJSON(inputData []byte) (*jsongo.JSONNode, error) {
+       root := jsongo.JSONNode{}
+
+       err := json.Unmarshal(inputData, &root)
+       if err != nil {
+               return nil, fmt.Errorf("JSON unmarshall failed: %v", err)
+       }
+
+       return &root, nil
+
+}
+
+// generatePackage generates Go code of a package from provided JSON
+func generatePackage(ctx *context, w *bufio.Writer, jsonRoot *jsongo.JSONNode) error {
+       // generate file header
+       generatePackageHeader(ctx, w, jsonRoot)
+
+       // generate data types
+       ctx.types = make(map[string]string)
+       types := jsonRoot.Map("types")
+       for i := 0; i < types.Len(); i++ {
+               typ := types.At(i)
+               err := generateMessage(ctx, w, typ, true)
+               if err != nil {
+                       return err
+               }
+       }
+
+       // generate messages
+       messages := jsonRoot.Map("messages")
+       for i := 0; i < messages.Len(); i++ {
+               msg := messages.At(i)
+               err := generateMessage(ctx, w, msg, false)
+               if err != nil {
+                       return err
+               }
+       }
+
+       // flush the data:
+       err := w.Flush()
+       if err != nil {
+               return fmt.Errorf("flushing data to %s failed: %v", ctx.outputFile, err)
+       }
+
+       return nil
+}
+
+// generateMessage generates Go code of one VPP message encoded in JSON into provided writer
+func generateMessage(ctx *context, w io.Writer, msg *jsongo.JSONNode, isType bool) error {
+       if msg.Len() == 0 || msg.At(0).GetType() != jsongo.TypeValue {
+               return errors.New("invalid JSON for message specified")
+       }
+
+       msgName, ok := msg.At(0).Get().(string)
+       if !ok {
+               return fmt.Errorf("invalid JSON for message specified, message name is %T, not a string", msg.At(0).Get())
+       }
+       structName := camelCaseName(strings.Title(msgName))
+
+       // generate struct fields into the slice & determine message type
+       fields := make([]string, 0)
+       msgType := otherMessage
+       for j := 0; j < msg.Len(); j++ {
+               if jsongo.TypeArray == msg.At(j).GetType() {
+                       fld := msg.At(j)
+                       err := processMessageField(ctx, &fields, fld)
+                       if err != nil {
+                               return err
+                       }
+                       // determine whether ths is a request / reply / other message
+                       if j == 2 {
+                               fieldName, ok := fld.At(1).Get().(string)
+                               if ok {
+                                       if fieldName == "client_index" {
+                                               msgType = requestMessage
+                                       } else if fieldName == "context" {
+                                               msgType = replyMessage
+                                       } else {
+                                               msgType = otherMessage
+                                       }
+                               }
+                       }
+               }
+       }
+
+       // generate struct comment
+       generateMessageComment(ctx, w, structName, msgName, isType)
+
+       // generate struct header
+       fmt.Fprintln(w, "type", structName, "struct {")
+
+       // print out the fields
+       for _, field := range fields {
+               fmt.Fprintln(w, field)
+       }
+
+       // generate end of the struct
+       fmt.Fprintln(w, "}")
+
+       // generate name getter
+       if isType {
+               generateTypeNameGetter(w, structName, msgName)
+       } else {
+               generateMessageNameGetter(w, structName, msgName)
+       }
+
+       // generate message type getter method
+       if !isType {
+               generateMessageTypeGetter(w, structName, msgType)
+       }
+
+       // generate CRC getter
+       crcIf := msg.At(msg.Len() - 1).At("crc").Get()
+       if crc, ok := crcIf.(string); ok {
+               generateCrcGetter(w, structName, crc)
+       }
+
+       // generate message factory
+       if !isType {
+               generateMessageFactory(w, structName)
+       }
+
+       // if this is a type, save it in the map for later use
+       if isType {
+               ctx.types[fmt.Sprintf("vl_api_%s_t", msgName)] = structName
+       }
+
+       return nil
+}
+
+// processMessageField process JSON describing one message field into Go code emitted into provided slice of message fields
+func processMessageField(ctx *context, fields *[]string, fld *jsongo.JSONNode) error {
+       if fld.Len() < 2 || fld.At(0).GetType() != jsongo.TypeValue || fld.At(1).GetType() != jsongo.TypeValue {
+               return errors.New("invalid JSON for message field specified")
+       }
+       fieldVppType, ok := fld.At(0).Get().(string)
+       if !ok {
+               return fmt.Errorf("invalid JSON for message specified, field type is %T, not a string", fld.At(0).Get())
+       }
+       fieldName, ok := fld.At(1).Get().(string)
+       if !ok {
+               return fmt.Errorf("invalid JSON for message specified, field name is %T, not a string", fld.At(1).Get())
+       }
+
+       // skip internal fields
+       fieldNameLower := strings.ToLower(fieldName)
+       if fieldNameLower == "crc" || fieldNameLower == "_vl_msg_id" {
+               return nil
+       }
+       if len(*fields) == 0 && (fieldNameLower == "client_index" || fieldNameLower == "context") {
+               return nil
+       }
+
+       fieldName = strings.TrimPrefix(fieldName, "_")
+       fieldName = camelCaseName(strings.Title(fieldName))
+
+       fieldStr := ""
+       isArray := false
+       arraySize := 0
+
+       fieldStr += "\t" + fieldName + " "
+       if fld.Len() > 2 {
+               isArray = true
+               arraySize = int(fld.At(2).Get().(float64))
+               fieldStr += "[]"
+       }
+
+       dataType := translateVppType(ctx, fieldVppType, isArray)
+       fieldStr += dataType
+
+       if isArray {
+               if arraySize == 0 {
+                       // variable sized array
+                       if fld.Len() > 3 {
+                               // array size is specified by another field
+                               arraySizeField := string(fld.At(3).Get().(string))
+                               arraySizeField = camelCaseName(strings.Title(arraySizeField))
+                               // find & update the field that specifies the array size
+                               for i, f := range *fields {
+                                       if strings.Contains(f, fmt.Sprintf("\t%s ", arraySizeField)) {
+                                               (*fields)[i] += fmt.Sprintf("\t`struc:\"sizeof=%s\"`", fieldName)
+                                       }
+                               }
+                       }
+               } else {
+                       // fixed size array
+                       fieldStr += fmt.Sprintf("\t`struc:\"[%d]%s\"`", arraySize, dataType)
+               }
+       }
+
+       *fields = append(*fields, fieldStr)
+       return nil
+}
+
+// generatePackageHeader generates package header into provider writer
+func generatePackageHeader(ctx *context, w io.Writer, rootNode *jsongo.JSONNode) {
+       fmt.Fprintln(w, "// Package "+ctx.packageName+" represents the VPP binary API of the '"+ctx.packageName+"' VPP module.")
+       fmt.Fprintln(w, "// DO NOT EDIT. Generated from '"+ctx.inputFile+"' on "+time.Now().Format(time.RFC1123)+".")
+
+       fmt.Fprintln(w, "package "+ctx.packageName)
+
+       fmt.Fprintln(w, "import \""+apiImportPath+"\"")
+
+       fmt.Fprintln(w)
+       fmt.Fprintln(w, "// VlApiVersion contains version of the API.")
+       vlAPIVersion := rootNode.Map("vl_api_version")
+       if vlAPIVersion != nil {
+               fmt.Fprintln(w, "const VlAPIVersion = ", vlAPIVersion.Get())
+       }
+       fmt.Fprintln(w)
+}
+
+// generateMessageComment generates comment for a message into provider writer
+func generateMessageComment(ctx *context, w io.Writer, structName string, msgName string, isType bool) {
+       fmt.Fprintln(w)
+       if isType {
+               fmt.Fprintln(w, "// "+structName+" represents the VPP binary API data type '"+msgName+"'.")
+       } else {
+               fmt.Fprintln(w, "// "+structName+" represents the VPP binary API message '"+msgName+"'.")
+       }
+
+       // print out the source of the generated message - the JSON
+       msgFound := false
+       for {
+               lineBuff, err := ctx.inputBuff.ReadBytes('\n')
+               if err != nil {
+                       break
+               }
+               ctx.inputLine++
+               line := string(lineBuff)
+
+               if !msgFound {
+                       if strings.Contains(line, msgName) {
+                               fmt.Fprintf(w, "// Generated from '%s', line %d:\n", ctx.inputFile, ctx.inputLine)
+                               fmt.Fprintln(w, "//")
+                               fmt.Fprint(w, "//", line)
+                               msgFound = true
+                       }
+               } else {
+                       fmt.Fprint(w, "//", line)
+                       if len(strings.Trim(line, " ")) < 4 {
+                               break // end of the message in JSON
+                       }
+               }
+       }
+       fmt.Fprintln(w, "//")
+}
+
+// generateMessageNameGetter generates getter for original VPP message name into the provider writer
+func generateMessageNameGetter(w io.Writer, structName string, msgName string) {
+       fmt.Fprintln(w, "func (*"+structName+") GetMessageName() string {")
+       fmt.Fprintln(w, "\treturn \""+msgName+"\"")
+       fmt.Fprintln(w, "}")
+}
+
+// generateTypeNameGetter generates getter for original VPP type name into the provider writer
+func generateTypeNameGetter(w io.Writer, structName string, msgName string) {
+       fmt.Fprintln(w, "func (*"+structName+") GetTypeName() string {")
+       fmt.Fprintln(w, "\treturn \""+msgName+"\"")
+       fmt.Fprintln(w, "}")
+}
+
+// generateMessageTypeGetter generates message factory for the generated message into the provider writer
+func generateMessageTypeGetter(w io.Writer, structName string, msgType messageType) {
+       fmt.Fprintln(w, "func (*"+structName+") GetMessageType() api.MessageType {")
+       if msgType == requestMessage {
+               fmt.Fprintln(w, "\treturn api.RequestMessage")
+       } else if msgType == replyMessage {
+               fmt.Fprintln(w, "\treturn api.ReplyMessage")
+       } else {
+               fmt.Fprintln(w, "\treturn api.OtherMessage")
+       }
+       fmt.Fprintln(w, "}")
+}
+
+// generateCrcGetter generates getter for CRC checksum of the message definition into the provider writer
+func generateCrcGetter(w io.Writer, structName string, crc string) {
+       crc = strings.TrimPrefix(crc, "0x")
+       fmt.Fprintln(w, "func (*"+structName+") GetCrcString() string {")
+       fmt.Fprintln(w, "\treturn \""+crc+"\"")
+       fmt.Fprintln(w, "}")
+}
+
+// generateMessageFactory generates message factory for the generated message into the provider writer
+func generateMessageFactory(w io.Writer, structName string) {
+       fmt.Fprintln(w, "func New"+structName+"() api.Message {")
+       fmt.Fprintln(w, "\treturn &"+structName+"{}")
+       fmt.Fprintln(w, "}")
+}
+
+// translateVppType translates the VPP data type into Go data type
+func translateVppType(ctx *context, vppType string, isArray bool) string {
+       // basic types
+       switch vppType {
+       case "u8":
+               if isArray {
+                       return "byte"
+               }
+               return "uint8"
+       case "i8":
+               return "int8"
+       case "u16":
+               return "uint16"
+       case "i16":
+               return "int16"
+       case "u32":
+               return "uint32"
+       case "i32":
+               return "int32"
+       case "u64":
+               return "uint64"
+       case "i64":
+               return "int64"
+       case "f64":
+               return "float64"
+       }
+
+       // typedefs
+       typ, ok := ctx.types[vppType]
+       if ok {
+               return typ
+       }
+
+       panic(fmt.Sprintf("Unknown VPP type %s", vppType))
+}
+
+// camelCaseName returns correct name identifier (camelCase).
+func camelCaseName(name string) (should string) {
+       // Fast path for simple cases: "_" and all lowercase.
+       if name == "_" {
+               return name
+       }
+       allLower := true
+       for _, r := range name {
+               if !unicode.IsLower(r) {
+                       allLower = false
+                       break
+               }
+       }
+       if allLower {
+               return name
+       }
+
+       // Split camelCase at any lower->upper transition, and split on underscores.
+       // Check each word for common initialisms.
+       runes := []rune(name)
+       w, i := 0, 0 // index of start of word, scan
+       for i+1 <= len(runes) {
+               eow := false // whether we hit the end of a word
+               if i+1 == len(runes) {
+                       eow = true
+               } else if runes[i+1] == '_' {
+                       // underscore; shift the remainder forward over any run of underscores
+                       eow = true
+                       n := 1
+                       for i+n+1 < len(runes) && runes[i+n+1] == '_' {
+                               n++
+                       }
+
+                       // Leave at most one underscore if the underscore is between two digits
+                       if i+n+1 < len(runes) && unicode.IsDigit(runes[i]) && unicode.IsDigit(runes[i+n+1]) {
+                               n--
+                       }
+
+                       copy(runes[i+1:], runes[i+n+1:])
+                       runes = runes[:len(runes)-n]
+               } else if unicode.IsLower(runes[i]) && !unicode.IsLower(runes[i+1]) {
+                       // lower->non-lower
+                       eow = true
+               }
+               i++
+               if !eow {
+                       continue
+               }
+
+               // [w,i) is a word.
+               word := string(runes[w:i])
+               if u := strings.ToUpper(word); commonInitialisms[u] {
+                       // Keep consistent case, which is lowercase only at the start.
+                       if w == 0 && unicode.IsLower(runes[w]) {
+                               u = strings.ToLower(u)
+                       }
+                       // All the common initialisms are ASCII,
+                       // so we can replace the bytes exactly.
+                       copy(runes[w:], []rune(u))
+               } else if w > 0 && strings.ToLower(word) == word {
+                       // already all lowercase, and not the first word, so uppercase the first character.
+                       runes[w] = unicode.ToUpper(runes[w])
+               }
+               w = i
+       }
+       return string(runes)
+}
+
+// commonInitialisms is a set of common initialisms that need to stay in upper case.
+var commonInitialisms = map[string]bool{
+       "ACL":   true,
+       "API":   true,
+       "ASCII": true,
+       "CPU":   true,
+       "CSS":   true,
+       "DNS":   true,
+       "EOF":   true,
+       "GUID":  true,
+       "HTML":  true,
+       "HTTP":  true,
+       "HTTPS": true,
+       "ID":    true,
+       "IP":    true,
+       "ICMP":  true,
+       "JSON":  true,
+       "LHS":   true,
+       "QPS":   true,
+       "RAM":   true,
+       "RHS":   true,
+       "RPC":   true,
+       "SLA":   true,
+       "SMTP":  true,
+       "SQL":   true,
+       "SSH":   true,
+       "TCP":   true,
+       "TLS":   true,
+       "TTL":   true,
+       "UDP":   true,
+       "UI":    true,
+       "UID":   true,
+       "UUID":  true,
+       "URI":   true,
+       "URL":   true,
+       "UTF8":  true,
+       "VM":    true,
+       "XML":   true,
+       "XMPP":  true,
+       "XSRF":  true,
+       "XSS":   true,
+}
diff --git a/binapi_generator/generator_test.go b/binapi_generator/generator_test.go
new file mode 100644 (file)
index 0000000..7527a98
--- /dev/null
@@ -0,0 +1,441 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 main
+
+import (
+       "bufio"
+       "bytes"
+       "os"
+       "testing"
+
+       "github.com/bennyscetbun/jsongo"
+       . "github.com/onsi/gomega"
+)
+
+func TestGetInputFiles(t *testing.T) {
+       RegisterTestingT(t)
+       result, err := getInputFiles("testdata")
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(result).To(HaveLen(5))
+       for _, file := range result {
+               Expect(file).To(BeAnExistingFile())
+       }
+}
+
+func TestGetInputFilesError(t *testing.T) {
+       RegisterTestingT(t)
+       result, err := getInputFiles("nonexisting_directory")
+       Expect(err).Should(HaveOccurred())
+       Expect(result).To(BeNil())
+}
+
+func TestGenerateFromFile(t *testing.T) {
+       RegisterTestingT(t)
+       outDir := "test_output_directory"
+       // remove directory created during test
+       defer os.RemoveAll(outDir)
+       err := generateFromFile("testdata/acl.api.json", outDir)
+       Expect(err).ShouldNot(HaveOccurred())
+       fileInfo, err := os.Stat(outDir + "/acl/acl.go")
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(fileInfo.IsDir()).To(BeFalse())
+       Expect(fileInfo.Name()).To(BeEquivalentTo("acl.go"))
+}
+
+func TestGenerateFromFileInputError(t *testing.T) {
+       RegisterTestingT(t)
+       outDir := "test_output_directory"
+       err := generateFromFile("testdata/nonexisting.json", outDir)
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("reading data from file failed"))
+}
+
+func TestGenerateFromFileReadJsonError(t *testing.T) {
+       RegisterTestingT(t)
+       outDir := "test_output_directory"
+       err := generateFromFile("testdata/input-read-json-error.json", outDir)
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("JSON unmarshall failed"))
+}
+
+func TestGenerateFromFileGeneratePackageError(t *testing.T) {
+       RegisterTestingT(t)
+       outDir := "test_output_directory"
+       // generate package throws panic, recover after it
+       defer func() {
+               if recovery := recover(); recovery != nil {
+                       t.Logf("Recovered from panic: %v", recovery)
+               }
+               os.RemoveAll(outDir)
+       }()
+       err := generateFromFile("testdata/input-generate-error.json", outDir)
+       Expect(err).Should(HaveOccurred())
+}
+
+func TestGetContext(t *testing.T) {
+       RegisterTestingT(t)
+       outDir := "test_output_directory"
+       result, err := getContext("testdata/af_packet.api.json", outDir)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(result).ToNot(BeNil())
+       Expect(result.outputFile).To(BeEquivalentTo(outDir + "/af_packet/af_packet.go"))
+}
+
+func TestGetContextNoJsonFile(t *testing.T) {
+       RegisterTestingT(t)
+       outDir := "test_output_directory"
+       result, err := getContext("testdata/input.txt", outDir)
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("invalid input file name"))
+       Expect(result).To(BeNil())
+}
+
+func TestGetContextInterfaceJson(t *testing.T) {
+       RegisterTestingT(t)
+       outDir := "test_output_directory"
+       result, err := getContext("testdata/interface.json", outDir)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(result).ToNot(BeNil())
+       Expect(result.outputFile)
+       Expect(result.outputFile).To(BeEquivalentTo(outDir + "/interfaces/interfaces.go"))
+
+}
+
+func TestReadJson(t *testing.T) {
+       RegisterTestingT(t)
+       inputData, err := readFile("testdata/af_packet.api.json")
+       Expect(err).ShouldNot(HaveOccurred())
+       result, err := parseJSON(inputData)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(result).ToNot(BeNil())
+       Expect(result.Len()).To(BeEquivalentTo(3))
+}
+
+func TestReadJsonError(t *testing.T) {
+       RegisterTestingT(t)
+       inputData, err := readFile("testdata/input-read-json-error.json")
+       Expect(err).ShouldNot(HaveOccurred())
+       result, err := parseJSON(inputData)
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("JSON unmarshall failed"))
+       Expect(result).To(BeNil())
+}
+
+func TestGeneratePackage(t *testing.T) {
+       RegisterTestingT(t)
+       // prepare context
+       testCtx := new(context)
+       testCtx.packageName = "test-package-name"
+
+       // prepare input/output output files
+       inputData, err := readFile("testdata/ip.api.json")
+       Expect(err).ShouldNot(HaveOccurred())
+       testCtx.inputBuff = bytes.NewBuffer(inputData)
+       inFile, _ := parseJSON(inputData)
+       outDir := "test_output_directory"
+       outFile, _ := os.Create(outDir)
+       defer os.RemoveAll(outDir)
+
+       // prepare writer
+       writer := bufio.NewWriter(outFile)
+       Expect(writer.Buffered()).To(BeZero())
+       err = generatePackage(testCtx, writer, inFile)
+       Expect(err).ShouldNot(HaveOccurred())
+}
+
+func TestGenerateMessageType(t *testing.T) {
+       RegisterTestingT(t)
+       // prepare context
+       testCtx := new(context)
+       testCtx.packageName = "test-package-name"
+
+       // prepare input/output output files
+       inputData, err := readFile("testdata/ip.api.json")
+       Expect(err).ShouldNot(HaveOccurred())
+       testCtx.inputBuff = bytes.NewBuffer(inputData)
+       inFile, _ := parseJSON(inputData)
+       outDir := "test_output_directory"
+       outFile, _ := os.Create(outDir)
+       defer os.RemoveAll(outDir)
+
+       // prepare writer
+       writer := bufio.NewWriter(outFile)
+
+       types := inFile.Map("types")
+       testCtx.types = map[string]string{
+               "u32": "sw_if_index",
+               "u8":  "weight",
+       }
+       Expect(types.Len()).To(BeEquivalentTo(1))
+       for i := 0; i < types.Len(); i++ {
+               typ := types.At(i)
+               Expect(writer.Buffered()).To(BeZero())
+               err := generateMessage(testCtx, writer, typ, true)
+               Expect(err).ShouldNot(HaveOccurred())
+               Expect(writer.Buffered()).ToNot(BeZero())
+
+       }
+}
+
+func TestGenerateMessageName(t *testing.T) {
+       RegisterTestingT(t)
+       // prepare context
+       testCtx := new(context)
+       testCtx.packageName = "test-package-name"
+
+       // prepare input/output output files
+       inputData, err := readFile("testdata/ip.api.json")
+       Expect(err).ShouldNot(HaveOccurred())
+       testCtx.inputBuff = bytes.NewBuffer(inputData)
+       inFile, _ := parseJSON(inputData)
+       outDir := "test_output_directory"
+       outFile, err := os.Create(outDir)
+       Expect(err).ShouldNot(HaveOccurred())
+       defer os.RemoveAll(outDir)
+
+       // prepare writer
+       writer := bufio.NewWriter(outFile)
+
+       types := inFile.Map("types")
+       Expect(types.Len()).To(BeEquivalentTo(1))
+       for i := 0; i < types.Len(); i++ {
+               typ := types.At(i)
+               Expect(writer.Buffered()).To(BeZero())
+               err := generateMessage(testCtx, writer, typ, false)
+               Expect(err).ShouldNot(HaveOccurred())
+               Expect(writer.Buffered()).ToNot(BeZero())
+
+       }
+}
+
+func TestGenerateMessageFieldTypes(t *testing.T) {
+       // expected results according to acl.api.json in testdata
+       expectedTypes := []string{"\tIsPermit uint8", "\tIsIpv6 uint8", "\tSrcIPAddr []byte     `struc:\"[16]byte\"`",
+               "\tSrcIPPrefixLen uint8", "\tDstIPAddr []byte   `struc:\"[16]byte\"`", "\tDstIPPrefixLen uint8", "\tProto uint8",
+               "\tSrcportOrIcmptypeFirst uint16", "\tSrcportOrIcmptypeLast uint16", "\tDstportOrIcmpcodeFirst uint16",
+               "\tDstportOrIcmpcodeLast uint16", "\tTCPFlagsMask uint8", "\tTCPFlagsValue uint8"}
+       RegisterTestingT(t)
+       // prepare context
+       testCtx := new(context)
+       testCtx.packageName = "test-package-name"
+
+       // prepare input/output output files
+       inputData, err := readFile("testdata/acl.api.json")
+       Expect(err).ShouldNot(HaveOccurred())
+       inFile, _ := parseJSON(inputData)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(inFile).ToNot(BeNil())
+
+       // test types
+       types := inFile.Map("types")
+       fields := make([]string, 0)
+       for i := 0; i < types.Len(); i++ {
+               for j := 0; j < types.At(i).Len(); j++ {
+                       field := types.At(i).At(j)
+                       if jsongo.TypeArray == field.GetType() {
+                               err := processMessageField(testCtx, &fields, field)
+                               Expect(err).ShouldNot(HaveOccurred())
+                               Expect(fields[j-1]).To(BeEquivalentTo(expectedTypes[j-1]))
+                       }
+               }
+       }
+}
+
+func TestGenerateMessageFieldMessages(t *testing.T) {
+       // expected results according to acl.api.json in testdata
+       expectedTypes := []string{"\tMajor uint32", "\tMinor uint32", "\tACLIndex uint32",
+               "\tTag []byte   `struc:\"[64]byte\"`", "\tACLIndex uint32", "\tRetval int32", "\tACLIndex uint32"}
+       RegisterTestingT(t)
+       // prepare context
+       testCtx := new(context)
+       testCtx.packageName = "test-package-name"
+
+       // prepare input/output output files
+       inputData, err := readFile("testdata/acl.api.json")
+       Expect(err).ShouldNot(HaveOccurred())
+       inFile, err := parseJSON(inputData)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(inFile).ToNot(BeNil())
+
+       // test types
+       messages := inFile.Map("messages")
+       customIndex := 0
+       fields := make([]string, 0)
+       for i := 0; i < messages.Len(); i++ {
+               for j := 0; j < messages.At(i).Len(); j++ {
+                       field := messages.At(i).At(j)
+                       if jsongo.TypeArray == field.GetType() {
+                               specificFieldName := field.At(1).Get().(string)
+                               if specificFieldName == "crc" || specificFieldName == "_vl_msg_id" ||
+                                       specificFieldName == "client_index" || specificFieldName == "context" {
+                                       continue
+                               }
+                               err := processMessageField(testCtx, &fields, field)
+                               Expect(err).ShouldNot(HaveOccurred())
+                               Expect(fields[customIndex]).To(BeEquivalentTo(expectedTypes[customIndex]))
+                               customIndex++
+                       }
+               }
+       }
+}
+
+func TestGeneratePackageHeader(t *testing.T) {
+       RegisterTestingT(t)
+       // prepare context
+       testCtx := new(context)
+       testCtx.packageName = "test-package-name"
+
+       // prepare input/output output files
+       inputData, err := readFile("testdata/acl.api.json")
+       Expect(err).ShouldNot(HaveOccurred())
+       inFile, err := parseJSON(inputData)
+       Expect(err).ShouldNot(HaveOccurred())
+       outDir := "test_output_directory"
+       outFile, err := os.Create(outDir)
+       Expect(err).ShouldNot(HaveOccurred())
+       defer os.RemoveAll(outDir)
+       // prepare writer
+       writer := bufio.NewWriter(outFile)
+       Expect(writer.Buffered()).To(BeZero())
+       generatePackageHeader(testCtx, writer, inFile)
+       Expect(writer.Buffered()).ToNot(BeZero())
+}
+
+func TestGenerateMessageCommentType(t *testing.T) {
+       RegisterTestingT(t)
+       // prepare context
+       testCtx := new(context)
+       testCtx.packageName = "test-package-name"
+       testCtx.inputBuff = bytes.NewBuffer([]byte("test content"))
+
+       outDir := "test_output_directory"
+       outFile, err := os.Create(outDir)
+       Expect(err).ShouldNot(HaveOccurred())
+       writer := bufio.NewWriter(outFile)
+       defer os.RemoveAll(outDir)
+       Expect(writer.Buffered()).To(BeZero())
+       generateMessageComment(testCtx, writer, "test-struct", "msg-name", true)
+       Expect(writer.Buffered()).ToNot(BeZero())
+}
+
+func TestGenerateMessageCommentMessage(t *testing.T) {
+       RegisterTestingT(t)
+       // prepare context
+       testCtx := new(context)
+       testCtx.packageName = "test-package-name"
+       testCtx.inputBuff = bytes.NewBuffer([]byte("test content"))
+
+       outDir := "test_output_directory"
+       outFile, err := os.Create(outDir)
+       Expect(err).ShouldNot(HaveOccurred())
+       writer := bufio.NewWriter(outFile)
+       defer os.RemoveAll(outDir)
+       Expect(writer.Buffered()).To(BeZero())
+       generateMessageComment(testCtx, writer, "test-struct", "msg-name", false)
+       Expect(writer.Buffered()).ToNot(BeZero())
+}
+
+func TestGenerateMessageNameGetter(t *testing.T) {
+       RegisterTestingT(t)
+       outDir := "test_output_directory"
+       outFile, err := os.Create(outDir)
+       Expect(err).ShouldNot(HaveOccurred())
+       writer := bufio.NewWriter(outFile)
+       defer os.RemoveAll(outDir)
+       Expect(writer.Buffered()).To(BeZero())
+       generateMessageNameGetter(writer, "test-struct", "msg-name")
+       Expect(writer.Buffered()).ToNot(BeZero())
+}
+
+func TestGenerateTypeNameGetter(t *testing.T) {
+       RegisterTestingT(t)
+       outDir := "test_output_directory"
+       outFile, err := os.Create(outDir)
+       Expect(err).ShouldNot(HaveOccurred())
+       writer := bufio.NewWriter(outFile)
+       defer os.RemoveAll(outDir)
+       Expect(writer.Buffered()).To(BeZero())
+       generateTypeNameGetter(writer, "test-struct", "msg-name")
+       Expect(writer.Buffered()).ToNot(BeZero())
+}
+
+func TestGenerateCrcGetter(t *testing.T) {
+       RegisterTestingT(t)
+       outDir := "test_output_directory"
+       outFile, err := os.Create(outDir)
+       Expect(err).ShouldNot(HaveOccurred())
+       writer := bufio.NewWriter(outFile)
+       defer os.RemoveAll(outDir)
+       Expect(writer.Buffered()).To(BeZero())
+       generateCrcGetter(writer, "test-struct", "msg-name")
+       Expect(writer.Buffered()).ToNot(BeZero())
+}
+
+func TestTranslateVppType(t *testing.T) {
+       RegisterTestingT(t)
+       context := new(context)
+       typesToTranslate := []string{"u8", "i8", "u16", "i16", "u32", "i32", "u64", "i64", "f64"}
+       expected := []string{"uint8", "int8", "uint16", "int16", "uint32", "int32", "uint64", "int64", "float64"}
+       translated := []string{}
+       for _, value := range typesToTranslate {
+               translated = append(translated, translateVppType(context, value, false))
+       }
+       for index, value := range expected {
+               Expect(value).To(BeEquivalentTo(translated[index]))
+       }
+
+}
+
+func TestTranslateVppTypeArray(t *testing.T) {
+       RegisterTestingT(t)
+       context := new(context)
+       translated := translateVppType(context, "u8", true)
+       Expect(translated).To(BeEquivalentTo("byte"))
+}
+
+func TestTranslateVppUnknownType(t *testing.T) {
+       defer func() {
+               if recovery := recover(); recovery != nil {
+                       t.Logf("Recovered from panic: %v", recovery)
+               }
+       }()
+       context := new(context)
+       translateVppType(context, "?", false)
+}
+
+func TestCamelCase(t *testing.T) {
+       RegisterTestingT(t)
+       // test camel case functionality
+       expected := "allYourBaseAreBelongToUs"
+       result := camelCaseName("all_your_base_are_belong_to_us")
+       Expect(expected).To(BeEquivalentTo(result))
+       // test underscore
+       expected = "_"
+       result = camelCaseName(expected)
+       Expect(expected).To(BeEquivalentTo(result))
+       // test all lower
+       expected = "lower"
+       result = camelCaseName(expected)
+       Expect(expected).To(BeEquivalentTo(result))
+}
+
+func TestCommonInitialisms(t *testing.T) {
+       RegisterTestingT(t)
+
+       for key, value := range commonInitialisms {
+               Expect(value).ShouldNot(BeFalse())
+               Expect(key).ShouldNot(BeEmpty())
+       }
+}
diff --git a/binapi_generator/testdata/acl.api.json b/binapi_generator/testdata/acl.api.json
new file mode 100644 (file)
index 0000000..91d3d2f
--- /dev/null
@@ -0,0 +1,67 @@
+{
+    "types" : [
+        ["acl_rule",
+            ["u8", "is_permit"],
+            ["u8", "is_ipv6"],
+            ["u8", "src_ip_addr", 16],
+            ["u8", "src_ip_prefix_len"],
+            ["u8", "dst_ip_addr", 16],
+            ["u8", "dst_ip_prefix_len"],
+            ["u8", "proto"],
+            ["u16", "srcport_or_icmptype_first"],
+            ["u16", "srcport_or_icmptype_last"],
+            ["u16", "dstport_or_icmpcode_first"],
+            ["u16", "dstport_or_icmpcode_last"],
+            ["u8", "tcp_flags_mask"],
+            ["u8", "tcp_flags_value"],
+            {"crc" : "0x2715e1c0"}
+        ],
+        ["macip_acl_rule",
+            ["u8", "is_permit"],
+            ["u8", "is_ipv6"],
+            ["u8", "src_mac", 6],
+            ["u8", "src_mac_mask", 6],
+            ["u8", "src_ip_addr", 16],
+            ["u8", "src_ip_prefix_len"],
+            {"crc" : "0x6723f13e"}
+        ]
+    ],
+    "messages" : [
+        ["acl_plugin_get_version",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0xd7c07748"}
+        ],
+        ["acl_plugin_get_version_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "major"],
+            ["u32", "minor"],
+            {"crc" : "0x43eb59a5"}
+        ],
+        ["acl_add_replace",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            ["u8", "tag", 64],
+            {"crc" : "0x3c317936"}
+        ],
+        ["acl_add_replace_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            ["i32", "retval"],
+            {"crc" : "0xa5e6d0cf"}
+        ],
+        ["acl_del",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            {"crc" : "0x82cc30ed"}
+        ]
+    ],
+"vl_api_version" :"0x3cd02d84"
+}
diff --git a/binapi_generator/testdata/af_packet.api.json b/binapi_generator/testdata/af_packet.api.json
new file mode 100644 (file)
index 0000000..211fc3e
--- /dev/null
@@ -0,0 +1,37 @@
+{
+    "types" : [
+
+    ],
+    "messages" : [
+        ["af_packet_create",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "host_if_name", 64],
+            ["u8", "hw_addr", 6],
+            ["u8", "use_random_hw_addr"],
+            {"crc" : "0x92768640"}
+        ],
+        ["af_packet_create_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            ["u32", "sw_if_index"],
+            {"crc" : "0x718bac92"}
+        ],
+        ["af_packet_delete",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "host_if_name", 64],
+            {"crc" : "0xc063ce85"}
+        ],
+        ["af_packet_delete_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x1a80431a"}
+        ]
+    ],
+"vl_api_version" :"0x4ca71f33"
+}
diff --git a/binapi_generator/testdata/input-generate-error.json b/binapi_generator/testdata/input-generate-error.json
new file mode 100644 (file)
index 0000000..d5df76e
--- /dev/null
@@ -0,0 +1,3 @@
+{
+  "key": "value"
+}
\ No newline at end of file
diff --git a/binapi_generator/testdata/input-read-json-error.json b/binapi_generator/testdata/input-read-json-error.json
new file mode 100644 (file)
index 0000000..02691e3
--- /dev/null
@@ -0,0 +1 @@
+%
\ No newline at end of file
diff --git a/binapi_generator/testdata/input.txt b/binapi_generator/testdata/input.txt
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/binapi_generator/testdata/ip.api.json b/binapi_generator/testdata/ip.api.json
new file mode 100644 (file)
index 0000000..970ec4b
--- /dev/null
@@ -0,0 +1,292 @@
+{
+    "types" : [
+        ["fib_path",
+            ["u32", "sw_if_index"],
+            ["u32", "weight"],
+            ["u8", "is_local"],
+            ["u8", "is_drop"],
+            ["u8", "is_unreach"],
+            ["u8", "is_prohibit"],
+            ["u8", "afi"],
+            ["u8", "next_hop", 16],
+            {"crc" : "0x315b1889"}
+        ]
+    ],
+    "messages" : [
+        ["ip_fib_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0x5fe56ca3"}
+        ],
+        ["ip_fib_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "table_id"],
+            ["u8", "address_length"],
+            ["u8", "address", 4],
+            ["u32", "count"],
+            ["vl_api_fib_path_t", "path", 0, "count"],
+            {"crc" : "0xfd8c6584"}
+        ],
+        ["ip6_fib_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0x25c89676"}
+        ],
+        ["ip6_fib_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "table_id"],
+            ["u8", "address_length"],
+            ["u8", "address", 16],
+            ["u32", "count"],
+            ["vl_api_fib_path_t", "path", 0, "count"],
+            {"crc" : "0xe0825cb5"}
+        ],
+        ["ip_neighbor_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0x3289e160"}
+        ],
+        ["ip_neighbor_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u8", "is_static"],
+            ["u8", "is_ipv6"],
+            ["u8", "mac_address", 6],
+            ["u8", "ip_address", 16],
+            {"crc" : "0x3a00e32a"}
+        ],
+        ["ip_neighbor_add_del",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "vrf_id"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_add"],
+            ["u8", "is_ipv6"],
+            ["u8", "is_static"],
+            ["u8", "mac_address", 6],
+            ["u8", "dst_address", 16],
+            {"crc" : "0x66f2112c"}
+        ],
+        ["ip_neighbor_add_del_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xe5b0f318"}
+        ],
+        ["set_ip_flow_hash",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "vrf_id"],
+            ["u8", "is_ipv6"],
+            ["u8", "src"],
+            ["u8", "dst"],
+            ["u8", "sport"],
+            ["u8", "dport"],
+            ["u8", "proto"],
+            ["u8", "reverse"],
+            {"crc" : "0x92ad3798"}
+        ],
+        ["set_ip_flow_hash_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x35a9e5eb"}
+        ],
+        ["sw_interface_ip6nd_ra_config",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "suppress"],
+            ["u8", "managed"],
+            ["u8", "other"],
+            ["u8", "ll_option"],
+            ["u8", "send_unicast"],
+            ["u8", "cease"],
+            ["u8", "is_no"],
+            ["u8", "default_router"],
+            ["u32", "max_interval"],
+            ["u32", "min_interval"],
+            ["u32", "lifetime"],
+            ["u32", "initial_count"],
+            ["u32", "initial_interval"],
+            {"crc" : "0xec4a29f6"}
+        ],
+        ["sw_interface_ip6nd_ra_config_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x16e25c5b"}
+        ],
+        ["sw_interface_ip6nd_ra_prefix",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "address", 16],
+            ["u8", "address_length"],
+            ["u8", "use_default"],
+            ["u8", "no_advertise"],
+            ["u8", "off_link"],
+            ["u8", "no_autoconfig"],
+            ["u8", "no_onlink"],
+            ["u8", "is_no"],
+            ["u32", "val_lifetime"],
+            ["u32", "pref_lifetime"],
+            {"crc" : "0x5db6555c"}
+        ],
+        ["sw_interface_ip6nd_ra_prefix_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x8050adb3"}
+        ],
+        ["sw_interface_ip6_enable_disable",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "enable"],
+            {"crc" : "0x4a4e5405"}
+        ],
+        ["sw_interface_ip6_enable_disable_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xeb8b4a40"}
+        ],
+        ["sw_interface_ip6_set_link_local_address",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "address", 16],
+            {"crc" : "0x3db6d52b"}
+        ],
+        ["sw_interface_ip6_set_link_local_address_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x0a781e17"}
+        ],
+        ["ip_add_del_route",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "next_hop_sw_if_index"],
+            ["u32", "table_id"],
+            ["u32", "classify_table_index"],
+            ["u32", "next_hop_table_id"],
+            ["u8", "create_vrf_if_needed"],
+            ["u8", "is_add"],
+            ["u8", "is_drop"],
+            ["u8", "is_unreach"],
+            ["u8", "is_prohibit"],
+            ["u8", "is_ipv6"],
+            ["u8", "is_local"],
+            ["u8", "is_classify"],
+            ["u8", "is_multipath"],
+            ["u8", "is_resolve_host"],
+            ["u8", "is_resolve_attached"],
+            ["u8", "not_last"],
+            ["u8", "next_hop_weight"],
+            ["u8", "dst_address_length"],
+            ["u8", "dst_address", 16],
+            ["u8", "next_hop_address", 16],
+            ["u8", "next_hop_n_out_labels"],
+            ["u32", "next_hop_via_label"],
+            ["u32", "next_hop_out_label_stack", 0, "next_hop_n_out_labels"],
+            {"crc" : "0xa0ab24bf"}
+        ],
+        ["ip_add_del_route_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xea57492b"}
+        ],
+        ["ip_mroute_add_del",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "next_hop_sw_if_index"],
+            ["u32", "table_id"],
+            ["u32", "entry_flags"],
+            ["u32", "itf_flags"],
+            ["u16", "grp_address_length"],
+            ["u8", "create_vrf_if_needed"],
+            ["u8", "is_add"],
+            ["u8", "is_ipv6"],
+            ["u8", "is_local"],
+            ["u8", "grp_address", 16],
+            ["u8", "src_address", 16],
+            {"crc" : "0x8312830f"}
+        ],
+        ["ip_mroute_add_del_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x8cabe02c"}
+        ],
+        ["ip_address_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "ip", 16],
+            ["u8", "prefix_length"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0x190d4266"}
+        ],
+        ["ip_address_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0x632e859a"}
+        ],
+        ["ip_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "sw_if_index"],
+            ["u32", "context"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0x695c8227"}
+        ],
+        ["ip_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0x3c1e33e0"}
+        ],
+        ["mfib_signal_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0xbbbbd40d"}
+        ],
+        ["mfib_signal_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u32", "table_id"],
+            ["u16", "grp_address_len"],
+            ["u8", "grp_address", 16],
+            ["u8", "src_address", 16],
+            ["u16", "ip_packet_len"],
+            ["u8", "ip_packet_data", 256],
+            {"crc" : "0x6ba92c72"}
+        ]
+    ],
+"vl_api_version" :"0x6a819870"
+}
diff --git a/core/bin_api/vpe/vpe.go b/core/bin_api/vpe/vpe.go
new file mode 100644 (file)
index 0000000..e93f808
--- /dev/null
@@ -0,0 +1,3053 @@
+// Package vpe represents the VPP binary API of the 'vpe' VPP module.
+// DO NOT EDIT. Generated from '/usr/share/vpp/api/vpe.api.json' on Thu, 27 Apr 2017 11:34:11 CEST.
+package vpe
+
+import "gerrit.fd.io/r/govpp/api"
+
+// VlApiVersion contains version of the API.
+const VlAPIVersion = 0xd3bcc288
+
+// IP4FibCounter represents the VPP binary API data type 'ip4_fib_counter'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 3:
+//
+//        ["ip4_fib_counter",
+//            ["u32", "address"],
+//            ["u8", "address_length"],
+//            ["u64", "packets"],
+//            ["u64", "bytes"],
+//            {"crc" : "0xb2739495"}
+//        ],
+//
+type IP4FibCounter struct {
+       Address       uint32
+       AddressLength uint8
+       Packets       uint64
+       Bytes         uint64
+}
+
+func (*IP4FibCounter) GetTypeName() string {
+       return "ip4_fib_counter"
+}
+func (*IP4FibCounter) GetCrcString() string {
+       return "b2739495"
+}
+
+// IP4NbrCounter represents the VPP binary API data type 'ip4_nbr_counter'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 10:
+//
+//        ["ip4_nbr_counter",
+//            ["u32", "address"],
+//            ["u8", "link_type"],
+//            ["u64", "packets"],
+//            ["u64", "bytes"],
+//            {"crc" : "0x487e2e85"}
+//        ],
+//
+type IP4NbrCounter struct {
+       Address  uint32
+       LinkType uint8
+       Packets  uint64
+       Bytes    uint64
+}
+
+func (*IP4NbrCounter) GetTypeName() string {
+       return "ip4_nbr_counter"
+}
+func (*IP4NbrCounter) GetCrcString() string {
+       return "487e2e85"
+}
+
+// IP6FibCounter represents the VPP binary API data type 'ip6_fib_counter'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 17:
+//
+//        ["ip6_fib_counter",
+//            ["u64", "address", 2],
+//            ["u8", "address_length"],
+//            ["u64", "packets"],
+//            ["u64", "bytes"],
+//            {"crc" : "0xcf35769b"}
+//        ],
+//
+type IP6FibCounter struct {
+       Address       []uint64 `struc:"[2]uint64"`
+       AddressLength uint8
+       Packets       uint64
+       Bytes         uint64
+}
+
+func (*IP6FibCounter) GetTypeName() string {
+       return "ip6_fib_counter"
+}
+func (*IP6FibCounter) GetCrcString() string {
+       return "cf35769b"
+}
+
+// IP6NbrCounter represents the VPP binary API data type 'ip6_nbr_counter'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 24:
+//
+//        ["ip6_nbr_counter",
+//            ["u64", "address", 2],
+//            ["u8", "link_type"],
+//            ["u64", "packets"],
+//            ["u64", "bytes"],
+//            {"crc" : "0xefca741e"}
+//        ]
+//
+type IP6NbrCounter struct {
+       Address  []uint64 `struc:"[2]uint64"`
+       LinkType uint8
+       Packets  uint64
+       Bytes    uint64
+}
+
+func (*IP6NbrCounter) GetTypeName() string {
+       return "ip6_nbr_counter"
+}
+func (*IP6NbrCounter) GetCrcString() string {
+       return "efca741e"
+}
+
+// CreateVlanSubif represents the VPP binary API message 'create_vlan_subif'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 33:
+//
+//        ["create_vlan_subif",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "vlan_id"],
+//            {"crc" : "0xaf9ae1e9"}
+//        ],
+//
+type CreateVlanSubif struct {
+       SwIfIndex uint32
+       VlanID    uint32
+}
+
+func (*CreateVlanSubif) GetMessageName() string {
+       return "create_vlan_subif"
+}
+func (*CreateVlanSubif) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*CreateVlanSubif) GetCrcString() string {
+       return "af9ae1e9"
+}
+func NewCreateVlanSubif() api.Message {
+       return &CreateVlanSubif{}
+}
+
+// CreateVlanSubifReply represents the VPP binary API message 'create_vlan_subif_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 41:
+//
+//        ["create_vlan_subif_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0x8f36b888"}
+//        ],
+//
+type CreateVlanSubifReply struct {
+       Retval    int32
+       SwIfIndex uint32
+}
+
+func (*CreateVlanSubifReply) GetMessageName() string {
+       return "create_vlan_subif_reply"
+}
+func (*CreateVlanSubifReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*CreateVlanSubifReply) GetCrcString() string {
+       return "8f36b888"
+}
+func NewCreateVlanSubifReply() api.Message {
+       return &CreateVlanSubifReply{}
+}
+
+// SwInterfaceSetMplsEnable represents the VPP binary API message 'sw_interface_set_mpls_enable'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 48:
+//
+//        ["sw_interface_set_mpls_enable",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "enable"],
+//            {"crc" : "0x37f6357e"}
+//        ],
+//
+type SwInterfaceSetMplsEnable struct {
+       SwIfIndex uint32
+       Enable    uint8
+}
+
+func (*SwInterfaceSetMplsEnable) GetMessageName() string {
+       return "sw_interface_set_mpls_enable"
+}
+func (*SwInterfaceSetMplsEnable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceSetMplsEnable) GetCrcString() string {
+       return "37f6357e"
+}
+func NewSwInterfaceSetMplsEnable() api.Message {
+       return &SwInterfaceSetMplsEnable{}
+}
+
+// SwInterfaceSetMplsEnableReply represents the VPP binary API message 'sw_interface_set_mpls_enable_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 56:
+//
+//        ["sw_interface_set_mpls_enable_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x5ffd3ca9"}
+//        ],
+//
+type SwInterfaceSetMplsEnableReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceSetMplsEnableReply) GetMessageName() string {
+       return "sw_interface_set_mpls_enable_reply"
+}
+func (*SwInterfaceSetMplsEnableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceSetMplsEnableReply) GetCrcString() string {
+       return "5ffd3ca9"
+}
+func NewSwInterfaceSetMplsEnableReply() api.Message {
+       return &SwInterfaceSetMplsEnableReply{}
+}
+
+// ProxyArpAddDel represents the VPP binary API message 'proxy_arp_add_del'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 62:
+//
+//        ["proxy_arp_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "vrf_id"],
+//            ["u8", "is_add"],
+//            ["u8", "low_address", 4],
+//            ["u8", "hi_address", 4],
+//            {"crc" : "0x4bef9951"}
+//        ],
+//
+type ProxyArpAddDel struct {
+       VrfID      uint32
+       IsAdd      uint8
+       LowAddress []byte `struc:"[4]byte"`
+       HiAddress  []byte `struc:"[4]byte"`
+}
+
+func (*ProxyArpAddDel) GetMessageName() string {
+       return "proxy_arp_add_del"
+}
+func (*ProxyArpAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ProxyArpAddDel) GetCrcString() string {
+       return "4bef9951"
+}
+func NewProxyArpAddDel() api.Message {
+       return &ProxyArpAddDel{}
+}
+
+// ProxyArpAddDelReply represents the VPP binary API message 'proxy_arp_add_del_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 72:
+//
+//        ["proxy_arp_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x8e2d621d"}
+//        ],
+//
+type ProxyArpAddDelReply struct {
+       Retval int32
+}
+
+func (*ProxyArpAddDelReply) GetMessageName() string {
+       return "proxy_arp_add_del_reply"
+}
+func (*ProxyArpAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ProxyArpAddDelReply) GetCrcString() string {
+       return "8e2d621d"
+}
+func NewProxyArpAddDelReply() api.Message {
+       return &ProxyArpAddDelReply{}
+}
+
+// ProxyArpIntfcEnableDisable represents the VPP binary API message 'proxy_arp_intfc_enable_disable'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 78:
+//
+//        ["proxy_arp_intfc_enable_disable",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "enable_disable"],
+//            {"crc" : "0x3ee1998e"}
+//        ],
+//
+type ProxyArpIntfcEnableDisable struct {
+       SwIfIndex     uint32
+       EnableDisable uint8
+}
+
+func (*ProxyArpIntfcEnableDisable) GetMessageName() string {
+       return "proxy_arp_intfc_enable_disable"
+}
+func (*ProxyArpIntfcEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ProxyArpIntfcEnableDisable) GetCrcString() string {
+       return "3ee1998e"
+}
+func NewProxyArpIntfcEnableDisable() api.Message {
+       return &ProxyArpIntfcEnableDisable{}
+}
+
+// ProxyArpIntfcEnableDisableReply represents the VPP binary API message 'proxy_arp_intfc_enable_disable_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 86:
+//
+//        ["proxy_arp_intfc_enable_disable_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x23d273cd"}
+//        ],
+//
+type ProxyArpIntfcEnableDisableReply struct {
+       Retval int32
+}
+
+func (*ProxyArpIntfcEnableDisableReply) GetMessageName() string {
+       return "proxy_arp_intfc_enable_disable_reply"
+}
+func (*ProxyArpIntfcEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ProxyArpIntfcEnableDisableReply) GetCrcString() string {
+       return "23d273cd"
+}
+func NewProxyArpIntfcEnableDisableReply() api.Message {
+       return &ProxyArpIntfcEnableDisableReply{}
+}
+
+// ResetVrf represents the VPP binary API message 'reset_vrf'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 92:
+//
+//        ["reset_vrf",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_ipv6"],
+//            ["u32", "vrf_id"],
+//            {"crc" : "0xeb07deb0"}
+//        ],
+//
+type ResetVrf struct {
+       IsIpv6 uint8
+       VrfID  uint32
+}
+
+func (*ResetVrf) GetMessageName() string {
+       return "reset_vrf"
+}
+func (*ResetVrf) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ResetVrf) GetCrcString() string {
+       return "eb07deb0"
+}
+func NewResetVrf() api.Message {
+       return &ResetVrf{}
+}
+
+// ResetVrfReply represents the VPP binary API message 'reset_vrf_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 100:
+//
+//        ["reset_vrf_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x5f283863"}
+//        ],
+//
+type ResetVrfReply struct {
+       Retval int32
+}
+
+func (*ResetVrfReply) GetMessageName() string {
+       return "reset_vrf_reply"
+}
+func (*ResetVrfReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ResetVrfReply) GetCrcString() string {
+       return "5f283863"
+}
+func NewResetVrfReply() api.Message {
+       return &ResetVrfReply{}
+}
+
+// IsAddressReachable represents the VPP binary API message 'is_address_reachable'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 106:
+//
+//        ["is_address_reachable",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "next_hop_sw_if_index"],
+//            ["u8", "is_known"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "is_error"],
+//            ["u8", "address", 16],
+//            {"crc" : "0xa8b6e322"}
+//        ],
+//
+type IsAddressReachable struct {
+       NextHopSwIfIndex uint32
+       IsKnown          uint8
+       IsIpv6           uint8
+       IsError          uint8
+       Address          []byte `struc:"[16]byte"`
+}
+
+func (*IsAddressReachable) GetMessageName() string {
+       return "is_address_reachable"
+}
+func (*IsAddressReachable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IsAddressReachable) GetCrcString() string {
+       return "a8b6e322"
+}
+func NewIsAddressReachable() api.Message {
+       return &IsAddressReachable{}
+}
+
+// WantStats represents the VPP binary API message 'want_stats'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 117:
+//
+//        ["want_stats",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "enable_disable"],
+//            ["u32", "pid"],
+//            {"crc" : "0x4f2effb4"}
+//        ],
+//
+type WantStats struct {
+       EnableDisable uint32
+       Pid           uint32
+}
+
+func (*WantStats) GetMessageName() string {
+       return "want_stats"
+}
+func (*WantStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantStats) GetCrcString() string {
+       return "4f2effb4"
+}
+func NewWantStats() api.Message {
+       return &WantStats{}
+}
+
+// WantStatsReply represents the VPP binary API message 'want_stats_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 125:
+//
+//        ["want_stats_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xb36abf5f"}
+//        ],
+//
+type WantStatsReply struct {
+       Retval int32
+}
+
+func (*WantStatsReply) GetMessageName() string {
+       return "want_stats_reply"
+}
+func (*WantStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantStatsReply) GetCrcString() string {
+       return "b36abf5f"
+}
+func NewWantStatsReply() api.Message {
+       return &WantStatsReply{}
+}
+
+// VnetIP4FibCounters represents the VPP binary API message 'vnet_ip4_fib_counters'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 131:
+//
+//        ["vnet_ip4_fib_counters",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "vrf_id"],
+//            ["u32", "count"],
+//            ["vl_api_ip4_fib_counter_t", "c", 0, "count"],
+//            {"crc" : "0x1ab9d6c5"}
+//        ],
+//
+type VnetIP4FibCounters struct {
+       VrfID uint32
+       Count uint32 `struc:"sizeof=C"`
+       C     []IP4FibCounter
+}
+
+func (*VnetIP4FibCounters) GetMessageName() string {
+       return "vnet_ip4_fib_counters"
+}
+func (*VnetIP4FibCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetIP4FibCounters) GetCrcString() string {
+       return "1ab9d6c5"
+}
+func NewVnetIP4FibCounters() api.Message {
+       return &VnetIP4FibCounters{}
+}
+
+// VnetIP4NbrCounters represents the VPP binary API message 'vnet_ip4_nbr_counters'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 138:
+//
+//        ["vnet_ip4_nbr_counters",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "count"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "begin"],
+//            ["vl_api_ip4_nbr_counter_t", "c", 0, "count"],
+//            {"crc" : "0xfc2b5092"}
+//        ],
+//
+type VnetIP4NbrCounters struct {
+       Count     uint32 `struc:"sizeof=C"`
+       SwIfIndex uint32
+       Begin     uint8
+       C         []IP4NbrCounter
+}
+
+func (*VnetIP4NbrCounters) GetMessageName() string {
+       return "vnet_ip4_nbr_counters"
+}
+func (*VnetIP4NbrCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetIP4NbrCounters) GetCrcString() string {
+       return "fc2b5092"
+}
+func NewVnetIP4NbrCounters() api.Message {
+       return &VnetIP4NbrCounters{}
+}
+
+// VnetIP6FibCounters represents the VPP binary API message 'vnet_ip6_fib_counters'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 146:
+//
+//        ["vnet_ip6_fib_counters",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "vrf_id"],
+//            ["u32", "count"],
+//            ["vl_api_ip6_fib_counter_t", "c", 0, "count"],
+//            {"crc" : "0x9ab453ae"}
+//        ],
+//
+type VnetIP6FibCounters struct {
+       VrfID uint32
+       Count uint32 `struc:"sizeof=C"`
+       C     []IP6FibCounter
+}
+
+func (*VnetIP6FibCounters) GetMessageName() string {
+       return "vnet_ip6_fib_counters"
+}
+func (*VnetIP6FibCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetIP6FibCounters) GetCrcString() string {
+       return "9ab453ae"
+}
+func NewVnetIP6FibCounters() api.Message {
+       return &VnetIP6FibCounters{}
+}
+
+// VnetIP6NbrCounters represents the VPP binary API message 'vnet_ip6_nbr_counters'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 153:
+//
+//        ["vnet_ip6_nbr_counters",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "count"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "begin"],
+//            ["vl_api_ip6_nbr_counter_t", "c", 0, "count"],
+//            {"crc" : "0x181b673f"}
+//        ],
+//
+type VnetIP6NbrCounters struct {
+       Count     uint32 `struc:"sizeof=C"`
+       SwIfIndex uint32
+       Begin     uint8
+       C         []IP6NbrCounter
+}
+
+func (*VnetIP6NbrCounters) GetMessageName() string {
+       return "vnet_ip6_nbr_counters"
+}
+func (*VnetIP6NbrCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetIP6NbrCounters) GetCrcString() string {
+       return "181b673f"
+}
+func NewVnetIP6NbrCounters() api.Message {
+       return &VnetIP6NbrCounters{}
+}
+
+// VnetGetSummaryStats represents the VPP binary API message 'vnet_get_summary_stats'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 161:
+//
+//        ["vnet_get_summary_stats",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0x16435c20"}
+//        ],
+//
+type VnetGetSummaryStats struct {
+}
+
+func (*VnetGetSummaryStats) GetMessageName() string {
+       return "vnet_get_summary_stats"
+}
+func (*VnetGetSummaryStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*VnetGetSummaryStats) GetCrcString() string {
+       return "16435c20"
+}
+func NewVnetGetSummaryStats() api.Message {
+       return &VnetGetSummaryStats{}
+}
+
+// VnetSummaryStatsReply represents the VPP binary API message 'vnet_summary_stats_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 167:
+//
+//        ["vnet_summary_stats_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u64", "total_pkts", 2],
+//            ["u64", "total_bytes", 2],
+//            ["f64", "vector_rate"],
+//            {"crc" : "0x87a8fa9f"}
+//        ],
+//
+type VnetSummaryStatsReply struct {
+       Retval     int32
+       TotalPkts  []uint64 `struc:"[2]uint64"`
+       TotalBytes []uint64 `struc:"[2]uint64"`
+       VectorRate float64
+}
+
+func (*VnetSummaryStatsReply) GetMessageName() string {
+       return "vnet_summary_stats_reply"
+}
+func (*VnetSummaryStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*VnetSummaryStatsReply) GetCrcString() string {
+       return "87a8fa9f"
+}
+func NewVnetSummaryStatsReply() api.Message {
+       return &VnetSummaryStatsReply{}
+}
+
+// OamEvent represents the VPP binary API message 'oam_event'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 176:
+//
+//        ["oam_event",
+//            ["u16", "_vl_msg_id"],
+//            ["u8", "dst_address", 4],
+//            ["u8", "state"],
+//            {"crc" : "0x4f285ade"}
+//        ],
+//
+type OamEvent struct {
+       DstAddress []byte `struc:"[4]byte"`
+       State      uint8
+}
+
+func (*OamEvent) GetMessageName() string {
+       return "oam_event"
+}
+func (*OamEvent) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*OamEvent) GetCrcString() string {
+       return "4f285ade"
+}
+func NewOamEvent() api.Message {
+       return &OamEvent{}
+}
+
+// WantOamEvents represents the VPP binary API message 'want_oam_events'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 182:
+//
+//        ["want_oam_events",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "enable_disable"],
+//            ["u32", "pid"],
+//            {"crc" : "0x948ef12a"}
+//        ],
+//
+type WantOamEvents struct {
+       EnableDisable uint32
+       Pid           uint32
+}
+
+func (*WantOamEvents) GetMessageName() string {
+       return "want_oam_events"
+}
+func (*WantOamEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantOamEvents) GetCrcString() string {
+       return "948ef12a"
+}
+func NewWantOamEvents() api.Message {
+       return &WantOamEvents{}
+}
+
+// WantOamEventsReply represents the VPP binary API message 'want_oam_events_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 190:
+//
+//        ["want_oam_events_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x266a677d"}
+//        ],
+//
+type WantOamEventsReply struct {
+       Retval int32
+}
+
+func (*WantOamEventsReply) GetMessageName() string {
+       return "want_oam_events_reply"
+}
+func (*WantOamEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantOamEventsReply) GetCrcString() string {
+       return "266a677d"
+}
+func NewWantOamEventsReply() api.Message {
+       return &WantOamEventsReply{}
+}
+
+// OamAddDel represents the VPP binary API message 'oam_add_del'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 196:
+//
+//        ["oam_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "vrf_id"],
+//            ["u8", "src_address", 4],
+//            ["u8", "dst_address", 4],
+//            ["u8", "is_add"],
+//            {"crc" : "0xb14bc7df"}
+//        ],
+//
+type OamAddDel struct {
+       VrfID      uint32
+       SrcAddress []byte `struc:"[4]byte"`
+       DstAddress []byte `struc:"[4]byte"`
+       IsAdd      uint8
+}
+
+func (*OamAddDel) GetMessageName() string {
+       return "oam_add_del"
+}
+func (*OamAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*OamAddDel) GetCrcString() string {
+       return "b14bc7df"
+}
+func NewOamAddDel() api.Message {
+       return &OamAddDel{}
+}
+
+// OamAddDelReply represents the VPP binary API message 'oam_add_del_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 206:
+//
+//        ["oam_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xc5594eec"}
+//        ],
+//
+type OamAddDelReply struct {
+       Retval int32
+}
+
+func (*OamAddDelReply) GetMessageName() string {
+       return "oam_add_del_reply"
+}
+func (*OamAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*OamAddDelReply) GetCrcString() string {
+       return "c5594eec"
+}
+func NewOamAddDelReply() api.Message {
+       return &OamAddDelReply{}
+}
+
+// ResetFib represents the VPP binary API message 'reset_fib'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 212:
+//
+//        ["reset_fib",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "vrf_id"],
+//            ["u8", "is_ipv6"],
+//            {"crc" : "0x6f17106b"}
+//        ],
+//
+type ResetFib struct {
+       VrfID  uint32
+       IsIpv6 uint8
+}
+
+func (*ResetFib) GetMessageName() string {
+       return "reset_fib"
+}
+func (*ResetFib) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ResetFib) GetCrcString() string {
+       return "6f17106b"
+}
+func NewResetFib() api.Message {
+       return &ResetFib{}
+}
+
+// ResetFibReply represents the VPP binary API message 'reset_fib_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 220:
+//
+//        ["reset_fib_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x990dcbf8"}
+//        ],
+//
+type ResetFibReply struct {
+       Retval int32
+}
+
+func (*ResetFibReply) GetMessageName() string {
+       return "reset_fib_reply"
+}
+func (*ResetFibReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ResetFibReply) GetCrcString() string {
+       return "990dcbf8"
+}
+func NewResetFibReply() api.Message {
+       return &ResetFibReply{}
+}
+
+// CreateLoopback represents the VPP binary API message 'create_loopback'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 226:
+//
+//        ["create_loopback",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "mac_address", 6],
+//            {"crc" : "0xb2602de5"}
+//        ],
+//
+type CreateLoopback struct {
+       MacAddress []byte `struc:"[6]byte"`
+}
+
+func (*CreateLoopback) GetMessageName() string {
+       return "create_loopback"
+}
+func (*CreateLoopback) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*CreateLoopback) GetCrcString() string {
+       return "b2602de5"
+}
+func NewCreateLoopback() api.Message {
+       return &CreateLoopback{}
+}
+
+// CreateLoopbackReply represents the VPP binary API message 'create_loopback_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 233:
+//
+//        ["create_loopback_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0x9520f804"}
+//        ],
+//
+type CreateLoopbackReply struct {
+       Retval    int32
+       SwIfIndex uint32
+}
+
+func (*CreateLoopbackReply) GetMessageName() string {
+       return "create_loopback_reply"
+}
+func (*CreateLoopbackReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*CreateLoopbackReply) GetCrcString() string {
+       return "9520f804"
+}
+func NewCreateLoopbackReply() api.Message {
+       return &CreateLoopbackReply{}
+}
+
+// CreateLoopbackInstance represents the VPP binary API message 'create_loopback_instance'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 240:
+//
+//        ["create_loopback_instance",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "mac_address", 6],
+//            ["u8", "is_specified"],
+//            ["u32", "user_instance"],
+//            {"crc" : "0x967694f1"}
+//        ],
+//
+type CreateLoopbackInstance struct {
+       MacAddress   []byte `struc:"[6]byte"`
+       IsSpecified  uint8
+       UserInstance uint32
+}
+
+func (*CreateLoopbackInstance) GetMessageName() string {
+       return "create_loopback_instance"
+}
+func (*CreateLoopbackInstance) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*CreateLoopbackInstance) GetCrcString() string {
+       return "967694f1"
+}
+func NewCreateLoopbackInstance() api.Message {
+       return &CreateLoopbackInstance{}
+}
+
+// CreateLoopbackInstanceReply represents the VPP binary API message 'create_loopback_instance_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 249:
+//
+//        ["create_loopback_instance_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0xd52c63b6"}
+//        ],
+//
+type CreateLoopbackInstanceReply struct {
+       Retval    int32
+       SwIfIndex uint32
+}
+
+func (*CreateLoopbackInstanceReply) GetMessageName() string {
+       return "create_loopback_instance_reply"
+}
+func (*CreateLoopbackInstanceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*CreateLoopbackInstanceReply) GetCrcString() string {
+       return "d52c63b6"
+}
+func NewCreateLoopbackInstanceReply() api.Message {
+       return &CreateLoopbackInstanceReply{}
+}
+
+// DeleteLoopback represents the VPP binary API message 'delete_loopback'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 256:
+//
+//        ["delete_loopback",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0xded428b0"}
+//        ],
+//
+type DeleteLoopback struct {
+       SwIfIndex uint32
+}
+
+func (*DeleteLoopback) GetMessageName() string {
+       return "delete_loopback"
+}
+func (*DeleteLoopback) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*DeleteLoopback) GetCrcString() string {
+       return "ded428b0"
+}
+func NewDeleteLoopback() api.Message {
+       return &DeleteLoopback{}
+}
+
+// DeleteLoopbackReply represents the VPP binary API message 'delete_loopback_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 263:
+//
+//        ["delete_loopback_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xc91dafa5"}
+//        ],
+//
+type DeleteLoopbackReply struct {
+       Retval int32
+}
+
+func (*DeleteLoopbackReply) GetMessageName() string {
+       return "delete_loopback_reply"
+}
+func (*DeleteLoopbackReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*DeleteLoopbackReply) GetCrcString() string {
+       return "c91dafa5"
+}
+func NewDeleteLoopbackReply() api.Message {
+       return &DeleteLoopbackReply{}
+}
+
+// ControlPing represents the VPP binary API message 'control_ping'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 269:
+//
+//        ["control_ping",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0xea1bf4f7"}
+//        ],
+//
+type ControlPing struct {
+}
+
+func (*ControlPing) GetMessageName() string {
+       return "control_ping"
+}
+func (*ControlPing) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ControlPing) GetCrcString() string {
+       return "ea1bf4f7"
+}
+func NewControlPing() api.Message {
+       return &ControlPing{}
+}
+
+// ControlPingReply represents the VPP binary API message 'control_ping_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 275:
+//
+//        ["control_ping_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "client_index"],
+//            ["u32", "vpe_pid"],
+//            {"crc" : "0xaa016e7b"}
+//        ],
+//
+type ControlPingReply struct {
+       Retval      int32
+       ClientIndex uint32
+       VpePid      uint32
+}
+
+func (*ControlPingReply) GetMessageName() string {
+       return "control_ping_reply"
+}
+func (*ControlPingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ControlPingReply) GetCrcString() string {
+       return "aa016e7b"
+}
+func NewControlPingReply() api.Message {
+       return &ControlPingReply{}
+}
+
+// CliRequest represents the VPP binary API message 'cli_request'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 283:
+//
+//        ["cli_request",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u64", "cmd_in_shmem"],
+//            {"crc" : "0xfef056d0"}
+//        ],
+//
+type CliRequest struct {
+       CmdInShmem uint64
+}
+
+func (*CliRequest) GetMessageName() string {
+       return "cli_request"
+}
+func (*CliRequest) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*CliRequest) GetCrcString() string {
+       return "fef056d0"
+}
+func NewCliRequest() api.Message {
+       return &CliRequest{}
+}
+
+// CliInband represents the VPP binary API message 'cli_inband'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 290:
+//
+//        ["cli_inband",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "length"],
+//            ["u8", "cmd", 0, "length"],
+//            {"crc" : "0x22345937"}
+//        ],
+//
+type CliInband struct {
+       Length uint32 `struc:"sizeof=Cmd"`
+       Cmd    []byte
+}
+
+func (*CliInband) GetMessageName() string {
+       return "cli_inband"
+}
+func (*CliInband) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*CliInband) GetCrcString() string {
+       return "22345937"
+}
+func NewCliInband() api.Message {
+       return &CliInband{}
+}
+
+// CliReply represents the VPP binary API message 'cli_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 298:
+//
+//        ["cli_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u64", "reply_in_shmem"],
+//            {"crc" : "0x594a0b2e"}
+//        ],
+//
+type CliReply struct {
+       Retval       int32
+       ReplyInShmem uint64
+}
+
+func (*CliReply) GetMessageName() string {
+       return "cli_reply"
+}
+func (*CliReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*CliReply) GetCrcString() string {
+       return "594a0b2e"
+}
+func NewCliReply() api.Message {
+       return &CliReply{}
+}
+
+// CliInbandReply represents the VPP binary API message 'cli_inband_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 305:
+//
+//        ["cli_inband_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "length"],
+//            ["u8", "reply", 0, "length"],
+//            {"crc" : "0xc1835761"}
+//        ],
+//
+type CliInbandReply struct {
+       Retval int32
+       Length uint32 `struc:"sizeof=Reply"`
+       Reply  []byte
+}
+
+func (*CliInbandReply) GetMessageName() string {
+       return "cli_inband_reply"
+}
+func (*CliInbandReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*CliInbandReply) GetCrcString() string {
+       return "c1835761"
+}
+func NewCliInbandReply() api.Message {
+       return &CliInbandReply{}
+}
+
+// SetArpNeighborLimit represents the VPP binary API message 'set_arp_neighbor_limit'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 313:
+//
+//        ["set_arp_neighbor_limit",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_ipv6"],
+//            ["u32", "arp_neighbor_limit"],
+//            {"crc" : "0xc1690cb4"}
+//        ],
+//
+type SetArpNeighborLimit struct {
+       IsIpv6           uint8
+       ArpNeighborLimit uint32
+}
+
+func (*SetArpNeighborLimit) GetMessageName() string {
+       return "set_arp_neighbor_limit"
+}
+func (*SetArpNeighborLimit) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SetArpNeighborLimit) GetCrcString() string {
+       return "c1690cb4"
+}
+func NewSetArpNeighborLimit() api.Message {
+       return &SetArpNeighborLimit{}
+}
+
+// SetArpNeighborLimitReply represents the VPP binary API message 'set_arp_neighbor_limit_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 321:
+//
+//        ["set_arp_neighbor_limit_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xa6b30518"}
+//        ],
+//
+type SetArpNeighborLimitReply struct {
+       Retval int32
+}
+
+func (*SetArpNeighborLimitReply) GetMessageName() string {
+       return "set_arp_neighbor_limit_reply"
+}
+func (*SetArpNeighborLimitReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SetArpNeighborLimitReply) GetCrcString() string {
+       return "a6b30518"
+}
+func NewSetArpNeighborLimitReply() api.Message {
+       return &SetArpNeighborLimitReply{}
+}
+
+// L2PatchAddDel represents the VPP binary API message 'l2_patch_add_del'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 327:
+//
+//        ["l2_patch_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "rx_sw_if_index"],
+//            ["u32", "tx_sw_if_index"],
+//            ["u8", "is_add"],
+//            {"crc" : "0x9b10029a"}
+//        ],
+//
+type L2PatchAddDel struct {
+       RxSwIfIndex uint32
+       TxSwIfIndex uint32
+       IsAdd       uint8
+}
+
+func (*L2PatchAddDel) GetMessageName() string {
+       return "l2_patch_add_del"
+}
+func (*L2PatchAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*L2PatchAddDel) GetCrcString() string {
+       return "9b10029a"
+}
+func NewL2PatchAddDel() api.Message {
+       return &L2PatchAddDel{}
+}
+
+// L2PatchAddDelReply represents the VPP binary API message 'l2_patch_add_del_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 336:
+//
+//        ["l2_patch_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xa85e37be"}
+//        ],
+//
+type L2PatchAddDelReply struct {
+       Retval int32
+}
+
+func (*L2PatchAddDelReply) GetMessageName() string {
+       return "l2_patch_add_del_reply"
+}
+func (*L2PatchAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*L2PatchAddDelReply) GetCrcString() string {
+       return "a85e37be"
+}
+func NewL2PatchAddDelReply() api.Message {
+       return &L2PatchAddDelReply{}
+}
+
+// SwInterfaceSetVpath represents the VPP binary API message 'sw_interface_set_vpath'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 342:
+//
+//        ["sw_interface_set_vpath",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "enable"],
+//            {"crc" : "0x1bc2fd5e"}
+//        ],
+//
+type SwInterfaceSetVpath struct {
+       SwIfIndex uint32
+       Enable    uint8
+}
+
+func (*SwInterfaceSetVpath) GetMessageName() string {
+       return "sw_interface_set_vpath"
+}
+func (*SwInterfaceSetVpath) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceSetVpath) GetCrcString() string {
+       return "1bc2fd5e"
+}
+func NewSwInterfaceSetVpath() api.Message {
+       return &SwInterfaceSetVpath{}
+}
+
+// SwInterfaceSetVpathReply represents the VPP binary API message 'sw_interface_set_vpath_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 350:
+//
+//        ["sw_interface_set_vpath_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x828dbe62"}
+//        ],
+//
+type SwInterfaceSetVpathReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceSetVpathReply) GetMessageName() string {
+       return "sw_interface_set_vpath_reply"
+}
+func (*SwInterfaceSetVpathReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceSetVpathReply) GetCrcString() string {
+       return "828dbe62"
+}
+func NewSwInterfaceSetVpathReply() api.Message {
+       return &SwInterfaceSetVpathReply{}
+}
+
+// SwInterfaceSetL2Xconnect represents the VPP binary API message 'sw_interface_set_l2_xconnect'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 356:
+//
+//        ["sw_interface_set_l2_xconnect",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "rx_sw_if_index"],
+//            ["u32", "tx_sw_if_index"],
+//            ["u8", "enable"],
+//            {"crc" : "0x48a4c4c8"}
+//        ],
+//
+type SwInterfaceSetL2Xconnect struct {
+       RxSwIfIndex uint32
+       TxSwIfIndex uint32
+       Enable      uint8
+}
+
+func (*SwInterfaceSetL2Xconnect) GetMessageName() string {
+       return "sw_interface_set_l2_xconnect"
+}
+func (*SwInterfaceSetL2Xconnect) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceSetL2Xconnect) GetCrcString() string {
+       return "48a4c4c8"
+}
+func NewSwInterfaceSetL2Xconnect() api.Message {
+       return &SwInterfaceSetL2Xconnect{}
+}
+
+// SwInterfaceSetL2XconnectReply represents the VPP binary API message 'sw_interface_set_l2_xconnect_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 365:
+//
+//        ["sw_interface_set_l2_xconnect_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x6e45eed4"}
+//        ],
+//
+type SwInterfaceSetL2XconnectReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceSetL2XconnectReply) GetMessageName() string {
+       return "sw_interface_set_l2_xconnect_reply"
+}
+func (*SwInterfaceSetL2XconnectReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceSetL2XconnectReply) GetCrcString() string {
+       return "6e45eed4"
+}
+func NewSwInterfaceSetL2XconnectReply() api.Message {
+       return &SwInterfaceSetL2XconnectReply{}
+}
+
+// SwInterfaceSetL2Bridge represents the VPP binary API message 'sw_interface_set_l2_bridge'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 371:
+//
+//        ["sw_interface_set_l2_bridge",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "rx_sw_if_index"],
+//            ["u32", "bd_id"],
+//            ["u8", "shg"],
+//            ["u8", "bvi"],
+//            ["u8", "enable"],
+//            {"crc" : "0x36c739e8"}
+//        ],
+//
+type SwInterfaceSetL2Bridge struct {
+       RxSwIfIndex uint32
+       BdID        uint32
+       Shg         uint8
+       Bvi         uint8
+       Enable      uint8
+}
+
+func (*SwInterfaceSetL2Bridge) GetMessageName() string {
+       return "sw_interface_set_l2_bridge"
+}
+func (*SwInterfaceSetL2Bridge) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceSetL2Bridge) GetCrcString() string {
+       return "36c739e8"
+}
+func NewSwInterfaceSetL2Bridge() api.Message {
+       return &SwInterfaceSetL2Bridge{}
+}
+
+// SwInterfaceSetL2BridgeReply represents the VPP binary API message 'sw_interface_set_l2_bridge_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 382:
+//
+//        ["sw_interface_set_l2_bridge_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x347e08d9"}
+//        ],
+//
+type SwInterfaceSetL2BridgeReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceSetL2BridgeReply) GetMessageName() string {
+       return "sw_interface_set_l2_bridge_reply"
+}
+func (*SwInterfaceSetL2BridgeReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceSetL2BridgeReply) GetCrcString() string {
+       return "347e08d9"
+}
+func NewSwInterfaceSetL2BridgeReply() api.Message {
+       return &SwInterfaceSetL2BridgeReply{}
+}
+
+// BdIPMacAddDel represents the VPP binary API message 'bd_ip_mac_add_del'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 388:
+//
+//        ["bd_ip_mac_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "bd_id"],
+//            ["u8", "is_add"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "ip_address", 16],
+//            ["u8", "mac_address", 6],
+//            {"crc" : "0xad819817"}
+//        ],
+//
+type BdIPMacAddDel struct {
+       BdID       uint32
+       IsAdd      uint8
+       IsIpv6     uint8
+       IPAddress  []byte `struc:"[16]byte"`
+       MacAddress []byte `struc:"[6]byte"`
+}
+
+func (*BdIPMacAddDel) GetMessageName() string {
+       return "bd_ip_mac_add_del"
+}
+func (*BdIPMacAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*BdIPMacAddDel) GetCrcString() string {
+       return "ad819817"
+}
+func NewBdIPMacAddDel() api.Message {
+       return &BdIPMacAddDel{}
+}
+
+// BdIPMacAddDelReply represents the VPP binary API message 'bd_ip_mac_add_del_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 399:
+//
+//        ["bd_ip_mac_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x55bab3b4"}
+//        ],
+//
+type BdIPMacAddDelReply struct {
+       Retval int32
+}
+
+func (*BdIPMacAddDelReply) GetMessageName() string {
+       return "bd_ip_mac_add_del_reply"
+}
+func (*BdIPMacAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*BdIPMacAddDelReply) GetCrcString() string {
+       return "55bab3b4"
+}
+func NewBdIPMacAddDelReply() api.Message {
+       return &BdIPMacAddDelReply{}
+}
+
+// ClassifySetInterfaceIPTable represents the VPP binary API message 'classify_set_interface_ip_table'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 405:
+//
+//        ["classify_set_interface_ip_table",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_ipv6"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "table_index"],
+//            {"crc" : "0x0dc45308"}
+//        ],
+//
+type ClassifySetInterfaceIPTable struct {
+       IsIpv6     uint8
+       SwIfIndex  uint32
+       TableIndex uint32
+}
+
+func (*ClassifySetInterfaceIPTable) GetMessageName() string {
+       return "classify_set_interface_ip_table"
+}
+func (*ClassifySetInterfaceIPTable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ClassifySetInterfaceIPTable) GetCrcString() string {
+       return "0dc45308"
+}
+func NewClassifySetInterfaceIPTable() api.Message {
+       return &ClassifySetInterfaceIPTable{}
+}
+
+// ClassifySetInterfaceIPTableReply represents the VPP binary API message 'classify_set_interface_ip_table_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 414:
+//
+//        ["classify_set_interface_ip_table_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xdc391c34"}
+//        ],
+//
+type ClassifySetInterfaceIPTableReply struct {
+       Retval int32
+}
+
+func (*ClassifySetInterfaceIPTableReply) GetMessageName() string {
+       return "classify_set_interface_ip_table_reply"
+}
+func (*ClassifySetInterfaceIPTableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ClassifySetInterfaceIPTableReply) GetCrcString() string {
+       return "dc391c34"
+}
+func NewClassifySetInterfaceIPTableReply() api.Message {
+       return &ClassifySetInterfaceIPTableReply{}
+}
+
+// ClassifySetInterfaceL2Tables represents the VPP binary API message 'classify_set_interface_l2_tables'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 420:
+//
+//        ["classify_set_interface_l2_tables",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "ip4_table_index"],
+//            ["u32", "ip6_table_index"],
+//            ["u32", "other_table_index"],
+//            ["u8", "is_input"],
+//            {"crc" : "0xed9ccf0d"}
+//        ],
+//
+type ClassifySetInterfaceL2Tables struct {
+       SwIfIndex       uint32
+       IP4TableIndex   uint32
+       IP6TableIndex   uint32
+       OtherTableIndex uint32
+       IsInput         uint8
+}
+
+func (*ClassifySetInterfaceL2Tables) GetMessageName() string {
+       return "classify_set_interface_l2_tables"
+}
+func (*ClassifySetInterfaceL2Tables) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ClassifySetInterfaceL2Tables) GetCrcString() string {
+       return "ed9ccf0d"
+}
+func NewClassifySetInterfaceL2Tables() api.Message {
+       return &ClassifySetInterfaceL2Tables{}
+}
+
+// ClassifySetInterfaceL2TablesReply represents the VPP binary API message 'classify_set_interface_l2_tables_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 431:
+//
+//        ["classify_set_interface_l2_tables_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x8df20579"}
+//        ],
+//
+type ClassifySetInterfaceL2TablesReply struct {
+       Retval int32
+}
+
+func (*ClassifySetInterfaceL2TablesReply) GetMessageName() string {
+       return "classify_set_interface_l2_tables_reply"
+}
+func (*ClassifySetInterfaceL2TablesReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ClassifySetInterfaceL2TablesReply) GetCrcString() string {
+       return "8df20579"
+}
+func NewClassifySetInterfaceL2TablesReply() api.Message {
+       return &ClassifySetInterfaceL2TablesReply{}
+}
+
+// GetNodeIndex represents the VPP binary API message 'get_node_index'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 437:
+//
+//        ["get_node_index",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "node_name", 64],
+//            {"crc" : "0x226d3f8c"}
+//        ],
+//
+type GetNodeIndex struct {
+       NodeName []byte `struc:"[64]byte"`
+}
+
+func (*GetNodeIndex) GetMessageName() string {
+       return "get_node_index"
+}
+func (*GetNodeIndex) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*GetNodeIndex) GetCrcString() string {
+       return "226d3f8c"
+}
+func NewGetNodeIndex() api.Message {
+       return &GetNodeIndex{}
+}
+
+// GetNodeIndexReply represents the VPP binary API message 'get_node_index_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 444:
+//
+//        ["get_node_index_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "node_index"],
+//            {"crc" : "0x29116865"}
+//        ],
+//
+type GetNodeIndexReply struct {
+       Retval    int32
+       NodeIndex uint32
+}
+
+func (*GetNodeIndexReply) GetMessageName() string {
+       return "get_node_index_reply"
+}
+func (*GetNodeIndexReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*GetNodeIndexReply) GetCrcString() string {
+       return "29116865"
+}
+func NewGetNodeIndexReply() api.Message {
+       return &GetNodeIndexReply{}
+}
+
+// AddNodeNext represents the VPP binary API message 'add_node_next'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 451:
+//
+//        ["add_node_next",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "node_name", 64],
+//            ["u8", "next_name", 64],
+//            {"crc" : "0xe4202993"}
+//        ],
+//
+type AddNodeNext struct {
+       NodeName []byte `struc:"[64]byte"`
+       NextName []byte `struc:"[64]byte"`
+}
+
+func (*AddNodeNext) GetMessageName() string {
+       return "add_node_next"
+}
+func (*AddNodeNext) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*AddNodeNext) GetCrcString() string {
+       return "e4202993"
+}
+func NewAddNodeNext() api.Message {
+       return &AddNodeNext{}
+}
+
+// AddNodeNextReply represents the VPP binary API message 'add_node_next_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 459:
+//
+//        ["add_node_next_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "next_index"],
+//            {"crc" : "0xe89d6eed"}
+//        ],
+//
+type AddNodeNextReply struct {
+       Retval    int32
+       NextIndex uint32
+}
+
+func (*AddNodeNextReply) GetMessageName() string {
+       return "add_node_next_reply"
+}
+func (*AddNodeNextReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*AddNodeNextReply) GetCrcString() string {
+       return "e89d6eed"
+}
+func NewAddNodeNextReply() api.Message {
+       return &AddNodeNextReply{}
+}
+
+// L2InterfaceEfpFilter represents the VPP binary API message 'l2_interface_efp_filter'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 466:
+//
+//        ["l2_interface_efp_filter",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "enable_disable"],
+//            {"crc" : "0x07c9d601"}
+//        ],
+//
+type L2InterfaceEfpFilter struct {
+       SwIfIndex     uint32
+       EnableDisable uint32
+}
+
+func (*L2InterfaceEfpFilter) GetMessageName() string {
+       return "l2_interface_efp_filter"
+}
+func (*L2InterfaceEfpFilter) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*L2InterfaceEfpFilter) GetCrcString() string {
+       return "07c9d601"
+}
+func NewL2InterfaceEfpFilter() api.Message {
+       return &L2InterfaceEfpFilter{}
+}
+
+// L2InterfaceEfpFilterReply represents the VPP binary API message 'l2_interface_efp_filter_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 474:
+//
+//        ["l2_interface_efp_filter_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x0f4bb0c0"}
+//        ],
+//
+type L2InterfaceEfpFilterReply struct {
+       Retval int32
+}
+
+func (*L2InterfaceEfpFilterReply) GetMessageName() string {
+       return "l2_interface_efp_filter_reply"
+}
+func (*L2InterfaceEfpFilterReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*L2InterfaceEfpFilterReply) GetCrcString() string {
+       return "0f4bb0c0"
+}
+func NewL2InterfaceEfpFilterReply() api.Message {
+       return &L2InterfaceEfpFilterReply{}
+}
+
+// CreateSubif represents the VPP binary API message 'create_subif'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 480:
+//
+//        ["create_subif",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "sub_id"],
+//            ["u8", "no_tags"],
+//            ["u8", "one_tag"],
+//            ["u8", "two_tags"],
+//            ["u8", "dot1ad"],
+//            ["u8", "exact_match"],
+//            ["u8", "default_sub"],
+//            ["u8", "outer_vlan_id_any"],
+//            ["u8", "inner_vlan_id_any"],
+//            ["u16", "outer_vlan_id"],
+//            ["u16", "inner_vlan_id"],
+//            {"crc" : "0x150e6757"}
+//        ],
+//
+type CreateSubif struct {
+       SwIfIndex      uint32
+       SubID          uint32
+       NoTags         uint8
+       OneTag         uint8
+       TwoTags        uint8
+       Dot1ad         uint8
+       ExactMatch     uint8
+       DefaultSub     uint8
+       OuterVlanIDAny uint8
+       InnerVlanIDAny uint8
+       OuterVlanID    uint16
+       InnerVlanID    uint16
+}
+
+func (*CreateSubif) GetMessageName() string {
+       return "create_subif"
+}
+func (*CreateSubif) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*CreateSubif) GetCrcString() string {
+       return "150e6757"
+}
+func NewCreateSubif() api.Message {
+       return &CreateSubif{}
+}
+
+// CreateSubifReply represents the VPP binary API message 'create_subif_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 498:
+//
+//        ["create_subif_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0x92272bcb"}
+//        ],
+//
+type CreateSubifReply struct {
+       Retval    int32
+       SwIfIndex uint32
+}
+
+func (*CreateSubifReply) GetMessageName() string {
+       return "create_subif_reply"
+}
+func (*CreateSubifReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*CreateSubifReply) GetCrcString() string {
+       return "92272bcb"
+}
+func NewCreateSubifReply() api.Message {
+       return &CreateSubifReply{}
+}
+
+// ShowVersion represents the VPP binary API message 'show_version'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 505:
+//
+//        ["show_version",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0xf18f9480"}
+//        ],
+//
+type ShowVersion struct {
+}
+
+func (*ShowVersion) GetMessageName() string {
+       return "show_version"
+}
+func (*ShowVersion) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ShowVersion) GetCrcString() string {
+       return "f18f9480"
+}
+func NewShowVersion() api.Message {
+       return &ShowVersion{}
+}
+
+// ShowVersionReply represents the VPP binary API message 'show_version_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 511:
+//
+//        ["show_version_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u8", "program", 32],
+//            ["u8", "version", 32],
+//            ["u8", "build_date", 32],
+//            ["u8", "build_directory", 256],
+//            {"crc" : "0x83186d9e"}
+//        ],
+//
+type ShowVersionReply struct {
+       Retval         int32
+       Program        []byte `struc:"[32]byte"`
+       Version        []byte `struc:"[32]byte"`
+       BuildDate      []byte `struc:"[32]byte"`
+       BuildDirectory []byte `struc:"[256]byte"`
+}
+
+func (*ShowVersionReply) GetMessageName() string {
+       return "show_version_reply"
+}
+func (*ShowVersionReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ShowVersionReply) GetCrcString() string {
+       return "83186d9e"
+}
+func NewShowVersionReply() api.Message {
+       return &ShowVersionReply{}
+}
+
+// InterfaceNameRenumber represents the VPP binary API message 'interface_name_renumber'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 521:
+//
+//        ["interface_name_renumber",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "new_show_dev_instance"],
+//            {"crc" : "0x11b7bcec"}
+//        ],
+//
+type InterfaceNameRenumber struct {
+       SwIfIndex          uint32
+       NewShowDevInstance uint32
+}
+
+func (*InterfaceNameRenumber) GetMessageName() string {
+       return "interface_name_renumber"
+}
+func (*InterfaceNameRenumber) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*InterfaceNameRenumber) GetCrcString() string {
+       return "11b7bcec"
+}
+func NewInterfaceNameRenumber() api.Message {
+       return &InterfaceNameRenumber{}
+}
+
+// InterfaceNameRenumberReply represents the VPP binary API message 'interface_name_renumber_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 529:
+//
+//        ["interface_name_renumber_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x31594963"}
+//        ],
+//
+type InterfaceNameRenumberReply struct {
+       Retval int32
+}
+
+func (*InterfaceNameRenumberReply) GetMessageName() string {
+       return "interface_name_renumber_reply"
+}
+func (*InterfaceNameRenumberReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*InterfaceNameRenumberReply) GetCrcString() string {
+       return "31594963"
+}
+func NewInterfaceNameRenumberReply() api.Message {
+       return &InterfaceNameRenumberReply{}
+}
+
+// WantIP4ArpEvents represents the VPP binary API message 'want_ip4_arp_events'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 535:
+//
+//        ["want_ip4_arp_events",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "enable_disable"],
+//            ["u32", "pid"],
+//            ["u32", "address"],
+//            {"crc" : "0x5ae044c2"}
+//        ],
+//
+type WantIP4ArpEvents struct {
+       EnableDisable uint8
+       Pid           uint32
+       Address       uint32
+}
+
+func (*WantIP4ArpEvents) GetMessageName() string {
+       return "want_ip4_arp_events"
+}
+func (*WantIP4ArpEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantIP4ArpEvents) GetCrcString() string {
+       return "5ae044c2"
+}
+func NewWantIP4ArpEvents() api.Message {
+       return &WantIP4ArpEvents{}
+}
+
+// WantIP4ArpEventsReply represents the VPP binary API message 'want_ip4_arp_events_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 544:
+//
+//        ["want_ip4_arp_events_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xe1c0b59e"}
+//        ],
+//
+type WantIP4ArpEventsReply struct {
+       Retval int32
+}
+
+func (*WantIP4ArpEventsReply) GetMessageName() string {
+       return "want_ip4_arp_events_reply"
+}
+func (*WantIP4ArpEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantIP4ArpEventsReply) GetCrcString() string {
+       return "e1c0b59e"
+}
+func NewWantIP4ArpEventsReply() api.Message {
+       return &WantIP4ArpEventsReply{}
+}
+
+// IP4ArpEvent represents the VPP binary API message 'ip4_arp_event'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 550:
+//
+//        ["ip4_arp_event",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "address"],
+//            ["u32", "pid"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "new_mac", 6],
+//            ["u8", "mac_ip"],
+//            {"crc" : "0x7de1837b"}
+//        ],
+//
+type IP4ArpEvent struct {
+       Address   uint32
+       Pid       uint32
+       SwIfIndex uint32
+       NewMac    []byte `struc:"[6]byte"`
+       MacIP     uint8
+}
+
+func (*IP4ArpEvent) GetMessageName() string {
+       return "ip4_arp_event"
+}
+func (*IP4ArpEvent) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IP4ArpEvent) GetCrcString() string {
+       return "7de1837b"
+}
+func NewIP4ArpEvent() api.Message {
+       return &IP4ArpEvent{}
+}
+
+// WantIP6NdEvents represents the VPP binary API message 'want_ip6_nd_events'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 561:
+//
+//        ["want_ip6_nd_events",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "enable_disable"],
+//            ["u32", "pid"],
+//            ["u8", "address", 16],
+//            {"crc" : "0x9586ba55"}
+//        ],
+//
+type WantIP6NdEvents struct {
+       EnableDisable uint8
+       Pid           uint32
+       Address       []byte `struc:"[16]byte"`
+}
+
+func (*WantIP6NdEvents) GetMessageName() string {
+       return "want_ip6_nd_events"
+}
+func (*WantIP6NdEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantIP6NdEvents) GetCrcString() string {
+       return "9586ba55"
+}
+func NewWantIP6NdEvents() api.Message {
+       return &WantIP6NdEvents{}
+}
+
+// WantIP6NdEventsReply represents the VPP binary API message 'want_ip6_nd_events_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 570:
+//
+//        ["want_ip6_nd_events_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x95458aad"}
+//        ],
+//
+type WantIP6NdEventsReply struct {
+       Retval int32
+}
+
+func (*WantIP6NdEventsReply) GetMessageName() string {
+       return "want_ip6_nd_events_reply"
+}
+func (*WantIP6NdEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantIP6NdEventsReply) GetCrcString() string {
+       return "95458aad"
+}
+func NewWantIP6NdEventsReply() api.Message {
+       return &WantIP6NdEventsReply{}
+}
+
+// IP6NdEvent represents the VPP binary API message 'ip6_nd_event'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 576:
+//
+//        ["ip6_nd_event",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "pid"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "address", 16],
+//            ["u8", "new_mac", 6],
+//            ["u8", "mac_ip"],
+//            {"crc" : "0x777bb71c"}
+//        ],
+//
+type IP6NdEvent struct {
+       Pid       uint32
+       SwIfIndex uint32
+       Address   []byte `struc:"[16]byte"`
+       NewMac    []byte `struc:"[6]byte"`
+       MacIP     uint8
+}
+
+func (*IP6NdEvent) GetMessageName() string {
+       return "ip6_nd_event"
+}
+func (*IP6NdEvent) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IP6NdEvent) GetCrcString() string {
+       return "777bb71c"
+}
+func NewIP6NdEvent() api.Message {
+       return &IP6NdEvent{}
+}
+
+// InputACLSetInterface represents the VPP binary API message 'input_acl_set_interface'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 587:
+//
+//        ["input_acl_set_interface",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "ip4_table_index"],
+//            ["u32", "ip6_table_index"],
+//            ["u32", "l2_table_index"],
+//            ["u8", "is_add"],
+//            {"crc" : "0x34d2fc33"}
+//        ],
+//
+type InputACLSetInterface struct {
+       SwIfIndex     uint32
+       IP4TableIndex uint32
+       IP6TableIndex uint32
+       L2TableIndex  uint32
+       IsAdd         uint8
+}
+
+func (*InputACLSetInterface) GetMessageName() string {
+       return "input_acl_set_interface"
+}
+func (*InputACLSetInterface) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*InputACLSetInterface) GetCrcString() string {
+       return "34d2fc33"
+}
+func NewInputACLSetInterface() api.Message {
+       return &InputACLSetInterface{}
+}
+
+// InputACLSetInterfaceReply represents the VPP binary API message 'input_acl_set_interface_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 598:
+//
+//        ["input_acl_set_interface_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xba0110e3"}
+//        ],
+//
+type InputACLSetInterfaceReply struct {
+       Retval int32
+}
+
+func (*InputACLSetInterfaceReply) GetMessageName() string {
+       return "input_acl_set_interface_reply"
+}
+func (*InputACLSetInterfaceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*InputACLSetInterfaceReply) GetCrcString() string {
+       return "ba0110e3"
+}
+func NewInputACLSetInterfaceReply() api.Message {
+       return &InputACLSetInterfaceReply{}
+}
+
+// GetNodeGraph represents the VPP binary API message 'get_node_graph'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 604:
+//
+//        ["get_node_graph",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0xf8636a76"}
+//        ],
+//
+type GetNodeGraph struct {
+}
+
+func (*GetNodeGraph) GetMessageName() string {
+       return "get_node_graph"
+}
+func (*GetNodeGraph) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*GetNodeGraph) GetCrcString() string {
+       return "f8636a76"
+}
+func NewGetNodeGraph() api.Message {
+       return &GetNodeGraph{}
+}
+
+// GetNodeGraphReply represents the VPP binary API message 'get_node_graph_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 610:
+//
+//        ["get_node_graph_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u64", "reply_in_shmem"],
+//            {"crc" : "0x816d91b6"}
+//        ],
+//
+type GetNodeGraphReply struct {
+       Retval       int32
+       ReplyInShmem uint64
+}
+
+func (*GetNodeGraphReply) GetMessageName() string {
+       return "get_node_graph_reply"
+}
+func (*GetNodeGraphReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*GetNodeGraphReply) GetCrcString() string {
+       return "816d91b6"
+}
+func NewGetNodeGraphReply() api.Message {
+       return &GetNodeGraphReply{}
+}
+
+// IoamEnable represents the VPP binary API message 'ioam_enable'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 617:
+//
+//        ["ioam_enable",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u16", "id"],
+//            ["u8", "seqno"],
+//            ["u8", "analyse"],
+//            ["u8", "pot_enable"],
+//            ["u8", "trace_enable"],
+//            ["u32", "node_id"],
+//            {"crc" : "0x7bd4abf9"}
+//        ],
+//
+type IoamEnable struct {
+       ID          uint16
+       Seqno       uint8
+       Analyse     uint8
+       PotEnable   uint8
+       TraceEnable uint8
+       NodeID      uint32
+}
+
+func (*IoamEnable) GetMessageName() string {
+       return "ioam_enable"
+}
+func (*IoamEnable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IoamEnable) GetCrcString() string {
+       return "7bd4abf9"
+}
+func NewIoamEnable() api.Message {
+       return &IoamEnable{}
+}
+
+// IoamEnableReply represents the VPP binary API message 'ioam_enable_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 629:
+//
+//        ["ioam_enable_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x58a8fedc"}
+//        ],
+//
+type IoamEnableReply struct {
+       Retval int32
+}
+
+func (*IoamEnableReply) GetMessageName() string {
+       return "ioam_enable_reply"
+}
+func (*IoamEnableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IoamEnableReply) GetCrcString() string {
+       return "58a8fedc"
+}
+func NewIoamEnableReply() api.Message {
+       return &IoamEnableReply{}
+}
+
+// IoamDisable represents the VPP binary API message 'ioam_disable'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 635:
+//
+//        ["ioam_disable",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u16", "id"],
+//            {"crc" : "0xaff26d33"}
+//        ],
+//
+type IoamDisable struct {
+       ID uint16
+}
+
+func (*IoamDisable) GetMessageName() string {
+       return "ioam_disable"
+}
+func (*IoamDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IoamDisable) GetCrcString() string {
+       return "aff26d33"
+}
+func NewIoamDisable() api.Message {
+       return &IoamDisable{}
+}
+
+// IoamDisableReply represents the VPP binary API message 'ioam_disable_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 642:
+//
+//        ["ioam_disable_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xef118a9d"}
+//        ],
+//
+type IoamDisableReply struct {
+       Retval int32
+}
+
+func (*IoamDisableReply) GetMessageName() string {
+       return "ioam_disable_reply"
+}
+func (*IoamDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IoamDisableReply) GetCrcString() string {
+       return "ef118a9d"
+}
+func NewIoamDisableReply() api.Message {
+       return &IoamDisableReply{}
+}
+
+// GetNextIndex represents the VPP binary API message 'get_next_index'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 648:
+//
+//        ["get_next_index",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "node_name", 64],
+//            ["u8", "next_name", 64],
+//            {"crc" : "0x52f0e416"}
+//        ],
+//
+type GetNextIndex struct {
+       NodeName []byte `struc:"[64]byte"`
+       NextName []byte `struc:"[64]byte"`
+}
+
+func (*GetNextIndex) GetMessageName() string {
+       return "get_next_index"
+}
+func (*GetNextIndex) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*GetNextIndex) GetCrcString() string {
+       return "52f0e416"
+}
+func NewGetNextIndex() api.Message {
+       return &GetNextIndex{}
+}
+
+// GetNextIndexReply represents the VPP binary API message 'get_next_index_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 656:
+//
+//        ["get_next_index_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "next_index"],
+//            {"crc" : "0x671fbdb1"}
+//        ],
+//
+type GetNextIndexReply struct {
+       Retval    int32
+       NextIndex uint32
+}
+
+func (*GetNextIndexReply) GetMessageName() string {
+       return "get_next_index_reply"
+}
+func (*GetNextIndexReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*GetNextIndexReply) GetCrcString() string {
+       return "671fbdb1"
+}
+func NewGetNextIndexReply() api.Message {
+       return &GetNextIndexReply{}
+}
+
+// PgCreateInterface represents the VPP binary API message 'pg_create_interface'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 663:
+//
+//        ["pg_create_interface",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "interface_id"],
+//            {"crc" : "0x253c5959"}
+//        ],
+//
+type PgCreateInterface struct {
+       InterfaceID uint32
+}
+
+func (*PgCreateInterface) GetMessageName() string {
+       return "pg_create_interface"
+}
+func (*PgCreateInterface) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*PgCreateInterface) GetCrcString() string {
+       return "253c5959"
+}
+func NewPgCreateInterface() api.Message {
+       return &PgCreateInterface{}
+}
+
+// PgCreateInterfaceReply represents the VPP binary API message 'pg_create_interface_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 670:
+//
+//        ["pg_create_interface_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0x21b4f949"}
+//        ],
+//
+type PgCreateInterfaceReply struct {
+       Retval    int32
+       SwIfIndex uint32
+}
+
+func (*PgCreateInterfaceReply) GetMessageName() string {
+       return "pg_create_interface_reply"
+}
+func (*PgCreateInterfaceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*PgCreateInterfaceReply) GetCrcString() string {
+       return "21b4f949"
+}
+func NewPgCreateInterfaceReply() api.Message {
+       return &PgCreateInterfaceReply{}
+}
+
+// PgCapture represents the VPP binary API message 'pg_capture'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 677:
+//
+//        ["pg_capture",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "interface_id"],
+//            ["u8", "is_enabled"],
+//            ["u32", "count"],
+//            ["u32", "pcap_name_length"],
+//            ["u8", "pcap_file_name", 0, "pcap_name_length"],
+//            {"crc" : "0x6ac7fe78"}
+//        ],
+//
+type PgCapture struct {
+       InterfaceID    uint32
+       IsEnabled      uint8
+       Count          uint32
+       PcapNameLength uint32 `struc:"sizeof=PcapFileName"`
+       PcapFileName   []byte
+}
+
+func (*PgCapture) GetMessageName() string {
+       return "pg_capture"
+}
+func (*PgCapture) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*PgCapture) GetCrcString() string {
+       return "6ac7fe78"
+}
+func NewPgCapture() api.Message {
+       return &PgCapture{}
+}
+
+// PgCaptureReply represents the VPP binary API message 'pg_capture_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 688:
+//
+//        ["pg_capture_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xf403693b"}
+//        ],
+//
+type PgCaptureReply struct {
+       Retval int32
+}
+
+func (*PgCaptureReply) GetMessageName() string {
+       return "pg_capture_reply"
+}
+func (*PgCaptureReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*PgCaptureReply) GetCrcString() string {
+       return "f403693b"
+}
+func NewPgCaptureReply() api.Message {
+       return &PgCaptureReply{}
+}
+
+// PgEnableDisable represents the VPP binary API message 'pg_enable_disable'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 694:
+//
+//        ["pg_enable_disable",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_enabled"],
+//            ["u32", "stream_name_length"],
+//            ["u8", "stream_name", 0, "stream_name_length"],
+//            {"crc" : "0x7d0b90ff"}
+//        ],
+//
+type PgEnableDisable struct {
+       IsEnabled        uint8
+       StreamNameLength uint32 `struc:"sizeof=StreamName"`
+       StreamName       []byte
+}
+
+func (*PgEnableDisable) GetMessageName() string {
+       return "pg_enable_disable"
+}
+func (*PgEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*PgEnableDisable) GetCrcString() string {
+       return "7d0b90ff"
+}
+func NewPgEnableDisable() api.Message {
+       return &PgEnableDisable{}
+}
+
+// PgEnableDisableReply represents the VPP binary API message 'pg_enable_disable_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 703:
+//
+//        ["pg_enable_disable_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x02253bd6"}
+//        ],
+//
+type PgEnableDisableReply struct {
+       Retval int32
+}
+
+func (*PgEnableDisableReply) GetMessageName() string {
+       return "pg_enable_disable_reply"
+}
+func (*PgEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*PgEnableDisableReply) GetCrcString() string {
+       return "02253bd6"
+}
+func NewPgEnableDisableReply() api.Message {
+       return &PgEnableDisableReply{}
+}
+
+// IPSourceAndPortRangeCheckAddDel represents the VPP binary API message 'ip_source_and_port_range_check_add_del'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 709:
+//
+//        ["ip_source_and_port_range_check_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "is_add"],
+//            ["u8", "mask_length"],
+//            ["u8", "address", 16],
+//            ["u8", "number_of_ranges"],
+//            ["u16", "low_ports", 32],
+//            ["u16", "high_ports", 32],
+//            ["u32", "vrf_id"],
+//            {"crc" : "0x0f8c6ba0"}
+//        ],
+//
+type IPSourceAndPortRangeCheckAddDel struct {
+       IsIpv6         uint8
+       IsAdd          uint8
+       MaskLength     uint8
+       Address        []byte `struc:"[16]byte"`
+       NumberOfRanges uint8
+       LowPorts       []uint16 `struc:"[32]uint16"`
+       HighPorts      []uint16 `struc:"[32]uint16"`
+       VrfID          uint32
+}
+
+func (*IPSourceAndPortRangeCheckAddDel) GetMessageName() string {
+       return "ip_source_and_port_range_check_add_del"
+}
+func (*IPSourceAndPortRangeCheckAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPSourceAndPortRangeCheckAddDel) GetCrcString() string {
+       return "0f8c6ba0"
+}
+func NewIPSourceAndPortRangeCheckAddDel() api.Message {
+       return &IPSourceAndPortRangeCheckAddDel{}
+}
+
+// IPSourceAndPortRangeCheckAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_add_del_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 723:
+//
+//        ["ip_source_and_port_range_check_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x35df8160"}
+//        ],
+//
+type IPSourceAndPortRangeCheckAddDelReply struct {
+       Retval int32
+}
+
+func (*IPSourceAndPortRangeCheckAddDelReply) GetMessageName() string {
+       return "ip_source_and_port_range_check_add_del_reply"
+}
+func (*IPSourceAndPortRangeCheckAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPSourceAndPortRangeCheckAddDelReply) GetCrcString() string {
+       return "35df8160"
+}
+func NewIPSourceAndPortRangeCheckAddDelReply() api.Message {
+       return &IPSourceAndPortRangeCheckAddDelReply{}
+}
+
+// IPSourceAndPortRangeCheckInterfaceAddDel represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 729:
+//
+//        ["ip_source_and_port_range_check_interface_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_add"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "tcp_in_vrf_id"],
+//            ["u32", "tcp_out_vrf_id"],
+//            ["u32", "udp_in_vrf_id"],
+//            ["u32", "udp_out_vrf_id"],
+//            {"crc" : "0x4a6438f1"}
+//        ],
+//
+type IPSourceAndPortRangeCheckInterfaceAddDel struct {
+       IsAdd       uint8
+       SwIfIndex   uint32
+       TCPInVrfID  uint32
+       TCPOutVrfID uint32
+       UDPInVrfID  uint32
+       UDPOutVrfID uint32
+}
+
+func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetMessageName() string {
+       return "ip_source_and_port_range_check_interface_add_del"
+}
+func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetCrcString() string {
+       return "4a6438f1"
+}
+func NewIPSourceAndPortRangeCheckInterfaceAddDel() api.Message {
+       return &IPSourceAndPortRangeCheckInterfaceAddDel{}
+}
+
+// IPSourceAndPortRangeCheckInterfaceAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 741:
+//
+//        ["ip_source_and_port_range_check_interface_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x6b940f04"}
+//        ],
+//
+type IPSourceAndPortRangeCheckInterfaceAddDelReply struct {
+       Retval int32
+}
+
+func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetMessageName() string {
+       return "ip_source_and_port_range_check_interface_add_del_reply"
+}
+func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetCrcString() string {
+       return "6b940f04"
+}
+func NewIPSourceAndPortRangeCheckInterfaceAddDelReply() api.Message {
+       return &IPSourceAndPortRangeCheckInterfaceAddDelReply{}
+}
+
+// DeleteSubif represents the VPP binary API message 'delete_subif'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 747:
+//
+//        ["delete_subif",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0x6038f848"}
+//        ],
+//
+type DeleteSubif struct {
+       SwIfIndex uint32
+}
+
+func (*DeleteSubif) GetMessageName() string {
+       return "delete_subif"
+}
+func (*DeleteSubif) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*DeleteSubif) GetCrcString() string {
+       return "6038f848"
+}
+func NewDeleteSubif() api.Message {
+       return &DeleteSubif{}
+}
+
+// DeleteSubifReply represents the VPP binary API message 'delete_subif_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 754:
+//
+//        ["delete_subif_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x9d6015dc"}
+//        ],
+//
+type DeleteSubifReply struct {
+       Retval int32
+}
+
+func (*DeleteSubifReply) GetMessageName() string {
+       return "delete_subif_reply"
+}
+func (*DeleteSubifReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*DeleteSubifReply) GetCrcString() string {
+       return "9d6015dc"
+}
+func NewDeleteSubifReply() api.Message {
+       return &DeleteSubifReply{}
+}
+
+// Punt represents the VPP binary API message 'punt'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 760:
+//
+//        ["punt",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_add"],
+//            ["u8", "ipv"],
+//            ["u8", "l4_protocol"],
+//            ["u16", "l4_port"],
+//            {"crc" : "0x4559c976"}
+//        ],
+//
+type Punt struct {
+       IsAdd      uint8
+       Ipv        uint8
+       L4Protocol uint8
+       L4Port     uint16
+}
+
+func (*Punt) GetMessageName() string {
+       return "punt"
+}
+func (*Punt) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*Punt) GetCrcString() string {
+       return "4559c976"
+}
+func NewPunt() api.Message {
+       return &Punt{}
+}
+
+// PuntReply represents the VPP binary API message 'punt_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 770:
+//
+//        ["punt_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xcca27fbe"}
+//        ],
+//
+type PuntReply struct {
+       Retval int32
+}
+
+func (*PuntReply) GetMessageName() string {
+       return "punt_reply"
+}
+func (*PuntReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*PuntReply) GetCrcString() string {
+       return "cca27fbe"
+}
+func NewPuntReply() api.Message {
+       return &PuntReply{}
+}
+
+// FeatureEnableDisable represents the VPP binary API message 'feature_enable_disable'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 776:
+//
+//        ["feature_enable_disable",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "enable"],
+//            ["u8", "arc_name", 64],
+//            ["u8", "feature_name", 64],
+//            {"crc" : "0xbc86393b"}
+//        ],
+//
+type FeatureEnableDisable struct {
+       SwIfIndex   uint32
+       Enable      uint8
+       ArcName     []byte `struc:"[64]byte"`
+       FeatureName []byte `struc:"[64]byte"`
+}
+
+func (*FeatureEnableDisable) GetMessageName() string {
+       return "feature_enable_disable"
+}
+func (*FeatureEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*FeatureEnableDisable) GetCrcString() string {
+       return "bc86393b"
+}
+func NewFeatureEnableDisable() api.Message {
+       return &FeatureEnableDisable{}
+}
+
+// FeatureEnableDisableReply represents the VPP binary API message 'feature_enable_disable_reply'.
+// Generated from '/usr/share/vpp/api/vpe.api.json', line 786:
+//
+//        ["feature_enable_disable_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xf6e14373"}
+//        ]
+//
+type FeatureEnableDisableReply struct {
+       Retval int32
+}
+
+func (*FeatureEnableDisableReply) GetMessageName() string {
+       return "feature_enable_disable_reply"
+}
+func (*FeatureEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*FeatureEnableDisableReply) GetCrcString() string {
+       return "f6e14373"
+}
+func NewFeatureEnableDisableReply() api.Message {
+       return &FeatureEnableDisableReply{}
+}
diff --git a/core/core.go b/core/core.go
new file mode 100644 (file)
index 0000000..e11a30f
--- /dev/null
@@ -0,0 +1,340 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 core
+
+//go:generate binapi_generator --input-file=/usr/share/vpp/api/vpe.api.json --output-dir=./bin_api
+
+import (
+       "errors"
+       "fmt"
+       "os"
+       "sync"
+       "sync/atomic"
+
+       logger "github.com/Sirupsen/logrus"
+
+       "gerrit.fd.io/r/govpp/adapter"
+       "gerrit.fd.io/r/govpp/api"
+       "gerrit.fd.io/r/govpp/core/bin_api/vpe"
+)
+
+const (
+       requestChannelBufSize = 100 // default size of the request channel buffers
+       replyChannelBufSize   = 100 // default size of the reply channel buffers
+)
+
+// Connection represents a shared memory connection to VPP via vppAdapter.
+type Connection struct {
+       vpp   adapter.VppAdapter // VPP adapter
+       codec *MsgCodec          // message codec
+
+       msgIDs     map[string]uint16 // map os message IDs indexed by message name + CRC
+       msgIDsLock sync.RWMutex      // lock for the message IDs map
+
+       channels     map[uint32]*api.Channel // map of all API channels indexed by the channel ID
+       channelsLock sync.RWMutex            // lock for the channels map
+
+       notifSubscriptions     map[uint16][]*api.NotifSubscription // map od all notification subscriptions indexed by message ID
+       notifSubscriptionsLock sync.RWMutex                        // lock for the subscriptions map
+
+       maxChannelID uint32 // maximum used client ID
+       pingReqID    uint16 // ID if the ControlPing message
+       pingReplyID  uint16 // ID of the ControlPingReply message
+}
+
+// channelMetadata contains core-local metadata of an API channel.
+type channelMetadata struct {
+       id        uint32 // channel ID
+       multipart uint32 // 1 if multipart request is being processed, 0 otherwise
+}
+
+var (
+       log      *logger.Logger // global logger
+       conn     *Connection    // global handle to the Connection (used in the message receive callback)
+       connLock sync.RWMutex   // lock for the global connection
+)
+
+// init initializes global logger, which logs debug level messages to stdout.
+func init() {
+       log = logger.New()
+       log.Out = os.Stdout
+       log.Level = logger.DebugLevel
+}
+
+// SetLogger sets global logger to provided one.
+func SetLogger(l *logger.Logger) {
+       log = l
+}
+
+// Connect connects to VPP using specified VPP adapter and returns the connection handle.
+func Connect(vppAdapter adapter.VppAdapter) (*Connection, error) {
+       connLock.Lock()
+       defer connLock.Unlock()
+
+       if conn != nil {
+               return nil, errors.New("only one connection per process is supported")
+       }
+
+       conn = &Connection{vpp: vppAdapter, codec: &MsgCodec{}}
+       conn.channels = make(map[uint32]*api.Channel)
+       conn.msgIDs = make(map[string]uint16)
+       conn.notifSubscriptions = make(map[uint16][]*api.NotifSubscription)
+
+       conn.vpp.SetMsgCallback(msgCallback)
+
+       logger.Debug("Connecting to VPP...")
+
+       err := conn.vpp.Connect()
+       if err != nil {
+               return nil, err
+       }
+
+       // store control ping IDs
+       conn.pingReqID, _ = conn.GetMessageID(&vpe.ControlPing{})
+       conn.pingReplyID, _ = conn.GetMessageID(&vpe.ControlPingReply{})
+
+       logger.Debug("VPP connected.")
+
+       return conn, nil
+}
+
+// Disconnect disconnects from VPP.
+func (c *Connection) Disconnect() {
+       connLock.Lock()
+       defer connLock.Unlock()
+
+       if c != nil && c.vpp != nil {
+               c.vpp.Disconnect()
+       }
+       conn = nil
+}
+
+// NewAPIChannel returns a new API channel for communication with VPP via govpp core.
+// It uses default buffer sizes for the request and reply Go channels.
+func (c *Connection) NewAPIChannel() (*api.Channel, error) {
+       return c.NewAPIChannelBuffered(requestChannelBufSize, replyChannelBufSize)
+}
+
+// NewAPIChannelBuffered returns a new API channel for communication with VPP via govpp core.
+// It allows to specify custom buffer sizes for the request and reply Go channels.
+func (c *Connection) NewAPIChannelBuffered(reqChanBufSize, replyChanBufSize int) (*api.Channel, error) {
+       chID := atomic.AddUint32(&c.maxChannelID, 1)
+       chMeta := &channelMetadata{id: chID}
+
+       ch := api.NewChannelInternal(chMeta)
+       ch.MsgDecoder = c.codec
+       ch.MsgIdentifier = c
+
+       // create the communication channels
+       ch.ReqChan = make(chan *api.VppRequest, reqChanBufSize)
+       ch.ReplyChan = make(chan *api.VppReply, replyChanBufSize)
+       ch.NotifSubsChan = make(chan *api.NotifSubscribeRequest, reqChanBufSize)
+       ch.NotifSubsReplyChan = make(chan error, replyChanBufSize)
+
+       // store API channel within the client
+       c.channelsLock.Lock()
+       c.channels[chID] = ch
+       c.channelsLock.Unlock()
+
+       // start watching on the request channel
+       go c.watchRequests(ch, chMeta)
+
+       return ch, nil
+}
+
+// watchRequests watches for requests on the request API channel and forwards them as messages to VPP.
+func (c *Connection) watchRequests(ch *api.Channel, chMeta *channelMetadata) {
+       for {
+               select {
+               case req, ok := <-ch.ReqChan:
+                       // new request on the request channel
+                       if !ok {
+                               // after closing the request channel, release API channel and return
+                               c.releaseAPIChannel(ch, chMeta)
+                               return
+                       }
+                       c.processRequest(ch, chMeta, req)
+
+               case req := <-ch.NotifSubsChan:
+                       // new request on the notification subscribe channel
+                       c.processNotifSubscribeRequest(ch, req)
+               }
+       }
+}
+
+// processRequest processes a single request received on the request channel.
+func (c *Connection) processRequest(ch *api.Channel, chMeta *channelMetadata, req *api.VppRequest) error {
+       // retrieve message ID
+       msgID, err := c.GetMessageID(req.Message)
+       if err != nil {
+               error := fmt.Errorf("unable to retrieve message ID: %v", err)
+               log.WithFields(logger.Fields{
+                       "msg_name": req.Message.GetMessageName(),
+                       "msg_crc":  req.Message.GetCrcString(),
+               }).Errorf("unable to retrieve message ID: %v", err)
+               sendReply(ch, &api.VppReply{Error: error})
+               return error
+       }
+
+       // encode the message into binary
+       data, err := c.codec.EncodeMsg(req.Message, msgID)
+       if err != nil {
+               error := fmt.Errorf("unable to encode the messge: %v", err)
+               log.WithFields(logger.Fields{
+                       "context": chMeta.id,
+                       "msg_id":  msgID,
+               }).Errorf("%v", error)
+               sendReply(ch, &api.VppReply{Error: error})
+               return error
+       }
+
+       // send the message
+       log.WithFields(logger.Fields{
+               "context":  chMeta.id,
+               "msg_id":   msgID,
+               "msg_size": len(data),
+       }).Debug("Sending a message to VPP.")
+
+       c.vpp.SendMsg(chMeta.id, data)
+
+       if req.Multipart {
+               // multipart request
+               atomic.StoreUint32(&chMeta.multipart, 1)
+
+               // send a control ping
+               ping := &vpe.ControlPing{}
+               pingData, _ := c.codec.EncodeMsg(ping, c.pingReqID)
+
+               log.WithFields(logger.Fields{
+                       "context":  chMeta.id,
+                       "msg_id":   c.pingReqID,
+                       "msg_size": len(pingData),
+               }).Debug("Sending a control ping to VPP.")
+
+               c.vpp.SendMsg(chMeta.id, pingData)
+       }
+
+       return nil
+}
+
+// releaseAPIChannel releases API channel that needs to be closed.
+func (c *Connection) releaseAPIChannel(ch *api.Channel, chMeta *channelMetadata) {
+       log.WithFields(logger.Fields{
+               "context": chMeta.id,
+       }).Debug("API channel closed.")
+
+       // delete the channel from channels map
+       c.channelsLock.Lock()
+       delete(c.channels, chMeta.id)
+       c.channelsLock.Unlock()
+}
+
+// msgCallback is called whenever any binary API message comes from VPP.
+func msgCallback(context uint32, msgID uint16, data []byte) {
+       connLock.RLock()
+       defer connLock.RUnlock()
+
+       if conn == nil {
+               log.Warn("Already disconnected, ignoring the message.")
+               return
+       }
+
+       log.WithFields(logger.Fields{
+               "context":  context,
+               "msg_id":   msgID,
+               "msg_size": len(data),
+       }).Debug("Received a message from VPP.")
+
+       if context == 0 || conn.isNotificationMessage(msgID) {
+               // process the message as a notification
+               conn.sendNotifications(msgID, data)
+               return
+       }
+
+       // match ch according to the context
+       conn.channelsLock.RLock()
+       ch, ok := conn.channels[context]
+       conn.channelsLock.RUnlock()
+
+       if !ok {
+               log.WithFields(logger.Fields{
+                       "context": context,
+                       "msg_id":  msgID,
+               }).Error("Context ID not known, ignoring the message.")
+               return
+       }
+
+       chMeta := ch.Metadata().(*channelMetadata)
+       lastReplyReceived := false
+       // if this is a control ping reply and multipart request is being processed, treat this as a last part of the reply
+       if msgID == conn.pingReplyID && atomic.CompareAndSwapUint32(&chMeta.multipart, 1, 0) {
+               lastReplyReceived = true
+       }
+
+       // send the data to the channel
+       sendReply(ch, &api.VppReply{
+               MessageID:         msgID,
+               Data:              data,
+               LastReplyReceived: lastReplyReceived,
+       })
+}
+
+// sendReply sends the reply into the go channel, if it cannot be completed without blocking, otherwise
+// it logs the error and do not send the message.
+func sendReply(ch *api.Channel, reply *api.VppReply) {
+       select {
+       case ch.ReplyChan <- reply:
+               // reply sent successfully
+       default:
+               // unable to write into the channel without blocking
+               log.WithFields(logger.Fields{
+                       "channel": ch,
+                       "msg_id":  reply.MessageID,
+               }).Warn("Unable to send the reply, reciever end not ready.")
+       }
+}
+
+// GetMessageID returns message identifier of given API message.
+func (c *Connection) GetMessageID(msg api.Message) (uint16, error) {
+       return c.messageNameToID(msg.GetMessageName(), msg.GetCrcString())
+}
+
+// messageNameToID returns message ID of a message identified by its name and CRC.
+func (c *Connection) messageNameToID(msgName string, msgCrc string) (uint16, error) {
+       // try to get the ID from the map
+       c.msgIDsLock.RLock()
+       id, ok := c.msgIDs[msgName+msgCrc]
+       c.msgIDsLock.RUnlock()
+       if ok {
+               return id, nil
+       }
+
+       // get the ID using VPP API
+       id, err := c.vpp.GetMsgID(msgName, msgCrc)
+       if err != nil {
+               error := fmt.Errorf("unable to retrieve message ID: %v", err)
+               log.WithFields(logger.Fields{
+                       "msg_name": msgName,
+                       "msg_crc":  msgCrc,
+               }).Errorf("unable to retrieve message ID: %v", err)
+               return id, error
+       }
+
+       c.msgIDsLock.Lock()
+       c.msgIDs[msgName+msgCrc] = id
+       c.msgIDsLock.Unlock()
+
+       return id, nil
+}
diff --git a/core/core_test.go b/core/core_test.go
new file mode 100644 (file)
index 0000000..c95ef04
--- /dev/null
@@ -0,0 +1,244 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 core
+
+import (
+       "testing"
+
+       "gerrit.fd.io/r/govpp/adapter/mock"
+       "gerrit.fd.io/r/govpp/api"
+       "gerrit.fd.io/r/govpp/core/bin_api/vpe"
+       "gerrit.fd.io/r/govpp/examples/bin_api/interfaces"
+
+       . "github.com/onsi/gomega"
+)
+
+type testCtx struct {
+       mockVpp *mock.VppAdapter
+       conn    *Connection
+       ch      *api.Channel
+}
+
+func setupTest(t *testing.T) *testCtx {
+       RegisterTestingT(t)
+
+       ctx := &testCtx{}
+       ctx.mockVpp = &mock.VppAdapter{}
+
+       var err error
+       ctx.conn, err = Connect(ctx.mockVpp)
+       Expect(err).ShouldNot(HaveOccurred())
+
+       ctx.ch, err = ctx.conn.NewAPIChannel()
+       Expect(err).ShouldNot(HaveOccurred())
+
+       return ctx
+}
+
+func (ctx *testCtx) teardownTest() {
+       ctx.ch.Close()
+       ctx.conn.Disconnect()
+}
+
+func TestSimpleRequest(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       ctx.mockVpp.MockReply(&vpe.ControlPingReply{Retval: -5})
+
+       req := &vpe.ControlPing{}
+       reply := &vpe.ControlPingReply{}
+
+       // send the request and receive a reply
+       ctx.ch.ReqChan <- &api.VppRequest{Message: req}
+       vppReply := <-ctx.ch.ReplyChan
+
+       Expect(vppReply).ShouldNot(BeNil())
+       Expect(vppReply.Error).ShouldNot(HaveOccurred())
+
+       // decode the message
+       err := ctx.ch.MsgDecoder.DecodeMsg(vppReply.Data, reply)
+       Expect(err).ShouldNot(HaveOccurred())
+
+       Expect(reply.Retval).To(BeEquivalentTo(-5))
+}
+
+func TestMultiRequest(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       for m := 0; m < 10; m++ {
+               ctx.mockVpp.MockReply(&interfaces.SwInterfaceDetails{})
+       }
+       ctx.mockVpp.MockReply(&vpe.ControlPingReply{})
+
+       // send multipart request
+       ctx.ch.ReqChan <- &api.VppRequest{Message: &interfaces.SwInterfaceDump{}, Multipart: true}
+
+       cnt := 0
+       for {
+               // receive a reply
+               vppReply := <-ctx.ch.ReplyChan
+               if vppReply.LastReplyReceived {
+                       break // break out of the loop
+               }
+               Expect(vppReply.Error).ShouldNot(HaveOccurred())
+
+               // decode the message
+               reply := &interfaces.SwInterfaceDetails{}
+               err := ctx.ch.MsgDecoder.DecodeMsg(vppReply.Data, reply)
+               Expect(err).ShouldNot(HaveOccurred())
+               cnt++
+       }
+
+       Expect(cnt).To(BeEquivalentTo(10))
+}
+
+func TestNotifications(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       // subscribe for notification
+       notifChan := make(chan api.Message, 1)
+       subscription := &api.NotifSubscription{
+               NotifChan:  notifChan,
+               MsgFactory: interfaces.NewSwInterfaceSetFlags,
+       }
+       ctx.ch.NotifSubsChan <- &api.NotifSubscribeRequest{
+               Subscription: subscription,
+               Subscribe:    true,
+       }
+       err := <-ctx.ch.NotifSubsReplyChan
+       Expect(err).ShouldNot(HaveOccurred())
+
+       // mock the notification and force its delivery
+       ctx.mockVpp.MockReply(&interfaces.SwInterfaceSetFlags{
+               SwIfIndex:   3,
+               AdminUpDown: 1,
+       })
+       ctx.mockVpp.SendMsg(0, []byte{0})
+
+       // receive the notification
+       notif := (<-notifChan).(*interfaces.SwInterfaceSetFlags)
+
+       Expect(notif.SwIfIndex).To(BeEquivalentTo(3))
+
+       // unsubscribe notification
+       ctx.ch.NotifSubsChan <- &api.NotifSubscribeRequest{
+               Subscription: subscription,
+               Subscribe:    false,
+       }
+       err = <-ctx.ch.NotifSubsReplyChan
+       Expect(err).ShouldNot(HaveOccurred())
+}
+
+func TestDoubleConnection(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       conn, err := Connect(ctx.mockVpp)
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("only one connection per process"))
+       Expect(conn).Should(BeNil())
+}
+
+func TestFullBuffer(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       // close the default API channel
+       ctx.ch.Close()
+
+       // create a new channel with limited buffer sizes
+       var err error
+       ctx.ch, err = ctx.conn.NewAPIChannelBuffered(10, 1)
+       Expect(err).ShouldNot(HaveOccurred())
+
+       // send multiple requests, only one reply should be read
+       for i := 0; i < 20; i++ {
+               ctx.mockVpp.MockReply(&vpe.ControlPingReply{})
+               ctx.ch.ReqChan <- &api.VppRequest{Message: &vpe.ControlPing{}}
+       }
+
+       vppReply := <-ctx.ch.ReplyChan
+       Expect(vppReply).ShouldNot(BeNil())
+
+       received := false
+       select {
+       case vppReply = <-ctx.ch.ReplyChan:
+               received = true // this should not happen
+       default:
+               received = false // no reply to be received
+       }
+       Expect(received).Should(BeFalse(), "A reply has been recieved, should had been ignored.")
+}
+
+func TestCodec(t *testing.T) {
+       RegisterTestingT(t)
+
+       codec := &MsgCodec{}
+
+       // request
+       data, err := codec.EncodeMsg(&vpe.CreateLoopback{MacAddress: []byte{1, 2, 3, 4, 5, 6}}, 11)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(data).ShouldNot(BeEmpty())
+
+       msg1 := &vpe.CreateLoopback{}
+       err = codec.DecodeMsg(data, msg1)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(msg1.MacAddress).To(BeEquivalentTo([]byte{1, 2, 3, 4, 5, 6}))
+
+       // reply
+       data, err = codec.EncodeMsg(&vpe.ControlPingReply{Retval: 55}, 22)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(data).ShouldNot(BeEmpty())
+
+       msg2 := &vpe.ControlPingReply{}
+       err = codec.DecodeMsg(data, msg2)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(msg2.Retval).To(BeEquivalentTo(55))
+
+       // other
+       data, err = codec.EncodeMsg(&vpe.VnetIP4FibCounters{VrfID: 77}, 33)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(data).ShouldNot(BeEmpty())
+
+       msg3 := &vpe.VnetIP4FibCounters{}
+       err = codec.DecodeMsg(data, msg3)
+       Expect(err).ShouldNot(HaveOccurred())
+       Expect(msg3.VrfID).To(BeEquivalentTo(77))
+}
+
+func TestCodecNegative(t *testing.T) {
+       RegisterTestingT(t)
+
+       codec := &MsgCodec{}
+
+       // nil message for encoding
+       data, err := codec.EncodeMsg(nil, 15)
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("nil message"))
+       Expect(data).Should(BeNil())
+
+       // nil message for decoding
+       err = codec.DecodeMsg(data, nil)
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("nil message"))
+
+       // nil data for decoding
+       err = codec.DecodeMsg(nil, &vpe.ControlPingReply{})
+       Expect(err).Should(HaveOccurred())
+       Expect(err.Error()).To(ContainSubstring("EOF"))
+}
diff --git a/core/doc.go b/core/doc.go
new file mode 100644 (file)
index 0000000..a4ecd50
--- /dev/null
@@ -0,0 +1,20 @@
+// Package core provides connectivity to VPP via the adapter: sends and receives the messages to/from VPP,
+// marshalls/unmarshalls them and forwards them between the client Go channels and the VPP.
+//
+// The interface_plugin APIs the core exposes is tied to a connection: Connect provides a connection, that cane be
+// later used to request an API channel via NewAPIChannel / NewAPIChannelBuffered functions:
+//
+//     conn, err := govpp.Connect()
+//     if err != nil {
+//             // handle error!
+//     }
+//     defer conn.Disconnect()
+//
+//     ch, err := conn.NewAPIChannel()
+//     if err != nil {
+//             // handle error!
+//     }
+//     defer ch.Close()
+//
+// Note that one application can open only one connection, that can serve multiple API channels.
+package core
diff --git a/core/msg_codec.go b/core/msg_codec.go
new file mode 100644 (file)
index 0000000..1543f3d
--- /dev/null
@@ -0,0 +1,146 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 core
+
+import (
+       "bytes"
+       "errors"
+       "fmt"
+       "reflect"
+
+       logger "github.com/Sirupsen/logrus"
+       "github.com/lunixbochs/struc"
+
+       "gerrit.fd.io/r/govpp/api"
+)
+
+// MsgCodec provides encoding and decoding functionality of `api.Message` structs into/from
+// binary format as accepted by VPP.
+type MsgCodec struct{}
+
+// vppRequestHeader struct contains header fields implemented by all VPP requests.
+type vppRequestHeader struct {
+       VlMsgID     uint16
+       ClientIndex uint32
+       Context     uint32
+}
+
+// vppReplyHeader struct contains header fields implemented by all VPP replies.
+type vppReplyHeader struct {
+       VlMsgID uint16
+       Context uint32
+}
+
+// vppOtherHeader struct contains header fields implemented by other VPP messages (not requests nor replies).
+type vppOtherHeader struct {
+       VlMsgID uint16
+}
+
+const (
+       vppRequestHeaderSize = 10 // size of a VPP request header
+       vppReplyHeaderSize   = 6  // size of a VPP reply header
+       vppOtherHeaderSize   = 2  // size of the header of other VPP messages
+)
+
+// EncodeMsg encodes provided `Message` structure into its binary-encoded data representation.
+func (*MsgCodec) EncodeMsg(msg api.Message, msgID uint16) ([]byte, error) {
+       if msg == nil {
+               return nil, errors.New("nil message passed in")
+       }
+
+       buf := new(bytes.Buffer)
+
+       // encode message header
+       var header interface{}
+       if msg.GetMessageType() == api.RequestMessage {
+               header = &vppRequestHeader{VlMsgID: msgID}
+       } else if msg.GetMessageType() == api.ReplyMessage {
+               header = &vppReplyHeader{VlMsgID: msgID}
+       } else {
+               header = &vppOtherHeader{VlMsgID: msgID}
+       }
+       err := struc.Pack(buf, header)
+       if err != nil {
+               log.WithFields(logger.Fields{
+                       "error":  err,
+                       "header": header,
+               }).Error("Unable to encode the message header: ", err)
+               return nil, fmt.Errorf("unable to encode the message header: %v", err)
+       }
+
+       // encode message content
+       if reflect.Indirect(reflect.ValueOf(msg)).NumField() > 0 {
+               err := struc.Pack(buf, msg)
+               if err != nil {
+                       log.WithFields(logger.Fields{
+                               "error":   err,
+                               "message": msg,
+                       }).Error("Unable to encode the message: ", err)
+                       return nil, fmt.Errorf("unable to encode the message: %v", err)
+               }
+       }
+
+       return buf.Bytes(), nil
+}
+
+// DecodeMsg decodes binary-encoded data of a message into provided `Message` structure.
+func (*MsgCodec) DecodeMsg(data []byte, msg api.Message) error {
+       if msg == nil {
+               return errors.New("nil message passed in")
+       }
+
+       buf := bytes.NewReader(data)
+
+       // check which header is expected
+       var header interface{}
+       if msg.GetMessageType() == api.RequestMessage {
+               header = &vppRequestHeader{}
+       } else if msg.GetMessageType() == api.ReplyMessage {
+               header = &vppReplyHeader{}
+       } else {
+               header = &vppOtherHeader{}
+       }
+
+       // decode message header
+       err := struc.Unpack(buf, header)
+       if err != nil {
+               log.WithFields(logger.Fields{
+                       "error": err,
+                       "data":  data,
+               }).Error("Unable to decode header of the message.")
+               return fmt.Errorf("unable to decode the message header: %v", err)
+       }
+
+       // get rid of the message header
+       if msg.GetMessageType() == api.RequestMessage {
+               buf = bytes.NewReader(data[vppRequestHeaderSize:])
+       } else if msg.GetMessageType() == api.ReplyMessage {
+               buf = bytes.NewReader(data[vppReplyHeaderSize:])
+       } else {
+               buf = bytes.NewReader(data[vppOtherHeaderSize:])
+       }
+
+       // decode message content
+       err = struc.Unpack(buf, msg)
+       if err != nil {
+               log.WithFields(logger.Fields{
+                       "error": err,
+                       "data":  buf,
+               }).Error("Unable to decode the message.")
+               return fmt.Errorf("unable to decode the message: %v", err)
+       }
+
+       return nil
+}
diff --git a/core/notifications.go b/core/notifications.go
new file mode 100644 (file)
index 0000000..b44eb1a
--- /dev/null
@@ -0,0 +1,182 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 core
+
+import (
+       "fmt"
+       "reflect"
+
+       logger "github.com/Sirupsen/logrus"
+
+       "gerrit.fd.io/r/govpp/api"
+)
+
+// processNotifSubscribeRequest processes a notification subscribe request.
+func (c *Connection) processNotifSubscribeRequest(ch *api.Channel, req *api.NotifSubscribeRequest) error {
+       var err error
+
+       // subscribe / unsubscribe
+       if req.Subscribe {
+               err = c.addNotifSubscription(req.Subscription)
+       } else {
+               err = c.removeNotifSubscription(req.Subscription)
+       }
+
+       // send the reply into the go channel
+       select {
+       case ch.NotifSubsReplyChan <- err:
+               // reply sent successfully
+       default:
+               // unable to write into the channel without blocking
+               log.WithFields(logger.Fields{
+                       "channel": ch,
+               }).Warn("Unable to deliver the subscribe reply, reciever end not ready.")
+       }
+
+       return err
+}
+
+// addNotifSubscription adds the notification subscription into the subscriptions map of the connection.
+func (c *Connection) addNotifSubscription(subs *api.NotifSubscription) error {
+       // get message ID of the notification message
+       msgID, err := c.getSubscriptionMessageID(subs)
+       if err != nil {
+               return err
+       }
+
+       log.WithFields(logger.Fields{
+               "msg_id":       msgID,
+               "subscription": subs,
+       }).Debug("Adding new notification subscription.")
+
+       // add the subscription into map
+       c.notifSubscriptionsLock.Lock()
+       defer c.notifSubscriptionsLock.Unlock()
+
+       c.notifSubscriptions[msgID] = append(c.notifSubscriptions[msgID], subs)
+
+       return nil
+}
+
+// removeNotifSubscription removes the notification subscription from the subscriptions map of the connection.
+func (c *Connection) removeNotifSubscription(subs *api.NotifSubscription) error {
+       // get message ID of the notification message
+       msgID, err := c.getSubscriptionMessageID(subs)
+       if err != nil {
+               return err
+       }
+
+       log.WithFields(logger.Fields{
+               "msg_id":       msgID,
+               "subscription": subs,
+       }).Debug("Removing notification subscription.")
+
+       // remove the subscription from the map
+       c.notifSubscriptionsLock.Lock()
+       defer c.notifSubscriptionsLock.Unlock()
+
+       for i, item := range c.notifSubscriptions[msgID] {
+               if item == subs {
+                       // remove i-th item in the slice
+                       c.notifSubscriptions[msgID] = append(c.notifSubscriptions[msgID][:i], c.notifSubscriptions[msgID][i+1:]...)
+                       break
+               }
+       }
+
+       return nil
+}
+
+// isNotificationMessage returns true if someone has subscribed to provided message ID.
+func (c *Connection) isNotificationMessage(msgID uint16) bool {
+       c.notifSubscriptionsLock.RLock()
+       defer c.notifSubscriptionsLock.RUnlock()
+
+       _, exists := c.notifSubscriptions[msgID]
+       return exists
+}
+
+// sendNotifications send a notification message to all subscribers subscribed for that message.
+func (c *Connection) sendNotifications(msgID uint16, data []byte) {
+       c.notifSubscriptionsLock.RLock()
+       defer c.notifSubscriptionsLock.RUnlock()
+
+       matched := false
+
+       // send to notification to each subscriber
+       for _, subs := range c.notifSubscriptions[msgID] {
+               log.WithFields(logger.Fields{
+                       "msg_id":       msgID,
+                       "msg_size":     len(data),
+                       "subscription": subs,
+               }).Debug("Sending a notification to the subscription channel.")
+
+               msg := subs.MsgFactory()
+               err := c.codec.DecodeMsg(data, msg)
+               if err != nil {
+                       log.WithFields(logger.Fields{
+                               "msg_id":       msgID,
+                               "msg_size":     len(data),
+                               "subscription": subs,
+                       }).Error("Unable to decode the notification message.")
+                       continue
+               }
+
+               // special case for the strange interface counters message
+               if msg.GetMessageName() == "vnet_interface_counters" {
+                       v := reflect.ValueOf(msg).Elem().FieldByName("Data")
+                       if v.IsValid() {
+                               v.SetBytes(data[8:]) // include the Count and Data fields in the data
+                       }
+               }
+
+               // send the message into the go channel of the subscription
+               select {
+               case subs.NotifChan <- msg:
+                       // message sent successfully
+               default:
+                       // unable to write into the channel without blocking
+                       log.WithFields(logger.Fields{
+                               "msg_id":       msgID,
+                               "msg_size":     len(data),
+                               "subscription": subs,
+                       }).Warn("Unable to deliver the notification, reciever end not ready.")
+               }
+
+               matched = true
+       }
+
+       if !matched {
+               log.WithFields(logger.Fields{
+                       "msg_id":   msgID,
+                       "msg_size": len(data),
+               }).Debug("No subscription found for the notification message.")
+       }
+}
+
+// getSubscriptionMessageID returns ID of the message the subscription is tied to.
+func (c *Connection) getSubscriptionMessageID(subs *api.NotifSubscription) (uint16, error) {
+       msg := subs.MsgFactory()
+       msgID, err := c.GetMessageID(msg)
+
+       if err != nil {
+               log.WithFields(logger.Fields{
+                       "msg_name": msg.GetMessageName(),
+                       "msg_crc":  msg.GetCrcString(),
+               }).Errorf("unable to retrieve message ID: %v", err)
+               return 0, fmt.Errorf("unable to retrieve message ID: %v", err)
+       }
+
+       return msgID, nil
+}
diff --git a/doc.go b/doc.go
new file mode 100644 (file)
index 0000000..3344d5a
--- /dev/null
+++ b/doc.go
@@ -0,0 +1,20 @@
+// Package govpp provides the entry point to govpp functionality. It provides the API for connecting the govpp core
+// to VPP either using the default VPP adapter, or using the adapter previously set by SetAdapter function
+// (useful mostly just for unit/integration tests with mocked VPP adapter).
+//
+// To create a connection to VPP, use govpp.Connect function:
+//
+//     conn, err := govpp.Connect()
+//     if err != nil {
+//             // handle error!
+//     }
+//     defer conn.Disconnect()
+//
+// Make sure you close the connection after using it. If the connection is not closed, it will leak resources. Please
+// note that only one VPP connection is allowed for a single process.
+//
+// In case you need to mock the connection to VPP (e.g. for testing), use the govpp.SetAdapter function before
+// calling govpp.Connect.
+//
+// Once connected to VPP, use the functions from the api package to communicate with it.
+package govpp
diff --git a/examples/bin_api/acl.api.json b/examples/bin_api/acl.api.json
new file mode 100644 (file)
index 0000000..1c2e2bf
--- /dev/null
@@ -0,0 +1,212 @@
+{
+    "types" : [
+        ["acl_rule",
+            ["u8", "is_permit"],
+            ["u8", "is_ipv6"],
+            ["u8", "src_ip_addr", 16],
+            ["u8", "src_ip_prefix_len"],
+            ["u8", "dst_ip_addr", 16],
+            ["u8", "dst_ip_prefix_len"],
+            ["u8", "proto"],
+            ["u16", "srcport_or_icmptype_first"],
+            ["u16", "srcport_or_icmptype_last"],
+            ["u16", "dstport_or_icmpcode_first"],
+            ["u16", "dstport_or_icmpcode_last"],
+            ["u8", "tcp_flags_mask"],
+            ["u8", "tcp_flags_value"],
+            {"crc" : "0x2715e1c0"}
+        ],
+        ["macip_acl_rule",
+            ["u8", "is_permit"],
+            ["u8", "is_ipv6"],
+            ["u8", "src_mac", 6],
+            ["u8", "src_mac_mask", 6],
+            ["u8", "src_ip_addr", 16],
+            ["u8", "src_ip_prefix_len"],
+            {"crc" : "0x6723f13e"}
+        ]
+    ],
+    "messages" : [
+        ["acl_plugin_get_version",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0xd7c07748"}
+        ],
+        ["acl_plugin_get_version_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "major"],
+            ["u32", "minor"],
+            {"crc" : "0x43eb59a5"}
+        ],
+        ["acl_add_replace",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            ["u8", "tag", 64],
+            ["u32", "count"],
+            ["vl_api_acl_rule_t", "r", 0, "count"],
+            {"crc" : "0x3c317936"}
+        ],
+        ["acl_add_replace_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            ["i32", "retval"],
+            {"crc" : "0xa5e6d0cf"}
+        ],
+        ["acl_del",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            {"crc" : "0x82cc30ed"}
+        ],
+        ["acl_del_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xbbb83d84"}
+        ],
+        ["acl_interface_add_del",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "is_add"],
+            ["u8", "is_input"],
+            ["u32", "sw_if_index"],
+            ["u32", "acl_index"],
+            {"crc" : "0x98b53725"}
+        ],
+        ["acl_interface_add_del_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xc1b3c077"}
+        ],
+        ["acl_interface_set_acl_list",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "count"],
+            ["u8", "n_input"],
+            ["u32", "acls", 0, "count"],
+            {"crc" : "0x7562419c"}
+        ],
+        ["acl_interface_set_acl_list_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x435ddc2b"}
+        ],
+        ["acl_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            {"crc" : "0xc188156d"}
+        ],
+        ["acl_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            ["u8", "tag", 64],
+            ["u32", "count"],
+            ["vl_api_acl_rule_t", "r", 0, "count"],
+            {"crc" : "0x1c8916b7"}
+        ],
+        ["acl_interface_list_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            {"crc" : "0xadfe84b8"}
+        ],
+        ["acl_interface_list_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "count"],
+            ["u8", "n_input"],
+            ["u32", "acls", 0, "count"],
+            {"crc" : "0xc8150656"}
+        ],
+        ["macip_acl_add",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "tag", 64],
+            ["u32", "count"],
+            ["vl_api_macip_acl_rule_t", "r", 0, "count"],
+            {"crc" : "0x33356284"}
+        ],
+        ["macip_acl_add_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            ["i32", "retval"],
+            {"crc" : "0x472edb4c"}
+        ],
+        ["macip_acl_del",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            {"crc" : "0xdde1141f"}
+        ],
+        ["macip_acl_del_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xeeb60e0f"}
+        ],
+        ["macip_acl_interface_add_del",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "is_add"],
+            ["u32", "sw_if_index"],
+            ["u32", "acl_index"],
+            {"crc" : "0x03a4fab2"}
+        ],
+        ["macip_acl_interface_add_del_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x9e9ee485"}
+        ],
+        ["macip_acl_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            {"crc" : "0xd38227cb"}
+        ],
+        ["macip_acl_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "acl_index"],
+            ["u8", "tag", 64],
+            ["u32", "count"],
+            ["vl_api_macip_acl_rule_t", "r", 0, "count"],
+            {"crc" : "0xee1c50db"}
+        ],
+        ["macip_acl_interface_get",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0x317ce31c"}
+        ],
+        ["macip_acl_interface_get_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "count"],
+            ["u32", "acls", 0, "count"],
+            {"crc" : "0x6c86a56c"}
+        ]
+    ],
+"vl_api_version" :"0x3cd02d84"
+}
diff --git a/examples/bin_api/acl/acl.go b/examples/bin_api/acl/acl.go
new file mode 100644 (file)
index 0000000..89b3805
--- /dev/null
@@ -0,0 +1,788 @@
+// Package acl represents the VPP binary API of the 'acl' VPP module.
+// DO NOT EDIT. Generated from 'bin_api/acl.api.json' on Fri, 21 Apr 2017 17:10:06 CEST.
+package acl
+
+import "gerrit.fd.io/r/govpp/api"
+
+// VlApiVersion contains version of the API.
+const VlAPIVersion = 0x3cd02d84
+
+// ACLRule represents the VPP binary API data type 'acl_rule'.
+// Generated from 'bin_api/acl.api.json', line 3:
+//
+//        ["acl_rule",
+//            ["u8", "is_permit"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "src_ip_addr", 16],
+//            ["u8", "src_ip_prefix_len"],
+//            ["u8", "dst_ip_addr", 16],
+//            ["u8", "dst_ip_prefix_len"],
+//            ["u8", "proto"],
+//            ["u16", "srcport_or_icmptype_first"],
+//            ["u16", "srcport_or_icmptype_last"],
+//            ["u16", "dstport_or_icmpcode_first"],
+//            ["u16", "dstport_or_icmpcode_last"],
+//            ["u8", "tcp_flags_mask"],
+//            ["u8", "tcp_flags_value"],
+//            {"crc" : "0x2715e1c0"}
+//        ],
+//
+type ACLRule struct {
+       IsPermit               uint8
+       IsIpv6                 uint8
+       SrcIPAddr              []byte `struc:"[16]byte"`
+       SrcIPPrefixLen         uint8
+       DstIPAddr              []byte `struc:"[16]byte"`
+       DstIPPrefixLen         uint8
+       Proto                  uint8
+       SrcportOrIcmptypeFirst uint16
+       SrcportOrIcmptypeLast  uint16
+       DstportOrIcmpcodeFirst uint16
+       DstportOrIcmpcodeLast  uint16
+       TCPFlagsMask           uint8
+       TCPFlagsValue          uint8
+}
+
+func (*ACLRule) GetTypeName() string {
+       return "acl_rule"
+}
+func (*ACLRule) GetCrcString() string {
+       return "2715e1c0"
+}
+
+// MacipACLRule represents the VPP binary API data type 'macip_acl_rule'.
+// Generated from 'bin_api/acl.api.json', line 19:
+//
+//        ["macip_acl_rule",
+//            ["u8", "is_permit"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "src_mac", 6],
+//            ["u8", "src_mac_mask", 6],
+//            ["u8", "src_ip_addr", 16],
+//            ["u8", "src_ip_prefix_len"],
+//            {"crc" : "0x6723f13e"}
+//        ]
+//
+type MacipACLRule struct {
+       IsPermit       uint8
+       IsIpv6         uint8
+       SrcMac         []byte `struc:"[6]byte"`
+       SrcMacMask     []byte `struc:"[6]byte"`
+       SrcIPAddr      []byte `struc:"[16]byte"`
+       SrcIPPrefixLen uint8
+}
+
+func (*MacipACLRule) GetTypeName() string {
+       return "macip_acl_rule"
+}
+func (*MacipACLRule) GetCrcString() string {
+       return "6723f13e"
+}
+
+// ACLPluginGetVersion represents the VPP binary API message 'acl_plugin_get_version'.
+// Generated from 'bin_api/acl.api.json', line 30:
+//
+//        ["acl_plugin_get_version",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0xd7c07748"}
+//        ],
+//
+type ACLPluginGetVersion struct {
+}
+
+func (*ACLPluginGetVersion) GetMessageName() string {
+       return "acl_plugin_get_version"
+}
+func (*ACLPluginGetVersion) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ACLPluginGetVersion) GetCrcString() string {
+       return "d7c07748"
+}
+func NewACLPluginGetVersion() api.Message {
+       return &ACLPluginGetVersion{}
+}
+
+// ACLPluginGetVersionReply represents the VPP binary API message 'acl_plugin_get_version_reply'.
+// Generated from 'bin_api/acl.api.json', line 36:
+//
+//        ["acl_plugin_get_version_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "major"],
+//            ["u32", "minor"],
+//            {"crc" : "0x43eb59a5"}
+//        ],
+//
+type ACLPluginGetVersionReply struct {
+       Major uint32
+       Minor uint32
+}
+
+func (*ACLPluginGetVersionReply) GetMessageName() string {
+       return "acl_plugin_get_version_reply"
+}
+func (*ACLPluginGetVersionReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ACLPluginGetVersionReply) GetCrcString() string {
+       return "43eb59a5"
+}
+func NewACLPluginGetVersionReply() api.Message {
+       return &ACLPluginGetVersionReply{}
+}
+
+// ACLAddReplace represents the VPP binary API message 'acl_add_replace'.
+// Generated from 'bin_api/acl.api.json', line 43:
+//
+//        ["acl_add_replace",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "acl_index"],
+//            ["u8", "tag", 64],
+//            ["u32", "count"],
+//            ["vl_api_acl_rule_t", "r", 0, "count"],
+//            {"crc" : "0x3c317936"}
+//        ],
+//
+type ACLAddReplace struct {
+       ACLIndex uint32
+       Tag      []byte `struc:"[64]byte"`
+       Count    uint32 `struc:"sizeof=R"`
+       R        []ACLRule
+}
+
+func (*ACLAddReplace) GetMessageName() string {
+       return "acl_add_replace"
+}
+func (*ACLAddReplace) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ACLAddReplace) GetCrcString() string {
+       return "3c317936"
+}
+func NewACLAddReplace() api.Message {
+       return &ACLAddReplace{}
+}
+
+// ACLAddReplaceReply represents the VPP binary API message 'acl_add_replace_reply'.
+// Generated from 'bin_api/acl.api.json', line 53:
+//
+//        ["acl_add_replace_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "acl_index"],
+//            ["i32", "retval"],
+//            {"crc" : "0xa5e6d0cf"}
+//        ],
+//
+type ACLAddReplaceReply struct {
+       ACLIndex uint32
+       Retval   int32
+}
+
+func (*ACLAddReplaceReply) GetMessageName() string {
+       return "acl_add_replace_reply"
+}
+func (*ACLAddReplaceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ACLAddReplaceReply) GetCrcString() string {
+       return "a5e6d0cf"
+}
+func NewACLAddReplaceReply() api.Message {
+       return &ACLAddReplaceReply{}
+}
+
+// ACLDel represents the VPP binary API message 'acl_del'.
+// Generated from 'bin_api/acl.api.json', line 60:
+//
+//        ["acl_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "acl_index"],
+//            {"crc" : "0x82cc30ed"}
+//        ],
+//
+type ACLDel struct {
+       ACLIndex uint32
+}
+
+func (*ACLDel) GetMessageName() string {
+       return "acl_del"
+}
+func (*ACLDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ACLDel) GetCrcString() string {
+       return "82cc30ed"
+}
+func NewACLDel() api.Message {
+       return &ACLDel{}
+}
+
+// ACLDelReply represents the VPP binary API message 'acl_del_reply'.
+// Generated from 'bin_api/acl.api.json', line 67:
+//
+//        ["acl_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xbbb83d84"}
+//        ],
+//
+type ACLDelReply struct {
+       Retval int32
+}
+
+func (*ACLDelReply) GetMessageName() string {
+       return "acl_del_reply"
+}
+func (*ACLDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ACLDelReply) GetCrcString() string {
+       return "bbb83d84"
+}
+func NewACLDelReply() api.Message {
+       return &ACLDelReply{}
+}
+
+// ACLInterfaceAddDel represents the VPP binary API message 'acl_interface_add_del'.
+// Generated from 'bin_api/acl.api.json', line 73:
+//
+//        ["acl_interface_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_add"],
+//            ["u8", "is_input"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "acl_index"],
+//            {"crc" : "0x98b53725"}
+//        ],
+//
+type ACLInterfaceAddDel struct {
+       IsAdd     uint8
+       IsInput   uint8
+       SwIfIndex uint32
+       ACLIndex  uint32
+}
+
+func (*ACLInterfaceAddDel) GetMessageName() string {
+       return "acl_interface_add_del"
+}
+func (*ACLInterfaceAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ACLInterfaceAddDel) GetCrcString() string {
+       return "98b53725"
+}
+func NewACLInterfaceAddDel() api.Message {
+       return &ACLInterfaceAddDel{}
+}
+
+// ACLInterfaceAddDelReply represents the VPP binary API message 'acl_interface_add_del_reply'.
+// Generated from 'bin_api/acl.api.json', line 83:
+//
+//        ["acl_interface_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xc1b3c077"}
+//        ],
+//
+type ACLInterfaceAddDelReply struct {
+       Retval int32
+}
+
+func (*ACLInterfaceAddDelReply) GetMessageName() string {
+       return "acl_interface_add_del_reply"
+}
+func (*ACLInterfaceAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ACLInterfaceAddDelReply) GetCrcString() string {
+       return "c1b3c077"
+}
+func NewACLInterfaceAddDelReply() api.Message {
+       return &ACLInterfaceAddDelReply{}
+}
+
+// ACLInterfaceSetACLList represents the VPP binary API message 'acl_interface_set_acl_list'.
+// Generated from 'bin_api/acl.api.json', line 89:
+//
+//        ["acl_interface_set_acl_list",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "count"],
+//            ["u8", "n_input"],
+//            ["u32", "acls", 0, "count"],
+//            {"crc" : "0x7562419c"}
+//        ],
+//
+type ACLInterfaceSetACLList struct {
+       SwIfIndex uint32
+       Count     uint8 `struc:"sizeof=Acls"`
+       NInput    uint8
+       Acls      []uint32
+}
+
+func (*ACLInterfaceSetACLList) GetMessageName() string {
+       return "acl_interface_set_acl_list"
+}
+func (*ACLInterfaceSetACLList) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ACLInterfaceSetACLList) GetCrcString() string {
+       return "7562419c"
+}
+func NewACLInterfaceSetACLList() api.Message {
+       return &ACLInterfaceSetACLList{}
+}
+
+// ACLInterfaceSetACLListReply represents the VPP binary API message 'acl_interface_set_acl_list_reply'.
+// Generated from 'bin_api/acl.api.json', line 99:
+//
+//        ["acl_interface_set_acl_list_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x435ddc2b"}
+//        ],
+//
+type ACLInterfaceSetACLListReply struct {
+       Retval int32
+}
+
+func (*ACLInterfaceSetACLListReply) GetMessageName() string {
+       return "acl_interface_set_acl_list_reply"
+}
+func (*ACLInterfaceSetACLListReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ACLInterfaceSetACLListReply) GetCrcString() string {
+       return "435ddc2b"
+}
+func NewACLInterfaceSetACLListReply() api.Message {
+       return &ACLInterfaceSetACLListReply{}
+}
+
+// ACLDump represents the VPP binary API message 'acl_dump'.
+// Generated from 'bin_api/acl.api.json', line 105:
+//
+//        ["acl_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "acl_index"],
+//            {"crc" : "0xc188156d"}
+//        ],
+//
+type ACLDump struct {
+       ACLIndex uint32
+}
+
+func (*ACLDump) GetMessageName() string {
+       return "acl_dump"
+}
+func (*ACLDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ACLDump) GetCrcString() string {
+       return "c188156d"
+}
+func NewACLDump() api.Message {
+       return &ACLDump{}
+}
+
+// ACLDetails represents the VPP binary API message 'acl_details'.
+// Generated from 'bin_api/acl.api.json', line 112:
+//
+//        ["acl_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "acl_index"],
+//            ["u8", "tag", 64],
+//            ["u32", "count"],
+//            ["vl_api_acl_rule_t", "r", 0, "count"],
+//            {"crc" : "0x1c8916b7"}
+//        ],
+//
+type ACLDetails struct {
+       ACLIndex uint32
+       Tag      []byte `struc:"[64]byte"`
+       Count    uint32 `struc:"sizeof=R"`
+       R        []ACLRule
+}
+
+func (*ACLDetails) GetMessageName() string {
+       return "acl_details"
+}
+func (*ACLDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ACLDetails) GetCrcString() string {
+       return "1c8916b7"
+}
+func NewACLDetails() api.Message {
+       return &ACLDetails{}
+}
+
+// ACLInterfaceListDump represents the VPP binary API message 'acl_interface_list_dump'.
+// Generated from 'bin_api/acl.api.json', line 121:
+//
+//        ["acl_interface_list_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0xadfe84b8"}
+//        ],
+//
+type ACLInterfaceListDump struct {
+       SwIfIndex uint32
+}
+
+func (*ACLInterfaceListDump) GetMessageName() string {
+       return "acl_interface_list_dump"
+}
+func (*ACLInterfaceListDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ACLInterfaceListDump) GetCrcString() string {
+       return "adfe84b8"
+}
+func NewACLInterfaceListDump() api.Message {
+       return &ACLInterfaceListDump{}
+}
+
+// ACLInterfaceListDetails represents the VPP binary API message 'acl_interface_list_details'.
+// Generated from 'bin_api/acl.api.json', line 128:
+//
+//        ["acl_interface_list_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "count"],
+//            ["u8", "n_input"],
+//            ["u32", "acls", 0, "count"],
+//            {"crc" : "0xc8150656"}
+//        ],
+//
+type ACLInterfaceListDetails struct {
+       SwIfIndex uint32
+       Count     uint8 `struc:"sizeof=Acls"`
+       NInput    uint8
+       Acls      []uint32
+}
+
+func (*ACLInterfaceListDetails) GetMessageName() string {
+       return "acl_interface_list_details"
+}
+func (*ACLInterfaceListDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ACLInterfaceListDetails) GetCrcString() string {
+       return "c8150656"
+}
+func NewACLInterfaceListDetails() api.Message {
+       return &ACLInterfaceListDetails{}
+}
+
+// MacipACLAdd represents the VPP binary API message 'macip_acl_add'.
+// Generated from 'bin_api/acl.api.json', line 137:
+//
+//        ["macip_acl_add",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "tag", 64],
+//            ["u32", "count"],
+//            ["vl_api_macip_acl_rule_t", "r", 0, "count"],
+//            {"crc" : "0x33356284"}
+//        ],
+//
+type MacipACLAdd struct {
+       Tag   []byte `struc:"[64]byte"`
+       Count uint32 `struc:"sizeof=R"`
+       R     []MacipACLRule
+}
+
+func (*MacipACLAdd) GetMessageName() string {
+       return "macip_acl_add"
+}
+func (*MacipACLAdd) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MacipACLAdd) GetCrcString() string {
+       return "33356284"
+}
+func NewMacipACLAdd() api.Message {
+       return &MacipACLAdd{}
+}
+
+// MacipACLAddReply represents the VPP binary API message 'macip_acl_add_reply'.
+// Generated from 'bin_api/acl.api.json', line 146:
+//
+//        ["macip_acl_add_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "acl_index"],
+//            ["i32", "retval"],
+//            {"crc" : "0x472edb4c"}
+//        ],
+//
+type MacipACLAddReply struct {
+       ACLIndex uint32
+       Retval   int32
+}
+
+func (*MacipACLAddReply) GetMessageName() string {
+       return "macip_acl_add_reply"
+}
+func (*MacipACLAddReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*MacipACLAddReply) GetCrcString() string {
+       return "472edb4c"
+}
+func NewMacipACLAddReply() api.Message {
+       return &MacipACLAddReply{}
+}
+
+// MacipACLDel represents the VPP binary API message 'macip_acl_del'.
+// Generated from 'bin_api/acl.api.json', line 153:
+//
+//        ["macip_acl_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "acl_index"],
+//            {"crc" : "0xdde1141f"}
+//        ],
+//
+type MacipACLDel struct {
+       ACLIndex uint32
+}
+
+func (*MacipACLDel) GetMessageName() string {
+       return "macip_acl_del"
+}
+func (*MacipACLDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MacipACLDel) GetCrcString() string {
+       return "dde1141f"
+}
+func NewMacipACLDel() api.Message {
+       return &MacipACLDel{}
+}
+
+// MacipACLDelReply represents the VPP binary API message 'macip_acl_del_reply'.
+// Generated from 'bin_api/acl.api.json', line 160:
+//
+//        ["macip_acl_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xeeb60e0f"}
+//        ],
+//
+type MacipACLDelReply struct {
+       Retval int32
+}
+
+func (*MacipACLDelReply) GetMessageName() string {
+       return "macip_acl_del_reply"
+}
+func (*MacipACLDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*MacipACLDelReply) GetCrcString() string {
+       return "eeb60e0f"
+}
+func NewMacipACLDelReply() api.Message {
+       return &MacipACLDelReply{}
+}
+
+// MacipACLInterfaceAddDel represents the VPP binary API message 'macip_acl_interface_add_del'.
+// Generated from 'bin_api/acl.api.json', line 166:
+//
+//        ["macip_acl_interface_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_add"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "acl_index"],
+//            {"crc" : "0x03a4fab2"}
+//        ],
+//
+type MacipACLInterfaceAddDel struct {
+       IsAdd     uint8
+       SwIfIndex uint32
+       ACLIndex  uint32
+}
+
+func (*MacipACLInterfaceAddDel) GetMessageName() string {
+       return "macip_acl_interface_add_del"
+}
+func (*MacipACLInterfaceAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MacipACLInterfaceAddDel) GetCrcString() string {
+       return "03a4fab2"
+}
+func NewMacipACLInterfaceAddDel() api.Message {
+       return &MacipACLInterfaceAddDel{}
+}
+
+// MacipACLInterfaceAddDelReply represents the VPP binary API message 'macip_acl_interface_add_del_reply'.
+// Generated from 'bin_api/acl.api.json', line 175:
+//
+//        ["macip_acl_interface_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x9e9ee485"}
+//        ],
+//
+type MacipACLInterfaceAddDelReply struct {
+       Retval int32
+}
+
+func (*MacipACLInterfaceAddDelReply) GetMessageName() string {
+       return "macip_acl_interface_add_del_reply"
+}
+func (*MacipACLInterfaceAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*MacipACLInterfaceAddDelReply) GetCrcString() string {
+       return "9e9ee485"
+}
+func NewMacipACLInterfaceAddDelReply() api.Message {
+       return &MacipACLInterfaceAddDelReply{}
+}
+
+// MacipACLDump represents the VPP binary API message 'macip_acl_dump'.
+// Generated from 'bin_api/acl.api.json', line 181:
+//
+//        ["macip_acl_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "acl_index"],
+//            {"crc" : "0xd38227cb"}
+//        ],
+//
+type MacipACLDump struct {
+       ACLIndex uint32
+}
+
+func (*MacipACLDump) GetMessageName() string {
+       return "macip_acl_dump"
+}
+func (*MacipACLDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MacipACLDump) GetCrcString() string {
+       return "d38227cb"
+}
+func NewMacipACLDump() api.Message {
+       return &MacipACLDump{}
+}
+
+// MacipACLDetails represents the VPP binary API message 'macip_acl_details'.
+// Generated from 'bin_api/acl.api.json', line 188:
+//
+//        ["macip_acl_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "acl_index"],
+//            ["u8", "tag", 64],
+//            ["u32", "count"],
+//            ["vl_api_macip_acl_rule_t", "r", 0, "count"],
+//            {"crc" : "0xee1c50db"}
+//        ],
+//
+type MacipACLDetails struct {
+       ACLIndex uint32
+       Tag      []byte `struc:"[64]byte"`
+       Count    uint32 `struc:"sizeof=R"`
+       R        []MacipACLRule
+}
+
+func (*MacipACLDetails) GetMessageName() string {
+       return "macip_acl_details"
+}
+func (*MacipACLDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*MacipACLDetails) GetCrcString() string {
+       return "ee1c50db"
+}
+func NewMacipACLDetails() api.Message {
+       return &MacipACLDetails{}
+}
+
+// MacipACLInterfaceGet represents the VPP binary API message 'macip_acl_interface_get'.
+// Generated from 'bin_api/acl.api.json', line 197:
+//
+//        ["macip_acl_interface_get",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0x317ce31c"}
+//        ],
+//
+type MacipACLInterfaceGet struct {
+}
+
+func (*MacipACLInterfaceGet) GetMessageName() string {
+       return "macip_acl_interface_get"
+}
+func (*MacipACLInterfaceGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MacipACLInterfaceGet) GetCrcString() string {
+       return "317ce31c"
+}
+func NewMacipACLInterfaceGet() api.Message {
+       return &MacipACLInterfaceGet{}
+}
+
+// MacipACLInterfaceGetReply represents the VPP binary API message 'macip_acl_interface_get_reply'.
+// Generated from 'bin_api/acl.api.json', line 203:
+//
+//        ["macip_acl_interface_get_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "count"],
+//            ["u32", "acls", 0, "count"],
+//            {"crc" : "0x6c86a56c"}
+//        ]
+//
+type MacipACLInterfaceGetReply struct {
+       Count uint32 `struc:"sizeof=Acls"`
+       Acls  []uint32
+}
+
+func (*MacipACLInterfaceGetReply) GetMessageName() string {
+       return "macip_acl_interface_get_reply"
+}
+func (*MacipACLInterfaceGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*MacipACLInterfaceGetReply) GetCrcString() string {
+       return "6c86a56c"
+}
+func NewMacipACLInterfaceGetReply() api.Message {
+       return &MacipACLInterfaceGetReply{}
+}
diff --git a/examples/bin_api/af_packet.api.json b/examples/bin_api/af_packet.api.json
new file mode 100644 (file)
index 0000000..211fc3e
--- /dev/null
@@ -0,0 +1,37 @@
+{
+    "types" : [
+
+    ],
+    "messages" : [
+        ["af_packet_create",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "host_if_name", 64],
+            ["u8", "hw_addr", 6],
+            ["u8", "use_random_hw_addr"],
+            {"crc" : "0x92768640"}
+        ],
+        ["af_packet_create_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            ["u32", "sw_if_index"],
+            {"crc" : "0x718bac92"}
+        ],
+        ["af_packet_delete",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "host_if_name", 64],
+            {"crc" : "0xc063ce85"}
+        ],
+        ["af_packet_delete_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x1a80431a"}
+        ]
+    ],
+"vl_api_version" :"0x4ca71f33"
+}
diff --git a/examples/bin_api/af_packet/af_packet.go b/examples/bin_api/af_packet/af_packet.go
new file mode 100644 (file)
index 0000000..4b89e76
--- /dev/null
@@ -0,0 +1,124 @@
+// Package af_packet represents the VPP binary API of the 'af_packet' VPP module.
+// DO NOT EDIT. Generated from 'bin_api/af_packet.api.json' on Fri, 21 Apr 2017 17:10:06 CEST.
+package af_packet
+
+import "gerrit.fd.io/r/govpp/api"
+
+// VlApiVersion contains version of the API.
+const VlAPIVersion = 0x4ca71f33
+
+// AfPacketCreate represents the VPP binary API message 'af_packet_create'.
+// Generated from 'bin_api/af_packet.api.json', line 6:
+//
+//        ["af_packet_create",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "host_if_name", 64],
+//            ["u8", "hw_addr", 6],
+//            ["u8", "use_random_hw_addr"],
+//            {"crc" : "0x92768640"}
+//        ],
+//
+type AfPacketCreate struct {
+       HostIfName      []byte `struc:"[64]byte"`
+       HwAddr          []byte `struc:"[6]byte"`
+       UseRandomHwAddr uint8
+}
+
+func (*AfPacketCreate) GetMessageName() string {
+       return "af_packet_create"
+}
+func (*AfPacketCreate) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*AfPacketCreate) GetCrcString() string {
+       return "92768640"
+}
+func NewAfPacketCreate() api.Message {
+       return &AfPacketCreate{}
+}
+
+// AfPacketCreateReply represents the VPP binary API message 'af_packet_create_reply'.
+// Generated from 'bin_api/af_packet.api.json', line 15:
+//
+//        ["af_packet_create_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0x718bac92"}
+//        ],
+//
+type AfPacketCreateReply struct {
+       Retval    int32
+       SwIfIndex uint32
+}
+
+func (*AfPacketCreateReply) GetMessageName() string {
+       return "af_packet_create_reply"
+}
+func (*AfPacketCreateReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*AfPacketCreateReply) GetCrcString() string {
+       return "718bac92"
+}
+func NewAfPacketCreateReply() api.Message {
+       return &AfPacketCreateReply{}
+}
+
+// AfPacketDelete represents the VPP binary API message 'af_packet_delete'.
+// Generated from 'bin_api/af_packet.api.json', line 22:
+//
+//        ["af_packet_delete",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "host_if_name", 64],
+//            {"crc" : "0xc063ce85"}
+//        ],
+//
+type AfPacketDelete struct {
+       HostIfName []byte `struc:"[64]byte"`
+}
+
+func (*AfPacketDelete) GetMessageName() string {
+       return "af_packet_delete"
+}
+func (*AfPacketDelete) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*AfPacketDelete) GetCrcString() string {
+       return "c063ce85"
+}
+func NewAfPacketDelete() api.Message {
+       return &AfPacketDelete{}
+}
+
+// AfPacketDeleteReply represents the VPP binary API message 'af_packet_delete_reply'.
+// Generated from 'bin_api/af_packet.api.json', line 29:
+//
+//        ["af_packet_delete_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x1a80431a"}
+//        ]
+//
+type AfPacketDeleteReply struct {
+       Retval int32
+}
+
+func (*AfPacketDeleteReply) GetMessageName() string {
+       return "af_packet_delete_reply"
+}
+func (*AfPacketDeleteReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*AfPacketDeleteReply) GetCrcString() string {
+       return "1a80431a"
+}
+func NewAfPacketDeleteReply() api.Message {
+       return &AfPacketDeleteReply{}
+}
diff --git a/examples/bin_api/interface.api.json b/examples/bin_api/interface.api.json
new file mode 100644 (file)
index 0000000..81f81bd
--- /dev/null
@@ -0,0 +1,195 @@
+{
+    "types" : [
+
+    ],
+    "messages" : [
+        ["sw_interface_set_flags",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "admin_up_down"],
+            ["u8", "link_up_down"],
+            ["u8", "deleted"],
+            {"crc" : "0xc230f9b1"}
+        ],
+        ["sw_interface_set_flags_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xdfbf3afa"}
+        ],
+        ["sw_interface_set_mtu",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u16", "mtu"],
+            {"crc" : "0x535dab1d"}
+        ],
+        ["sw_interface_set_mtu_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x0cc22552"}
+        ],
+        ["want_interface_events",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "enable_disable"],
+            ["u32", "pid"],
+            {"crc" : "0xa0cbf57e"}
+        ],
+        ["want_interface_events_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x33788c73"}
+        ],
+        ["sw_interface_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u32", "sup_sw_if_index"],
+            ["u32", "l2_address_length"],
+            ["u8", "l2_address", 8],
+            ["u8", "interface_name", 64],
+            ["u8", "admin_up_down"],
+            ["u8", "link_up_down"],
+            ["u8", "link_duplex"],
+            ["u8", "link_speed"],
+            ["u16", "link_mtu"],
+            ["u32", "sub_id"],
+            ["u8", "sub_dot1ad"],
+            ["u8", "sub_dot1ah"],
+            ["u8", "sub_number_of_tags"],
+            ["u16", "sub_outer_vlan_id"],
+            ["u16", "sub_inner_vlan_id"],
+            ["u8", "sub_exact_match"],
+            ["u8", "sub_default"],
+            ["u8", "sub_outer_vlan_id_any"],
+            ["u8", "sub_inner_vlan_id_any"],
+            ["u32", "vtr_op"],
+            ["u32", "vtr_push_dot1q"],
+            ["u32", "vtr_tag1"],
+            ["u32", "vtr_tag2"],
+            ["u8", "tag", 64],
+            ["u16", "outer_tag"],
+            ["u8", "b_dmac", 6],
+            ["u8", "b_smac", 6],
+            ["u16", "b_vlanid"],
+            ["u32", "i_sid"],
+            {"crc" : "0xe2d855bb"}
+        ],
+        ["sw_interface_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "name_filter_valid"],
+            ["u8", "name_filter", 49],
+            {"crc" : "0x9a2f9d4d"}
+        ],
+        ["sw_interface_add_del_address",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_add"],
+            ["u8", "is_ipv6"],
+            ["u8", "del_all"],
+            ["u8", "address_length"],
+            ["u8", "address", 16],
+            {"crc" : "0x4e24d2df"}
+        ],
+        ["sw_interface_add_del_address_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xabe29452"}
+        ],
+        ["sw_interface_set_table",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_ipv6"],
+            ["u32", "vrf_id"],
+            {"crc" : "0xa94df510"}
+        ],
+        ["sw_interface_set_table_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x99df273c"}
+        ],
+        ["sw_interface_get_table",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0xf5a1d557"}
+        ],
+        ["sw_interface_get_table_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            ["u32", "vrf_id"],
+            {"crc" : "0xab44111d"}
+        ],
+        ["vnet_interface_counters",
+            ["u16", "_vl_msg_id"],
+            ["u8", "vnet_counter_type"],
+            ["u8", "is_combined"],
+            ["u32", "first_sw_if_index"],
+            ["u32", "count"],
+            ["u8", "data", 0, "count"],
+            {"crc" : "0x312082b4"}
+        ],
+        ["sw_interface_set_unnumbered",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u32", "unnumbered_sw_if_index"],
+            ["u8", "is_add"],
+            {"crc" : "0xee0047b0"}
+        ],
+        ["sw_interface_set_unnumbered_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x5b2275e1"}
+        ],
+        ["sw_interface_clear_stats",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            {"crc" : "0x9600fd50"}
+        ],
+        ["sw_interface_clear_stats_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x21f50dd9"}
+        ],
+        ["sw_interface_tag_add_del",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "is_add"],
+            ["u32", "sw_if_index"],
+            ["u8", "tag", 64],
+            {"crc" : "0x50ae8d92"}
+        ],
+        ["sw_interface_tag_add_del_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x761cbcb0"}
+        ]
+    ],
+"vl_api_version" :"0x6857f668"
+}
diff --git a/examples/bin_api/interfaces/interfaces.go b/examples/bin_api/interfaces/interfaces.go
new file mode 100644 (file)
index 0000000..b0424f0
--- /dev/null
@@ -0,0 +1,688 @@
+// Package interfaces represents the VPP binary API of the 'interfaces' VPP module.
+// DO NOT EDIT. Generated from 'bin_api/interface.api.json' on Fri, 21 Apr 2017 17:10:06 CEST.
+package interfaces
+
+import "gerrit.fd.io/r/govpp/api"
+
+// VlApiVersion contains version of the API.
+const VlAPIVersion = 0x6857f668
+
+// SwInterfaceSetFlags represents the VPP binary API message 'sw_interface_set_flags'.
+// Generated from 'bin_api/interface.api.json', line 6:
+//
+//        ["sw_interface_set_flags",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "admin_up_down"],
+//            ["u8", "link_up_down"],
+//            ["u8", "deleted"],
+//            {"crc" : "0xc230f9b1"}
+//        ],
+//
+type SwInterfaceSetFlags struct {
+       SwIfIndex   uint32
+       AdminUpDown uint8
+       LinkUpDown  uint8
+       Deleted     uint8
+}
+
+func (*SwInterfaceSetFlags) GetMessageName() string {
+       return "sw_interface_set_flags"
+}
+func (*SwInterfaceSetFlags) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceSetFlags) GetCrcString() string {
+       return "c230f9b1"
+}
+func NewSwInterfaceSetFlags() api.Message {
+       return &SwInterfaceSetFlags{}
+}
+
+// SwInterfaceSetFlagsReply represents the VPP binary API message 'sw_interface_set_flags_reply'.
+// Generated from 'bin_api/interface.api.json', line 16:
+//
+//        ["sw_interface_set_flags_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xdfbf3afa"}
+//        ],
+//
+type SwInterfaceSetFlagsReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceSetFlagsReply) GetMessageName() string {
+       return "sw_interface_set_flags_reply"
+}
+func (*SwInterfaceSetFlagsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceSetFlagsReply) GetCrcString() string {
+       return "dfbf3afa"
+}
+func NewSwInterfaceSetFlagsReply() api.Message {
+       return &SwInterfaceSetFlagsReply{}
+}
+
+// SwInterfaceSetMtu represents the VPP binary API message 'sw_interface_set_mtu'.
+// Generated from 'bin_api/interface.api.json', line 22:
+//
+//        ["sw_interface_set_mtu",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u16", "mtu"],
+//            {"crc" : "0x535dab1d"}
+//        ],
+//
+type SwInterfaceSetMtu struct {
+       SwIfIndex uint32
+       Mtu       uint16
+}
+
+func (*SwInterfaceSetMtu) GetMessageName() string {
+       return "sw_interface_set_mtu"
+}
+func (*SwInterfaceSetMtu) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceSetMtu) GetCrcString() string {
+       return "535dab1d"
+}
+func NewSwInterfaceSetMtu() api.Message {
+       return &SwInterfaceSetMtu{}
+}
+
+// SwInterfaceSetMtuReply represents the VPP binary API message 'sw_interface_set_mtu_reply'.
+// Generated from 'bin_api/interface.api.json', line 30:
+//
+//        ["sw_interface_set_mtu_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x0cc22552"}
+//        ],
+//
+type SwInterfaceSetMtuReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceSetMtuReply) GetMessageName() string {
+       return "sw_interface_set_mtu_reply"
+}
+func (*SwInterfaceSetMtuReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceSetMtuReply) GetCrcString() string {
+       return "0cc22552"
+}
+func NewSwInterfaceSetMtuReply() api.Message {
+       return &SwInterfaceSetMtuReply{}
+}
+
+// WantInterfaceEvents represents the VPP binary API message 'want_interface_events'.
+// Generated from 'bin_api/interface.api.json', line 36:
+//
+//        ["want_interface_events",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "enable_disable"],
+//            ["u32", "pid"],
+//            {"crc" : "0xa0cbf57e"}
+//        ],
+//
+type WantInterfaceEvents struct {
+       EnableDisable uint32
+       Pid           uint32
+}
+
+func (*WantInterfaceEvents) GetMessageName() string {
+       return "want_interface_events"
+}
+func (*WantInterfaceEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantInterfaceEvents) GetCrcString() string {
+       return "a0cbf57e"
+}
+func NewWantInterfaceEvents() api.Message {
+       return &WantInterfaceEvents{}
+}
+
+// WantInterfaceEventsReply represents the VPP binary API message 'want_interface_events_reply'.
+// Generated from 'bin_api/interface.api.json', line 44:
+//
+//        ["want_interface_events_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x33788c73"}
+//        ],
+//
+type WantInterfaceEventsReply struct {
+       Retval int32
+}
+
+func (*WantInterfaceEventsReply) GetMessageName() string {
+       return "want_interface_events_reply"
+}
+func (*WantInterfaceEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantInterfaceEventsReply) GetCrcString() string {
+       return "33788c73"
+}
+func NewWantInterfaceEventsReply() api.Message {
+       return &WantInterfaceEventsReply{}
+}
+
+// SwInterfaceDetails represents the VPP binary API message 'sw_interface_details'.
+// Generated from 'bin_api/interface.api.json', line 50:
+//
+//        ["sw_interface_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "sup_sw_if_index"],
+//            ["u32", "l2_address_length"],
+//            ["u8", "l2_address", 8],
+//            ["u8", "interface_name", 64],
+//            ["u8", "admin_up_down"],
+//            ["u8", "link_up_down"],
+//            ["u8", "link_duplex"],
+//            ["u8", "link_speed"],
+//            ["u16", "link_mtu"],
+//            ["u32", "sub_id"],
+//            ["u8", "sub_dot1ad"],
+//            ["u8", "sub_dot1ah"],
+//            ["u8", "sub_number_of_tags"],
+//            ["u16", "sub_outer_vlan_id"],
+//            ["u16", "sub_inner_vlan_id"],
+//            ["u8", "sub_exact_match"],
+//            ["u8", "sub_default"],
+//            ["u8", "sub_outer_vlan_id_any"],
+//            ["u8", "sub_inner_vlan_id_any"],
+//            ["u32", "vtr_op"],
+//            ["u32", "vtr_push_dot1q"],
+//            ["u32", "vtr_tag1"],
+//            ["u32", "vtr_tag2"],
+//            ["u8", "tag", 64],
+//            ["u16", "outer_tag"],
+//            ["u8", "b_dmac", 6],
+//            ["u8", "b_smac", 6],
+//            ["u16", "b_vlanid"],
+//            ["u32", "i_sid"],
+//            {"crc" : "0xe2d855bb"}
+//        ],
+//
+type SwInterfaceDetails struct {
+       SwIfIndex         uint32
+       SupSwIfIndex      uint32
+       L2AddressLength   uint32
+       L2Address         []byte `struc:"[8]byte"`
+       InterfaceName     []byte `struc:"[64]byte"`
+       AdminUpDown       uint8
+       LinkUpDown        uint8
+       LinkDuplex        uint8
+       LinkSpeed         uint8
+       LinkMtu           uint16
+       SubID             uint32
+       SubDot1ad         uint8
+       SubDot1ah         uint8
+       SubNumberOfTags   uint8
+       SubOuterVlanID    uint16
+       SubInnerVlanID    uint16
+       SubExactMatch     uint8
+       SubDefault        uint8
+       SubOuterVlanIDAny uint8
+       SubInnerVlanIDAny uint8
+       VtrOp             uint32
+       VtrPushDot1q      uint32
+       VtrTag1           uint32
+       VtrTag2           uint32
+       Tag               []byte `struc:"[64]byte"`
+       OuterTag          uint16
+       BDmac             []byte `struc:"[6]byte"`
+       BSmac             []byte `struc:"[6]byte"`
+       BVlanid           uint16
+       ISid              uint32
+}
+
+func (*SwInterfaceDetails) GetMessageName() string {
+       return "sw_interface_details"
+}
+func (*SwInterfaceDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceDetails) GetCrcString() string {
+       return "e2d855bb"
+}
+func NewSwInterfaceDetails() api.Message {
+       return &SwInterfaceDetails{}
+}
+
+// SwInterfaceDump represents the VPP binary API message 'sw_interface_dump'.
+// Generated from 'bin_api/interface.api.json', line 85:
+//
+//        ["sw_interface_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "name_filter_valid"],
+//            ["u8", "name_filter", 49],
+//            {"crc" : "0x9a2f9d4d"}
+//        ],
+//
+type SwInterfaceDump struct {
+       NameFilterValid uint8
+       NameFilter      []byte `struc:"[49]byte"`
+}
+
+func (*SwInterfaceDump) GetMessageName() string {
+       return "sw_interface_dump"
+}
+func (*SwInterfaceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceDump) GetCrcString() string {
+       return "9a2f9d4d"
+}
+func NewSwInterfaceDump() api.Message {
+       return &SwInterfaceDump{}
+}
+
+// SwInterfaceAddDelAddress represents the VPP binary API message 'sw_interface_add_del_address'.
+// Generated from 'bin_api/interface.api.json', line 93:
+//
+//        ["sw_interface_add_del_address",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "is_add"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "del_all"],
+//            ["u8", "address_length"],
+//            ["u8", "address", 16],
+//            {"crc" : "0x4e24d2df"}
+//        ],
+//
+type SwInterfaceAddDelAddress struct {
+       SwIfIndex     uint32
+       IsAdd         uint8
+       IsIpv6        uint8
+       DelAll        uint8
+       AddressLength uint8
+       Address       []byte `struc:"[16]byte"`
+}
+
+func (*SwInterfaceAddDelAddress) GetMessageName() string {
+       return "sw_interface_add_del_address"
+}
+func (*SwInterfaceAddDelAddress) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceAddDelAddress) GetCrcString() string {
+       return "4e24d2df"
+}
+func NewSwInterfaceAddDelAddress() api.Message {
+       return &SwInterfaceAddDelAddress{}
+}
+
+// SwInterfaceAddDelAddressReply represents the VPP binary API message 'sw_interface_add_del_address_reply'.
+// Generated from 'bin_api/interface.api.json', line 105:
+//
+//        ["sw_interface_add_del_address_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xabe29452"}
+//        ],
+//
+type SwInterfaceAddDelAddressReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceAddDelAddressReply) GetMessageName() string {
+       return "sw_interface_add_del_address_reply"
+}
+func (*SwInterfaceAddDelAddressReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceAddDelAddressReply) GetCrcString() string {
+       return "abe29452"
+}
+func NewSwInterfaceAddDelAddressReply() api.Message {
+       return &SwInterfaceAddDelAddressReply{}
+}
+
+// SwInterfaceSetTable represents the VPP binary API message 'sw_interface_set_table'.
+// Generated from 'bin_api/interface.api.json', line 111:
+//
+//        ["sw_interface_set_table",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "is_ipv6"],
+//            ["u32", "vrf_id"],
+//            {"crc" : "0xa94df510"}
+//        ],
+//
+type SwInterfaceSetTable struct {
+       SwIfIndex uint32
+       IsIpv6    uint8
+       VrfID     uint32
+}
+
+func (*SwInterfaceSetTable) GetMessageName() string {
+       return "sw_interface_set_table"
+}
+func (*SwInterfaceSetTable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceSetTable) GetCrcString() string {
+       return "a94df510"
+}
+func NewSwInterfaceSetTable() api.Message {
+       return &SwInterfaceSetTable{}
+}
+
+// SwInterfaceSetTableReply represents the VPP binary API message 'sw_interface_set_table_reply'.
+// Generated from 'bin_api/interface.api.json', line 120:
+//
+//        ["sw_interface_set_table_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x99df273c"}
+//        ],
+//
+type SwInterfaceSetTableReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceSetTableReply) GetMessageName() string {
+       return "sw_interface_set_table_reply"
+}
+func (*SwInterfaceSetTableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceSetTableReply) GetCrcString() string {
+       return "99df273c"
+}
+func NewSwInterfaceSetTableReply() api.Message {
+       return &SwInterfaceSetTableReply{}
+}
+
+// SwInterfaceGetTable represents the VPP binary API message 'sw_interface_get_table'.
+// Generated from 'bin_api/interface.api.json', line 126:
+//
+//        ["sw_interface_get_table",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "is_ipv6"],
+//            {"crc" : "0xf5a1d557"}
+//        ],
+//
+type SwInterfaceGetTable struct {
+       SwIfIndex uint32
+       IsIpv6    uint8
+}
+
+func (*SwInterfaceGetTable) GetMessageName() string {
+       return "sw_interface_get_table"
+}
+func (*SwInterfaceGetTable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceGetTable) GetCrcString() string {
+       return "f5a1d557"
+}
+func NewSwInterfaceGetTable() api.Message {
+       return &SwInterfaceGetTable{}
+}
+
+// SwInterfaceGetTableReply represents the VPP binary API message 'sw_interface_get_table_reply'.
+// Generated from 'bin_api/interface.api.json', line 134:
+//
+//        ["sw_interface_get_table_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "vrf_id"],
+//            {"crc" : "0xab44111d"}
+//        ],
+//
+type SwInterfaceGetTableReply struct {
+       Retval int32
+       VrfID  uint32
+}
+
+func (*SwInterfaceGetTableReply) GetMessageName() string {
+       return "sw_interface_get_table_reply"
+}
+func (*SwInterfaceGetTableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceGetTableReply) GetCrcString() string {
+       return "ab44111d"
+}
+func NewSwInterfaceGetTableReply() api.Message {
+       return &SwInterfaceGetTableReply{}
+}
+
+// VnetInterfaceCounters represents the VPP binary API message 'vnet_interface_counters'.
+// Generated from 'bin_api/interface.api.json', line 141:
+//
+//        ["vnet_interface_counters",
+//            ["u16", "_vl_msg_id"],
+//            ["u8", "vnet_counter_type"],
+//            ["u8", "is_combined"],
+//            ["u32", "first_sw_if_index"],
+//            ["u32", "count"],
+//            ["u8", "data", 0, "count"],
+//            {"crc" : "0x312082b4"}
+//        ],
+//
+type VnetInterfaceCounters struct {
+       VnetCounterType uint8
+       IsCombined      uint8
+       FirstSwIfIndex  uint32
+       Count           uint32 `struc:"sizeof=Data"`
+       Data            []byte
+}
+
+func (*VnetInterfaceCounters) GetMessageName() string {
+       return "vnet_interface_counters"
+}
+func (*VnetInterfaceCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetInterfaceCounters) GetCrcString() string {
+       return "312082b4"
+}
+func NewVnetInterfaceCounters() api.Message {
+       return &VnetInterfaceCounters{}
+}
+
+// SwInterfaceSetUnnumbered represents the VPP binary API message 'sw_interface_set_unnumbered'.
+// Generated from 'bin_api/interface.api.json', line 150:
+//
+//        ["sw_interface_set_unnumbered",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "unnumbered_sw_if_index"],
+//            ["u8", "is_add"],
+//            {"crc" : "0xee0047b0"}
+//        ],
+//
+type SwInterfaceSetUnnumbered struct {
+       SwIfIndex           uint32
+       UnnumberedSwIfIndex uint32
+       IsAdd               uint8
+}
+
+func (*SwInterfaceSetUnnumbered) GetMessageName() string {
+       return "sw_interface_set_unnumbered"
+}
+func (*SwInterfaceSetUnnumbered) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceSetUnnumbered) GetCrcString() string {
+       return "ee0047b0"
+}
+func NewSwInterfaceSetUnnumbered() api.Message {
+       return &SwInterfaceSetUnnumbered{}
+}
+
+// SwInterfaceSetUnnumberedReply represents the VPP binary API message 'sw_interface_set_unnumbered_reply'.
+// Generated from 'bin_api/interface.api.json', line 159:
+//
+//        ["sw_interface_set_unnumbered_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x5b2275e1"}
+//        ],
+//
+type SwInterfaceSetUnnumberedReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceSetUnnumberedReply) GetMessageName() string {
+       return "sw_interface_set_unnumbered_reply"
+}
+func (*SwInterfaceSetUnnumberedReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceSetUnnumberedReply) GetCrcString() string {
+       return "5b2275e1"
+}
+func NewSwInterfaceSetUnnumberedReply() api.Message {
+       return &SwInterfaceSetUnnumberedReply{}
+}
+
+// SwInterfaceClearStats represents the VPP binary API message 'sw_interface_clear_stats'.
+// Generated from 'bin_api/interface.api.json', line 165:
+//
+//        ["sw_interface_clear_stats",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0x9600fd50"}
+//        ],
+//
+type SwInterfaceClearStats struct {
+       SwIfIndex uint32
+}
+
+func (*SwInterfaceClearStats) GetMessageName() string {
+       return "sw_interface_clear_stats"
+}
+func (*SwInterfaceClearStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceClearStats) GetCrcString() string {
+       return "9600fd50"
+}
+func NewSwInterfaceClearStats() api.Message {
+       return &SwInterfaceClearStats{}
+}
+
+// SwInterfaceClearStatsReply represents the VPP binary API message 'sw_interface_clear_stats_reply'.
+// Generated from 'bin_api/interface.api.json', line 172:
+//
+//        ["sw_interface_clear_stats_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x21f50dd9"}
+//        ],
+//
+type SwInterfaceClearStatsReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceClearStatsReply) GetMessageName() string {
+       return "sw_interface_clear_stats_reply"
+}
+func (*SwInterfaceClearStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceClearStatsReply) GetCrcString() string {
+       return "21f50dd9"
+}
+func NewSwInterfaceClearStatsReply() api.Message {
+       return &SwInterfaceClearStatsReply{}
+}
+
+// SwInterfaceTagAddDel represents the VPP binary API message 'sw_interface_tag_add_del'.
+// Generated from 'bin_api/interface.api.json', line 178:
+//
+//        ["sw_interface_tag_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_add"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "tag", 64],
+//            {"crc" : "0x50ae8d92"}
+//        ],
+//
+type SwInterfaceTagAddDel struct {
+       IsAdd     uint8
+       SwIfIndex uint32
+       Tag       []byte `struc:"[64]byte"`
+}
+
+func (*SwInterfaceTagAddDel) GetMessageName() string {
+       return "sw_interface_tag_add_del"
+}
+func (*SwInterfaceTagAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceTagAddDel) GetCrcString() string {
+       return "50ae8d92"
+}
+func NewSwInterfaceTagAddDel() api.Message {
+       return &SwInterfaceTagAddDel{}
+}
+
+// SwInterfaceTagAddDelReply represents the VPP binary API message 'sw_interface_tag_add_del_reply'.
+// Generated from 'bin_api/interface.api.json', line 187:
+//
+//        ["sw_interface_tag_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x761cbcb0"}
+//        ]
+//
+type SwInterfaceTagAddDelReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceTagAddDelReply) GetMessageName() string {
+       return "sw_interface_tag_add_del_reply"
+}
+func (*SwInterfaceTagAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceTagAddDelReply) GetCrcString() string {
+       return "761cbcb0"
+}
+func NewSwInterfaceTagAddDelReply() api.Message {
+       return &SwInterfaceTagAddDelReply{}
+}
diff --git a/examples/bin_api/ip.api.json b/examples/bin_api/ip.api.json
new file mode 100644 (file)
index 0000000..970ec4b
--- /dev/null
@@ -0,0 +1,292 @@
+{
+    "types" : [
+        ["fib_path",
+            ["u32", "sw_if_index"],
+            ["u32", "weight"],
+            ["u8", "is_local"],
+            ["u8", "is_drop"],
+            ["u8", "is_unreach"],
+            ["u8", "is_prohibit"],
+            ["u8", "afi"],
+            ["u8", "next_hop", 16],
+            {"crc" : "0x315b1889"}
+        ]
+    ],
+    "messages" : [
+        ["ip_fib_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0x5fe56ca3"}
+        ],
+        ["ip_fib_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "table_id"],
+            ["u8", "address_length"],
+            ["u8", "address", 4],
+            ["u32", "count"],
+            ["vl_api_fib_path_t", "path", 0, "count"],
+            {"crc" : "0xfd8c6584"}
+        ],
+        ["ip6_fib_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0x25c89676"}
+        ],
+        ["ip6_fib_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "table_id"],
+            ["u8", "address_length"],
+            ["u8", "address", 16],
+            ["u32", "count"],
+            ["vl_api_fib_path_t", "path", 0, "count"],
+            {"crc" : "0xe0825cb5"}
+        ],
+        ["ip_neighbor_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0x3289e160"}
+        ],
+        ["ip_neighbor_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u8", "is_static"],
+            ["u8", "is_ipv6"],
+            ["u8", "mac_address", 6],
+            ["u8", "ip_address", 16],
+            {"crc" : "0x3a00e32a"}
+        ],
+        ["ip_neighbor_add_del",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "vrf_id"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_add"],
+            ["u8", "is_ipv6"],
+            ["u8", "is_static"],
+            ["u8", "mac_address", 6],
+            ["u8", "dst_address", 16],
+            {"crc" : "0x66f2112c"}
+        ],
+        ["ip_neighbor_add_del_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xe5b0f318"}
+        ],
+        ["set_ip_flow_hash",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "vrf_id"],
+            ["u8", "is_ipv6"],
+            ["u8", "src"],
+            ["u8", "dst"],
+            ["u8", "sport"],
+            ["u8", "dport"],
+            ["u8", "proto"],
+            ["u8", "reverse"],
+            {"crc" : "0x92ad3798"}
+        ],
+        ["set_ip_flow_hash_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x35a9e5eb"}
+        ],
+        ["sw_interface_ip6nd_ra_config",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "suppress"],
+            ["u8", "managed"],
+            ["u8", "other"],
+            ["u8", "ll_option"],
+            ["u8", "send_unicast"],
+            ["u8", "cease"],
+            ["u8", "is_no"],
+            ["u8", "default_router"],
+            ["u32", "max_interval"],
+            ["u32", "min_interval"],
+            ["u32", "lifetime"],
+            ["u32", "initial_count"],
+            ["u32", "initial_interval"],
+            {"crc" : "0xec4a29f6"}
+        ],
+        ["sw_interface_ip6nd_ra_config_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x16e25c5b"}
+        ],
+        ["sw_interface_ip6nd_ra_prefix",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "address", 16],
+            ["u8", "address_length"],
+            ["u8", "use_default"],
+            ["u8", "no_advertise"],
+            ["u8", "off_link"],
+            ["u8", "no_autoconfig"],
+            ["u8", "no_onlink"],
+            ["u8", "is_no"],
+            ["u32", "val_lifetime"],
+            ["u32", "pref_lifetime"],
+            {"crc" : "0x5db6555c"}
+        ],
+        ["sw_interface_ip6nd_ra_prefix_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x8050adb3"}
+        ],
+        ["sw_interface_ip6_enable_disable",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "enable"],
+            {"crc" : "0x4a4e5405"}
+        ],
+        ["sw_interface_ip6_enable_disable_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xeb8b4a40"}
+        ],
+        ["sw_interface_ip6_set_link_local_address",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "address", 16],
+            {"crc" : "0x3db6d52b"}
+        ],
+        ["sw_interface_ip6_set_link_local_address_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x0a781e17"}
+        ],
+        ["ip_add_del_route",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "next_hop_sw_if_index"],
+            ["u32", "table_id"],
+            ["u32", "classify_table_index"],
+            ["u32", "next_hop_table_id"],
+            ["u8", "create_vrf_if_needed"],
+            ["u8", "is_add"],
+            ["u8", "is_drop"],
+            ["u8", "is_unreach"],
+            ["u8", "is_prohibit"],
+            ["u8", "is_ipv6"],
+            ["u8", "is_local"],
+            ["u8", "is_classify"],
+            ["u8", "is_multipath"],
+            ["u8", "is_resolve_host"],
+            ["u8", "is_resolve_attached"],
+            ["u8", "not_last"],
+            ["u8", "next_hop_weight"],
+            ["u8", "dst_address_length"],
+            ["u8", "dst_address", 16],
+            ["u8", "next_hop_address", 16],
+            ["u8", "next_hop_n_out_labels"],
+            ["u32", "next_hop_via_label"],
+            ["u32", "next_hop_out_label_stack", 0, "next_hop_n_out_labels"],
+            {"crc" : "0xa0ab24bf"}
+        ],
+        ["ip_add_del_route_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xea57492b"}
+        ],
+        ["ip_mroute_add_del",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "next_hop_sw_if_index"],
+            ["u32", "table_id"],
+            ["u32", "entry_flags"],
+            ["u32", "itf_flags"],
+            ["u16", "grp_address_length"],
+            ["u8", "create_vrf_if_needed"],
+            ["u8", "is_add"],
+            ["u8", "is_ipv6"],
+            ["u8", "is_local"],
+            ["u8", "grp_address", 16],
+            ["u8", "src_address", 16],
+            {"crc" : "0x8312830f"}
+        ],
+        ["ip_mroute_add_del_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x8cabe02c"}
+        ],
+        ["ip_address_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "ip", 16],
+            ["u8", "prefix_length"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0x190d4266"}
+        ],
+        ["ip_address_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0x632e859a"}
+        ],
+        ["ip_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "sw_if_index"],
+            ["u32", "context"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0x695c8227"}
+        ],
+        ["ip_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "is_ipv6"],
+            {"crc" : "0x3c1e33e0"}
+        ],
+        ["mfib_signal_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0xbbbbd40d"}
+        ],
+        ["mfib_signal_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u32", "table_id"],
+            ["u16", "grp_address_len"],
+            ["u8", "grp_address", 16],
+            ["u8", "src_address", 16],
+            ["u16", "ip_packet_len"],
+            ["u8", "ip_packet_data", 256],
+            {"crc" : "0x6ba92c72"}
+        ]
+    ],
+"vl_api_version" :"0x6a819870"
+}
diff --git a/examples/bin_api/ip/ip.go b/examples/bin_api/ip/ip.go
new file mode 100644 (file)
index 0000000..7c2a80c
--- /dev/null
@@ -0,0 +1,993 @@
+// Package ip represents the VPP binary API of the 'ip' VPP module.
+// DO NOT EDIT. Generated from 'bin_api/ip.api.json' on Fri, 21 Apr 2017 17:10:06 CEST.
+package ip
+
+import "gerrit.fd.io/r/govpp/api"
+
+// VlApiVersion contains version of the API.
+const VlAPIVersion = 0x6a819870
+
+// FibPath represents the VPP binary API data type 'fib_path'.
+// Generated from 'bin_api/ip.api.json', line 3:
+//
+//        ["fib_path",
+//            ["u32", "sw_if_index"],
+//            ["u32", "weight"],
+//            ["u8", "is_local"],
+//            ["u8", "is_drop"],
+//            ["u8", "is_unreach"],
+//            ["u8", "is_prohibit"],
+//            ["u8", "afi"],
+//            ["u8", "next_hop", 16],
+//            {"crc" : "0x315b1889"}
+//        ]
+//
+type FibPath struct {
+       SwIfIndex  uint32
+       Weight     uint32
+       IsLocal    uint8
+       IsDrop     uint8
+       IsUnreach  uint8
+       IsProhibit uint8
+       Afi        uint8
+       NextHop    []byte `struc:"[16]byte"`
+}
+
+func (*FibPath) GetTypeName() string {
+       return "fib_path"
+}
+func (*FibPath) GetCrcString() string {
+       return "315b1889"
+}
+
+// IPFibDump represents the VPP binary API message 'ip_fib_dump'.
+// Generated from 'bin_api/ip.api.json', line 16:
+//
+//        ["ip_fib_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0x5fe56ca3"}
+//        ],
+//
+type IPFibDump struct {
+}
+
+func (*IPFibDump) GetMessageName() string {
+       return "ip_fib_dump"
+}
+func (*IPFibDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPFibDump) GetCrcString() string {
+       return "5fe56ca3"
+}
+func NewIPFibDump() api.Message {
+       return &IPFibDump{}
+}
+
+// IPFibDetails represents the VPP binary API message 'ip_fib_details'.
+// Generated from 'bin_api/ip.api.json', line 22:
+//
+//        ["ip_fib_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "table_id"],
+//            ["u8", "address_length"],
+//            ["u8", "address", 4],
+//            ["u32", "count"],
+//            ["vl_api_fib_path_t", "path", 0, "count"],
+//            {"crc" : "0xfd8c6584"}
+//        ],
+//
+type IPFibDetails struct {
+       TableID       uint32
+       AddressLength uint8
+       Address       []byte `struc:"[4]byte"`
+       Count         uint32 `struc:"sizeof=Path"`
+       Path          []FibPath
+}
+
+func (*IPFibDetails) GetMessageName() string {
+       return "ip_fib_details"
+}
+func (*IPFibDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPFibDetails) GetCrcString() string {
+       return "fd8c6584"
+}
+func NewIPFibDetails() api.Message {
+       return &IPFibDetails{}
+}
+
+// IP6FibDump represents the VPP binary API message 'ip6_fib_dump'.
+// Generated from 'bin_api/ip.api.json', line 32:
+//
+//        ["ip6_fib_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0x25c89676"}
+//        ],
+//
+type IP6FibDump struct {
+}
+
+func (*IP6FibDump) GetMessageName() string {
+       return "ip6_fib_dump"
+}
+func (*IP6FibDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IP6FibDump) GetCrcString() string {
+       return "25c89676"
+}
+func NewIP6FibDump() api.Message {
+       return &IP6FibDump{}
+}
+
+// IP6FibDetails represents the VPP binary API message 'ip6_fib_details'.
+// Generated from 'bin_api/ip.api.json', line 38:
+//
+//        ["ip6_fib_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "table_id"],
+//            ["u8", "address_length"],
+//            ["u8", "address", 16],
+//            ["u32", "count"],
+//            ["vl_api_fib_path_t", "path", 0, "count"],
+//            {"crc" : "0xe0825cb5"}
+//        ],
+//
+type IP6FibDetails struct {
+       TableID       uint32
+       AddressLength uint8
+       Address       []byte `struc:"[16]byte"`
+       Count         uint32 `struc:"sizeof=Path"`
+       Path          []FibPath
+}
+
+func (*IP6FibDetails) GetMessageName() string {
+       return "ip6_fib_details"
+}
+func (*IP6FibDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IP6FibDetails) GetCrcString() string {
+       return "e0825cb5"
+}
+func NewIP6FibDetails() api.Message {
+       return &IP6FibDetails{}
+}
+
+// IPNeighborDump represents the VPP binary API message 'ip_neighbor_dump'.
+// Generated from 'bin_api/ip.api.json', line 48:
+//
+//        ["ip_neighbor_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "is_ipv6"],
+//            {"crc" : "0x3289e160"}
+//        ],
+//
+type IPNeighborDump struct {
+       SwIfIndex uint32
+       IsIpv6    uint8
+}
+
+func (*IPNeighborDump) GetMessageName() string {
+       return "ip_neighbor_dump"
+}
+func (*IPNeighborDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPNeighborDump) GetCrcString() string {
+       return "3289e160"
+}
+func NewIPNeighborDump() api.Message {
+       return &IPNeighborDump{}
+}
+
+// IPNeighborDetails represents the VPP binary API message 'ip_neighbor_details'.
+// Generated from 'bin_api/ip.api.json', line 56:
+//
+//        ["ip_neighbor_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u8", "is_static"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "mac_address", 6],
+//            ["u8", "ip_address", 16],
+//            {"crc" : "0x3a00e32a"}
+//        ],
+//
+type IPNeighborDetails struct {
+       IsStatic   uint8
+       IsIpv6     uint8
+       MacAddress []byte `struc:"[6]byte"`
+       IPAddress  []byte `struc:"[16]byte"`
+}
+
+func (*IPNeighborDetails) GetMessageName() string {
+       return "ip_neighbor_details"
+}
+func (*IPNeighborDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPNeighborDetails) GetCrcString() string {
+       return "3a00e32a"
+}
+func NewIPNeighborDetails() api.Message {
+       return &IPNeighborDetails{}
+}
+
+// IPNeighborAddDel represents the VPP binary API message 'ip_neighbor_add_del'.
+// Generated from 'bin_api/ip.api.json', line 65:
+//
+//        ["ip_neighbor_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "vrf_id"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "is_add"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "is_static"],
+//            ["u8", "mac_address", 6],
+//            ["u8", "dst_address", 16],
+//            {"crc" : "0x66f2112c"}
+//        ],
+//
+type IPNeighborAddDel struct {
+       VrfID      uint32
+       SwIfIndex  uint32
+       IsAdd      uint8
+       IsIpv6     uint8
+       IsStatic   uint8
+       MacAddress []byte `struc:"[6]byte"`
+       DstAddress []byte `struc:"[16]byte"`
+}
+
+func (*IPNeighborAddDel) GetMessageName() string {
+       return "ip_neighbor_add_del"
+}
+func (*IPNeighborAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPNeighborAddDel) GetCrcString() string {
+       return "66f2112c"
+}
+func NewIPNeighborAddDel() api.Message {
+       return &IPNeighborAddDel{}
+}
+
+// IPNeighborAddDelReply represents the VPP binary API message 'ip_neighbor_add_del_reply'.
+// Generated from 'bin_api/ip.api.json', line 78:
+//
+//        ["ip_neighbor_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xe5b0f318"}
+//        ],
+//
+type IPNeighborAddDelReply struct {
+       Retval int32
+}
+
+func (*IPNeighborAddDelReply) GetMessageName() string {
+       return "ip_neighbor_add_del_reply"
+}
+func (*IPNeighborAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPNeighborAddDelReply) GetCrcString() string {
+       return "e5b0f318"
+}
+func NewIPNeighborAddDelReply() api.Message {
+       return &IPNeighborAddDelReply{}
+}
+
+// SetIPFlowHash represents the VPP binary API message 'set_ip_flow_hash'.
+// Generated from 'bin_api/ip.api.json', line 84:
+//
+//        ["set_ip_flow_hash",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "vrf_id"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "src"],
+//            ["u8", "dst"],
+//            ["u8", "sport"],
+//            ["u8", "dport"],
+//            ["u8", "proto"],
+//            ["u8", "reverse"],
+//            {"crc" : "0x92ad3798"}
+//        ],
+//
+type SetIPFlowHash struct {
+       VrfID   uint32
+       IsIpv6  uint8
+       Src     uint8
+       Dst     uint8
+       Sport   uint8
+       Dport   uint8
+       Proto   uint8
+       Reverse uint8
+}
+
+func (*SetIPFlowHash) GetMessageName() string {
+       return "set_ip_flow_hash"
+}
+func (*SetIPFlowHash) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SetIPFlowHash) GetCrcString() string {
+       return "92ad3798"
+}
+func NewSetIPFlowHash() api.Message {
+       return &SetIPFlowHash{}
+}
+
+// SetIPFlowHashReply represents the VPP binary API message 'set_ip_flow_hash_reply'.
+// Generated from 'bin_api/ip.api.json', line 98:
+//
+//        ["set_ip_flow_hash_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x35a9e5eb"}
+//        ],
+//
+type SetIPFlowHashReply struct {
+       Retval int32
+}
+
+func (*SetIPFlowHashReply) GetMessageName() string {
+       return "set_ip_flow_hash_reply"
+}
+func (*SetIPFlowHashReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SetIPFlowHashReply) GetCrcString() string {
+       return "35a9e5eb"
+}
+func NewSetIPFlowHashReply() api.Message {
+       return &SetIPFlowHashReply{}
+}
+
+// SwInterfaceIP6ndRaConfig represents the VPP binary API message 'sw_interface_ip6nd_ra_config'.
+// Generated from 'bin_api/ip.api.json', line 104:
+//
+//        ["sw_interface_ip6nd_ra_config",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "suppress"],
+//            ["u8", "managed"],
+//            ["u8", "other"],
+//            ["u8", "ll_option"],
+//            ["u8", "send_unicast"],
+//            ["u8", "cease"],
+//            ["u8", "is_no"],
+//            ["u8", "default_router"],
+//            ["u32", "max_interval"],
+//            ["u32", "min_interval"],
+//            ["u32", "lifetime"],
+//            ["u32", "initial_count"],
+//            ["u32", "initial_interval"],
+//            {"crc" : "0xec4a29f6"}
+//        ],
+//
+type SwInterfaceIP6ndRaConfig struct {
+       SwIfIndex       uint32
+       Suppress        uint8
+       Managed         uint8
+       Other           uint8
+       LlOption        uint8
+       SendUnicast     uint8
+       Cease           uint8
+       IsNo            uint8
+       DefaultRouter   uint8
+       MaxInterval     uint32
+       MinInterval     uint32
+       Lifetime        uint32
+       InitialCount    uint32
+       InitialInterval uint32
+}
+
+func (*SwInterfaceIP6ndRaConfig) GetMessageName() string {
+       return "sw_interface_ip6nd_ra_config"
+}
+func (*SwInterfaceIP6ndRaConfig) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceIP6ndRaConfig) GetCrcString() string {
+       return "ec4a29f6"
+}
+func NewSwInterfaceIP6ndRaConfig() api.Message {
+       return &SwInterfaceIP6ndRaConfig{}
+}
+
+// SwInterfaceIP6ndRaConfigReply represents the VPP binary API message 'sw_interface_ip6nd_ra_config_reply'.
+// Generated from 'bin_api/ip.api.json', line 124:
+//
+//        ["sw_interface_ip6nd_ra_config_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x16e25c5b"}
+//        ],
+//
+type SwInterfaceIP6ndRaConfigReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceIP6ndRaConfigReply) GetMessageName() string {
+       return "sw_interface_ip6nd_ra_config_reply"
+}
+func (*SwInterfaceIP6ndRaConfigReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceIP6ndRaConfigReply) GetCrcString() string {
+       return "16e25c5b"
+}
+func NewSwInterfaceIP6ndRaConfigReply() api.Message {
+       return &SwInterfaceIP6ndRaConfigReply{}
+}
+
+// SwInterfaceIP6ndRaPrefix represents the VPP binary API message 'sw_interface_ip6nd_ra_prefix'.
+// Generated from 'bin_api/ip.api.json', line 130:
+//
+//        ["sw_interface_ip6nd_ra_prefix",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "address", 16],
+//            ["u8", "address_length"],
+//            ["u8", "use_default"],
+//            ["u8", "no_advertise"],
+//            ["u8", "off_link"],
+//            ["u8", "no_autoconfig"],
+//            ["u8", "no_onlink"],
+//            ["u8", "is_no"],
+//            ["u32", "val_lifetime"],
+//            ["u32", "pref_lifetime"],
+//            {"crc" : "0x5db6555c"}
+//        ],
+//
+type SwInterfaceIP6ndRaPrefix struct {
+       SwIfIndex     uint32
+       Address       []byte `struc:"[16]byte"`
+       AddressLength uint8
+       UseDefault    uint8
+       NoAdvertise   uint8
+       OffLink       uint8
+       NoAutoconfig  uint8
+       NoOnlink      uint8
+       IsNo          uint8
+       ValLifetime   uint32
+       PrefLifetime  uint32
+}
+
+func (*SwInterfaceIP6ndRaPrefix) GetMessageName() string {
+       return "sw_interface_ip6nd_ra_prefix"
+}
+func (*SwInterfaceIP6ndRaPrefix) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceIP6ndRaPrefix) GetCrcString() string {
+       return "5db6555c"
+}
+func NewSwInterfaceIP6ndRaPrefix() api.Message {
+       return &SwInterfaceIP6ndRaPrefix{}
+}
+
+// SwInterfaceIP6ndRaPrefixReply represents the VPP binary API message 'sw_interface_ip6nd_ra_prefix_reply'.
+// Generated from 'bin_api/ip.api.json', line 147:
+//
+//        ["sw_interface_ip6nd_ra_prefix_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x8050adb3"}
+//        ],
+//
+type SwInterfaceIP6ndRaPrefixReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceIP6ndRaPrefixReply) GetMessageName() string {
+       return "sw_interface_ip6nd_ra_prefix_reply"
+}
+func (*SwInterfaceIP6ndRaPrefixReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceIP6ndRaPrefixReply) GetCrcString() string {
+       return "8050adb3"
+}
+func NewSwInterfaceIP6ndRaPrefixReply() api.Message {
+       return &SwInterfaceIP6ndRaPrefixReply{}
+}
+
+// SwInterfaceIP6EnableDisable represents the VPP binary API message 'sw_interface_ip6_enable_disable'.
+// Generated from 'bin_api/ip.api.json', line 153:
+//
+//        ["sw_interface_ip6_enable_disable",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "enable"],
+//            {"crc" : "0x4a4e5405"}
+//        ],
+//
+type SwInterfaceIP6EnableDisable struct {
+       SwIfIndex uint32
+       Enable    uint8
+}
+
+func (*SwInterfaceIP6EnableDisable) GetMessageName() string {
+       return "sw_interface_ip6_enable_disable"
+}
+func (*SwInterfaceIP6EnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceIP6EnableDisable) GetCrcString() string {
+       return "4a4e5405"
+}
+func NewSwInterfaceIP6EnableDisable() api.Message {
+       return &SwInterfaceIP6EnableDisable{}
+}
+
+// SwInterfaceIP6EnableDisableReply represents the VPP binary API message 'sw_interface_ip6_enable_disable_reply'.
+// Generated from 'bin_api/ip.api.json', line 161:
+//
+//        ["sw_interface_ip6_enable_disable_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xeb8b4a40"}
+//        ],
+//
+type SwInterfaceIP6EnableDisableReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceIP6EnableDisableReply) GetMessageName() string {
+       return "sw_interface_ip6_enable_disable_reply"
+}
+func (*SwInterfaceIP6EnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceIP6EnableDisableReply) GetCrcString() string {
+       return "eb8b4a40"
+}
+func NewSwInterfaceIP6EnableDisableReply() api.Message {
+       return &SwInterfaceIP6EnableDisableReply{}
+}
+
+// SwInterfaceIP6SetLinkLocalAddress represents the VPP binary API message 'sw_interface_ip6_set_link_local_address'.
+// Generated from 'bin_api/ip.api.json', line 167:
+//
+//        ["sw_interface_ip6_set_link_local_address",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "address", 16],
+//            {"crc" : "0x3db6d52b"}
+//        ],
+//
+type SwInterfaceIP6SetLinkLocalAddress struct {
+       SwIfIndex uint32
+       Address   []byte `struc:"[16]byte"`
+}
+
+func (*SwInterfaceIP6SetLinkLocalAddress) GetMessageName() string {
+       return "sw_interface_ip6_set_link_local_address"
+}
+func (*SwInterfaceIP6SetLinkLocalAddress) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceIP6SetLinkLocalAddress) GetCrcString() string {
+       return "3db6d52b"
+}
+func NewSwInterfaceIP6SetLinkLocalAddress() api.Message {
+       return &SwInterfaceIP6SetLinkLocalAddress{}
+}
+
+// SwInterfaceIP6SetLinkLocalAddressReply represents the VPP binary API message 'sw_interface_ip6_set_link_local_address_reply'.
+// Generated from 'bin_api/ip.api.json', line 175:
+//
+//        ["sw_interface_ip6_set_link_local_address_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x0a781e17"}
+//        ],
+//
+type SwInterfaceIP6SetLinkLocalAddressReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceIP6SetLinkLocalAddressReply) GetMessageName() string {
+       return "sw_interface_ip6_set_link_local_address_reply"
+}
+func (*SwInterfaceIP6SetLinkLocalAddressReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceIP6SetLinkLocalAddressReply) GetCrcString() string {
+       return "0a781e17"
+}
+func NewSwInterfaceIP6SetLinkLocalAddressReply() api.Message {
+       return &SwInterfaceIP6SetLinkLocalAddressReply{}
+}
+
+// IPAddDelRoute represents the VPP binary API message 'ip_add_del_route'.
+// Generated from 'bin_api/ip.api.json', line 181:
+//
+//        ["ip_add_del_route",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "next_hop_sw_if_index"],
+//            ["u32", "table_id"],
+//            ["u32", "classify_table_index"],
+//            ["u32", "next_hop_table_id"],
+//            ["u8", "create_vrf_if_needed"],
+//            ["u8", "is_add"],
+//            ["u8", "is_drop"],
+//            ["u8", "is_unreach"],
+//            ["u8", "is_prohibit"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "is_local"],
+//            ["u8", "is_classify"],
+//            ["u8", "is_multipath"],
+//            ["u8", "is_resolve_host"],
+//            ["u8", "is_resolve_attached"],
+//            ["u8", "not_last"],
+//            ["u8", "next_hop_weight"],
+//            ["u8", "dst_address_length"],
+//            ["u8", "dst_address", 16],
+//            ["u8", "next_hop_address", 16],
+//            ["u8", "next_hop_n_out_labels"],
+//            ["u32", "next_hop_via_label"],
+//            ["u32", "next_hop_out_label_stack", 0, "next_hop_n_out_labels"],
+//            {"crc" : "0xa0ab24bf"}
+//        ],
+//
+type IPAddDelRoute struct {
+       NextHopSwIfIndex     uint32
+       TableID              uint32
+       ClassifyTableIndex   uint32
+       NextHopTableID       uint32
+       CreateVrfIfNeeded    uint8
+       IsAdd                uint8
+       IsDrop               uint8
+       IsUnreach            uint8
+       IsProhibit           uint8
+       IsIpv6               uint8
+       IsLocal              uint8
+       IsClassify           uint8
+       IsMultipath          uint8
+       IsResolveHost        uint8
+       IsResolveAttached    uint8
+       NotLast              uint8
+       NextHopWeight        uint8
+       DstAddressLength     uint8
+       DstAddress           []byte `struc:"[16]byte"`
+       NextHopAddress       []byte `struc:"[16]byte"`
+       NextHopNOutLabels    uint8  `struc:"sizeof=NextHopOutLabelStack"`
+       NextHopViaLabel      uint32
+       NextHopOutLabelStack []uint32
+}
+
+func (*IPAddDelRoute) GetMessageName() string {
+       return "ip_add_del_route"
+}
+func (*IPAddDelRoute) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPAddDelRoute) GetCrcString() string {
+       return "a0ab24bf"
+}
+func NewIPAddDelRoute() api.Message {
+       return &IPAddDelRoute{}
+}
+
+// IPAddDelRouteReply represents the VPP binary API message 'ip_add_del_route_reply'.
+// Generated from 'bin_api/ip.api.json', line 210:
+//
+//        ["ip_add_del_route_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xea57492b"}
+//        ],
+//
+type IPAddDelRouteReply struct {
+       Retval int32
+}
+
+func (*IPAddDelRouteReply) GetMessageName() string {
+       return "ip_add_del_route_reply"
+}
+func (*IPAddDelRouteReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPAddDelRouteReply) GetCrcString() string {
+       return "ea57492b"
+}
+func NewIPAddDelRouteReply() api.Message {
+       return &IPAddDelRouteReply{}
+}
+
+// IPMrouteAddDel represents the VPP binary API message 'ip_mroute_add_del'.
+// Generated from 'bin_api/ip.api.json', line 216:
+//
+//        ["ip_mroute_add_del",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "next_hop_sw_if_index"],
+//            ["u32", "table_id"],
+//            ["u32", "entry_flags"],
+//            ["u32", "itf_flags"],
+//            ["u16", "grp_address_length"],
+//            ["u8", "create_vrf_if_needed"],
+//            ["u8", "is_add"],
+//            ["u8", "is_ipv6"],
+//            ["u8", "is_local"],
+//            ["u8", "grp_address", 16],
+//            ["u8", "src_address", 16],
+//            {"crc" : "0x8312830f"}
+//        ],
+//
+type IPMrouteAddDel struct {
+       NextHopSwIfIndex  uint32
+       TableID           uint32
+       EntryFlags        uint32
+       ItfFlags          uint32
+       GrpAddressLength  uint16
+       CreateVrfIfNeeded uint8
+       IsAdd             uint8
+       IsIpv6            uint8
+       IsLocal           uint8
+       GrpAddress        []byte `struc:"[16]byte"`
+       SrcAddress        []byte `struc:"[16]byte"`
+}
+
+func (*IPMrouteAddDel) GetMessageName() string {
+       return "ip_mroute_add_del"
+}
+func (*IPMrouteAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPMrouteAddDel) GetCrcString() string {
+       return "8312830f"
+}
+func NewIPMrouteAddDel() api.Message {
+       return &IPMrouteAddDel{}
+}
+
+// IPMrouteAddDelReply represents the VPP binary API message 'ip_mroute_add_del_reply'.
+// Generated from 'bin_api/ip.api.json', line 233:
+//
+//        ["ip_mroute_add_del_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x8cabe02c"}
+//        ],
+//
+type IPMrouteAddDelReply struct {
+       Retval int32
+}
+
+func (*IPMrouteAddDelReply) GetMessageName() string {
+       return "ip_mroute_add_del_reply"
+}
+func (*IPMrouteAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPMrouteAddDelReply) GetCrcString() string {
+       return "8cabe02c"
+}
+func NewIPMrouteAddDelReply() api.Message {
+       return &IPMrouteAddDelReply{}
+}
+
+// IPAddressDetails represents the VPP binary API message 'ip_address_details'.
+// Generated from 'bin_api/ip.api.json', line 239:
+//
+//        ["ip_address_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "ip", 16],
+//            ["u8", "prefix_length"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "is_ipv6"],
+//            {"crc" : "0x190d4266"}
+//        ],
+//
+type IPAddressDetails struct {
+       IP           []byte `struc:"[16]byte"`
+       PrefixLength uint8
+       SwIfIndex    uint32
+       IsIpv6       uint8
+}
+
+func (*IPAddressDetails) GetMessageName() string {
+       return "ip_address_details"
+}
+func (*IPAddressDetails) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPAddressDetails) GetCrcString() string {
+       return "190d4266"
+}
+func NewIPAddressDetails() api.Message {
+       return &IPAddressDetails{}
+}
+
+// IPAddressDump represents the VPP binary API message 'ip_address_dump'.
+// Generated from 'bin_api/ip.api.json', line 249:
+//
+//        ["ip_address_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "is_ipv6"],
+//            {"crc" : "0x632e859a"}
+//        ],
+//
+type IPAddressDump struct {
+       SwIfIndex uint32
+       IsIpv6    uint8
+}
+
+func (*IPAddressDump) GetMessageName() string {
+       return "ip_address_dump"
+}
+func (*IPAddressDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPAddressDump) GetCrcString() string {
+       return "632e859a"
+}
+func NewIPAddressDump() api.Message {
+       return &IPAddressDump{}
+}
+
+// IPDetails represents the VPP binary API message 'ip_details'.
+// Generated from 'bin_api/ip.api.json', line 257:
+//
+//        ["ip_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "context"],
+//            ["u8", "is_ipv6"],
+//            {"crc" : "0x695c8227"}
+//        ],
+//
+type IPDetails struct {
+       SwIfIndex uint32
+       IsIpv6    uint8
+}
+
+func (*IPDetails) GetMessageName() string {
+       return "ip_details"
+}
+func (*IPDetails) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*IPDetails) GetCrcString() string {
+       return "695c8227"
+}
+func NewIPDetails() api.Message {
+       return &IPDetails{}
+}
+
+// IPDump represents the VPP binary API message 'ip_dump'.
+// Generated from 'bin_api/ip.api.json', line 264:
+//
+//        ["ip_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "is_ipv6"],
+//            {"crc" : "0x3c1e33e0"}
+//        ],
+//
+type IPDump struct {
+       IsIpv6 uint8
+}
+
+func (*IPDump) GetMessageName() string {
+       return "ip_dump"
+}
+func (*IPDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPDump) GetCrcString() string {
+       return "3c1e33e0"
+}
+func NewIPDump() api.Message {
+       return &IPDump{}
+}
+
+// MfibSignalDump represents the VPP binary API message 'mfib_signal_dump'.
+// Generated from 'bin_api/ip.api.json', line 271:
+//
+//        ["mfib_signal_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0xbbbbd40d"}
+//        ],
+//
+type MfibSignalDump struct {
+}
+
+func (*MfibSignalDump) GetMessageName() string {
+       return "mfib_signal_dump"
+}
+func (*MfibSignalDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MfibSignalDump) GetCrcString() string {
+       return "bbbbd40d"
+}
+func NewMfibSignalDump() api.Message {
+       return &MfibSignalDump{}
+}
+
+// MfibSignalDetails represents the VPP binary API message 'mfib_signal_details'.
+// Generated from 'bin_api/ip.api.json', line 277:
+//
+//        ["mfib_signal_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u32", "table_id"],
+//            ["u16", "grp_address_len"],
+//            ["u8", "grp_address", 16],
+//            ["u8", "src_address", 16],
+//            ["u16", "ip_packet_len"],
+//            ["u8", "ip_packet_data", 256],
+//            {"crc" : "0x6ba92c72"}
+//        ]
+//
+type MfibSignalDetails struct {
+       SwIfIndex     uint32
+       TableID       uint32
+       GrpAddressLen uint16
+       GrpAddress    []byte `struc:"[16]byte"`
+       SrcAddress    []byte `struc:"[16]byte"`
+       IPPacketLen   uint16
+       IPPacketData  []byte `struc:"[256]byte"`
+}
+
+func (*MfibSignalDetails) GetMessageName() string {
+       return "mfib_signal_details"
+}
+func (*MfibSignalDetails) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MfibSignalDetails) GetCrcString() string {
+       return "6ba92c72"
+}
+func NewMfibSignalDetails() api.Message {
+       return &MfibSignalDetails{}
+}
diff --git a/examples/bin_api/memif.api.json b/examples/bin_api/memif.api.json
new file mode 100644 (file)
index 0000000..e41c82d
--- /dev/null
@@ -0,0 +1,61 @@
+{
+    "types" : [
+
+    ],
+    "messages" : [
+        ["memif_create",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "role"],
+            ["u64", "key"],
+            ["u8", "socket_filename", 128],
+            ["u32", "ring_size"],
+            ["u16", "buffer_size"],
+            ["u8", "hw_addr", 6],
+            {"crc" : "0x23fe3309"}
+        ],
+        ["memif_create_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            ["u32", "sw_if_index"],
+            {"crc" : "0x93d7498b"}
+        ],
+        ["memif_delete",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            {"crc" : "0x12814e3d"}
+        ],
+        ["memif_delete_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x72c9fa3c"}
+        ],
+        ["memif_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "if_name", 64],
+            ["u8", "hw_addr", 6],
+            ["u64", "key"],
+            ["u8", "role"],
+            ["u8", "socket_filename", 128],
+            ["u32", "ring_size"],
+            ["u16", "buffer_size"],
+            ["u8", "admin_up_down"],
+            ["u8", "link_up_down"],
+            {"crc" : "0xcf105583"}
+        ],
+        ["memif_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0x68d39e95"}
+        ]
+    ],
+"vl_api_version" :"0xadb63e82"
+}
diff --git a/examples/bin_api/memif/memif.go b/examples/bin_api/memif/memif.go
new file mode 100644 (file)
index 0000000..2800edc
--- /dev/null
@@ -0,0 +1,201 @@
+// Package memif represents the VPP binary API of the 'memif' VPP module.
+// DO NOT EDIT. Generated from 'bin_api/memif.api.json' on Fri, 21 Apr 2017 17:10:06 CEST.
+package memif
+
+import "gerrit.fd.io/r/govpp/api"
+
+// VlApiVersion contains version of the API.
+const VlAPIVersion = 0xadb63e82
+
+// MemifCreate represents the VPP binary API message 'memif_create'.
+// Generated from 'bin_api/memif.api.json', line 6:
+//
+//        ["memif_create",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "role"],
+//            ["u64", "key"],
+//            ["u8", "socket_filename", 128],
+//            ["u32", "ring_size"],
+//            ["u16", "buffer_size"],
+//            ["u8", "hw_addr", 6],
+//            {"crc" : "0x23fe3309"}
+//        ],
+//
+type MemifCreate struct {
+       Role           uint8
+       Key            uint64
+       SocketFilename []byte `struc:"[128]byte"`
+       RingSize       uint32
+       BufferSize     uint16
+       HwAddr         []byte `struc:"[6]byte"`
+}
+
+func (*MemifCreate) GetMessageName() string {
+       return "memif_create"
+}
+func (*MemifCreate) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MemifCreate) GetCrcString() string {
+       return "23fe3309"
+}
+func NewMemifCreate() api.Message {
+       return &MemifCreate{}
+}
+
+// MemifCreateReply represents the VPP binary API message 'memif_create_reply'.
+// Generated from 'bin_api/memif.api.json', line 18:
+//
+//        ["memif_create_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0x93d7498b"}
+//        ],
+//
+type MemifCreateReply struct {
+       Retval    int32
+       SwIfIndex uint32
+}
+
+func (*MemifCreateReply) GetMessageName() string {
+       return "memif_create_reply"
+}
+func (*MemifCreateReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*MemifCreateReply) GetCrcString() string {
+       return "93d7498b"
+}
+func NewMemifCreateReply() api.Message {
+       return &MemifCreateReply{}
+}
+
+// MemifDelete represents the VPP binary API message 'memif_delete'.
+// Generated from 'bin_api/memif.api.json', line 25:
+//
+//        ["memif_delete",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0x12814e3d"}
+//        ],
+//
+type MemifDelete struct {
+       SwIfIndex uint32
+}
+
+func (*MemifDelete) GetMessageName() string {
+       return "memif_delete"
+}
+func (*MemifDelete) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MemifDelete) GetCrcString() string {
+       return "12814e3d"
+}
+func NewMemifDelete() api.Message {
+       return &MemifDelete{}
+}
+
+// MemifDeleteReply represents the VPP binary API message 'memif_delete_reply'.
+// Generated from 'bin_api/memif.api.json', line 32:
+//
+//        ["memif_delete_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x72c9fa3c"}
+//        ],
+//
+type MemifDeleteReply struct {
+       Retval int32
+}
+
+func (*MemifDeleteReply) GetMessageName() string {
+       return "memif_delete_reply"
+}
+func (*MemifDeleteReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*MemifDeleteReply) GetCrcString() string {
+       return "72c9fa3c"
+}
+func NewMemifDeleteReply() api.Message {
+       return &MemifDeleteReply{}
+}
+
+// MemifDetails represents the VPP binary API message 'memif_details'.
+// Generated from 'bin_api/memif.api.json', line 38:
+//
+//        ["memif_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "if_name", 64],
+//            ["u8", "hw_addr", 6],
+//            ["u64", "key"],
+//            ["u8", "role"],
+//            ["u8", "socket_filename", 128],
+//            ["u32", "ring_size"],
+//            ["u16", "buffer_size"],
+//            ["u8", "admin_up_down"],
+//            ["u8", "link_up_down"],
+//            {"crc" : "0xcf105583"}
+//        ],
+//
+type MemifDetails struct {
+       SwIfIndex      uint32
+       IfName         []byte `struc:"[64]byte"`
+       HwAddr         []byte `struc:"[6]byte"`
+       Key            uint64
+       Role           uint8
+       SocketFilename []byte `struc:"[128]byte"`
+       RingSize       uint32
+       BufferSize     uint16
+       AdminUpDown    uint8
+       LinkUpDown     uint8
+}
+
+func (*MemifDetails) GetMessageName() string {
+       return "memif_details"
+}
+func (*MemifDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*MemifDetails) GetCrcString() string {
+       return "cf105583"
+}
+func NewMemifDetails() api.Message {
+       return &MemifDetails{}
+}
+
+// MemifDump represents the VPP binary API message 'memif_dump'.
+// Generated from 'bin_api/memif.api.json', line 53:
+//
+//        ["memif_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0x68d39e95"}
+//        ]
+//
+type MemifDump struct {
+}
+
+func (*MemifDump) GetMessageName() string {
+       return "memif_dump"
+}
+func (*MemifDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MemifDump) GetCrcString() string {
+       return "68d39e95"
+}
+func NewMemifDump() api.Message {
+       return &MemifDump{}
+}
diff --git a/examples/bin_api/tap.api.json b/examples/bin_api/tap.api.json
new file mode 100644 (file)
index 0000000..7143010
--- /dev/null
@@ -0,0 +1,78 @@
+{
+    "types" : [
+
+    ],
+    "messages" : [
+        ["tap_connect",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u8", "use_random_mac"],
+            ["u8", "tap_name", 64],
+            ["u8", "mac_address", 6],
+            ["u8", "renumber"],
+            ["u32", "custom_dev_instance"],
+            ["u8", "ip4_address_set"],
+            ["u8", "ip4_address", 4],
+            ["u8", "ip4_mask_width"],
+            ["u8", "ip6_address_set"],
+            ["u8", "ip6_address", 16],
+            ["u8", "ip6_mask_width"],
+            ["u8", "tag", 64],
+            {"crc" : "0x91720de3"}
+        ],
+        ["tap_connect_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            ["u32", "sw_if_index"],
+            {"crc" : "0xf47feac1"}
+        ],
+        ["tap_modify",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "use_random_mac"],
+            ["u8", "tap_name", 64],
+            ["u8", "mac_address", 6],
+            ["u8", "renumber"],
+            ["u32", "custom_dev_instance"],
+            {"crc" : "0x8abcd5f3"}
+        ],
+        ["tap_modify_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            ["u32", "sw_if_index"],
+            {"crc" : "0x00aaf940"}
+        ],
+        ["tap_delete",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            {"crc" : "0xe99d41c1"}
+        ],
+        ["tap_delete_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x0e47d140"}
+        ],
+        ["sw_interface_tap_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0xbc6ddbe2"}
+        ],
+        ["sw_interface_tap_details",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "dev_name", 64],
+            {"crc" : "0x0df07bc3"}
+        ]
+    ],
+"vl_api_version" :"0x1aedb9f2"
+}
diff --git a/examples/bin_api/tap/tap.go b/examples/bin_api/tap/tap.go
new file mode 100644 (file)
index 0000000..4d892ac
--- /dev/null
@@ -0,0 +1,264 @@
+// Package tap represents the VPP binary API of the 'tap' VPP module.
+// DO NOT EDIT. Generated from 'bin_api/tap.api.json' on Fri, 21 Apr 2017 17:10:06 CEST.
+package tap
+
+import "gerrit.fd.io/r/govpp/api"
+
+// VlApiVersion contains version of the API.
+const VlAPIVersion = 0x1aedb9f2
+
+// TapConnect represents the VPP binary API message 'tap_connect'.
+// Generated from 'bin_api/tap.api.json', line 6:
+//
+//        ["tap_connect",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u8", "use_random_mac"],
+//            ["u8", "tap_name", 64],
+//            ["u8", "mac_address", 6],
+//            ["u8", "renumber"],
+//            ["u32", "custom_dev_instance"],
+//            ["u8", "ip4_address_set"],
+//            ["u8", "ip4_address", 4],
+//            ["u8", "ip4_mask_width"],
+//            ["u8", "ip6_address_set"],
+//            ["u8", "ip6_address", 16],
+//            ["u8", "ip6_mask_width"],
+//            ["u8", "tag", 64],
+//            {"crc" : "0x91720de3"}
+//        ],
+//
+type TapConnect struct {
+       UseRandomMac      uint8
+       TapName           []byte `struc:"[64]byte"`
+       MacAddress        []byte `struc:"[6]byte"`
+       Renumber          uint8
+       CustomDevInstance uint32
+       IP4AddressSet     uint8
+       IP4Address        []byte `struc:"[4]byte"`
+       IP4MaskWidth      uint8
+       IP6AddressSet     uint8
+       IP6Address        []byte `struc:"[16]byte"`
+       IP6MaskWidth      uint8
+       Tag               []byte `struc:"[64]byte"`
+}
+
+func (*TapConnect) GetMessageName() string {
+       return "tap_connect"
+}
+func (*TapConnect) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*TapConnect) GetCrcString() string {
+       return "91720de3"
+}
+func NewTapConnect() api.Message {
+       return &TapConnect{}
+}
+
+// TapConnectReply represents the VPP binary API message 'tap_connect_reply'.
+// Generated from 'bin_api/tap.api.json', line 24:
+//
+//        ["tap_connect_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0xf47feac1"}
+//        ],
+//
+type TapConnectReply struct {
+       Retval    int32
+       SwIfIndex uint32
+}
+
+func (*TapConnectReply) GetMessageName() string {
+       return "tap_connect_reply"
+}
+func (*TapConnectReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*TapConnectReply) GetCrcString() string {
+       return "f47feac1"
+}
+func NewTapConnectReply() api.Message {
+       return &TapConnectReply{}
+}
+
+// TapModify represents the VPP binary API message 'tap_modify'.
+// Generated from 'bin_api/tap.api.json', line 31:
+//
+//        ["tap_modify",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "use_random_mac"],
+//            ["u8", "tap_name", 64],
+//            ["u8", "mac_address", 6],
+//            ["u8", "renumber"],
+//            ["u32", "custom_dev_instance"],
+//            {"crc" : "0x8abcd5f3"}
+//        ],
+//
+type TapModify struct {
+       SwIfIndex         uint32
+       UseRandomMac      uint8
+       TapName           []byte `struc:"[64]byte"`
+       MacAddress        []byte `struc:"[6]byte"`
+       Renumber          uint8
+       CustomDevInstance uint32
+}
+
+func (*TapModify) GetMessageName() string {
+       return "tap_modify"
+}
+func (*TapModify) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*TapModify) GetCrcString() string {
+       return "8abcd5f3"
+}
+func NewTapModify() api.Message {
+       return &TapModify{}
+}
+
+// TapModifyReply represents the VPP binary API message 'tap_modify_reply'.
+// Generated from 'bin_api/tap.api.json', line 43:
+//
+//        ["tap_modify_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0x00aaf940"}
+//        ],
+//
+type TapModifyReply struct {
+       Retval    int32
+       SwIfIndex uint32
+}
+
+func (*TapModifyReply) GetMessageName() string {
+       return "tap_modify_reply"
+}
+func (*TapModifyReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*TapModifyReply) GetCrcString() string {
+       return "00aaf940"
+}
+func NewTapModifyReply() api.Message {
+       return &TapModifyReply{}
+}
+
+// TapDelete represents the VPP binary API message 'tap_delete'.
+// Generated from 'bin_api/tap.api.json', line 50:
+//
+//        ["tap_delete",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            {"crc" : "0xe99d41c1"}
+//        ],
+//
+type TapDelete struct {
+       SwIfIndex uint32
+}
+
+func (*TapDelete) GetMessageName() string {
+       return "tap_delete"
+}
+func (*TapDelete) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*TapDelete) GetCrcString() string {
+       return "e99d41c1"
+}
+func NewTapDelete() api.Message {
+       return &TapDelete{}
+}
+
+// TapDeleteReply represents the VPP binary API message 'tap_delete_reply'.
+// Generated from 'bin_api/tap.api.json', line 57:
+//
+//        ["tap_delete_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x0e47d140"}
+//        ],
+//
+type TapDeleteReply struct {
+       Retval int32
+}
+
+func (*TapDeleteReply) GetMessageName() string {
+       return "tap_delete_reply"
+}
+func (*TapDeleteReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*TapDeleteReply) GetCrcString() string {
+       return "0e47d140"
+}
+func NewTapDeleteReply() api.Message {
+       return &TapDeleteReply{}
+}
+
+// SwInterfaceTapDump represents the VPP binary API message 'sw_interface_tap_dump'.
+// Generated from 'bin_api/tap.api.json', line 63:
+//
+//        ["sw_interface_tap_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0xbc6ddbe2"}
+//        ],
+//
+type SwInterfaceTapDump struct {
+}
+
+func (*SwInterfaceTapDump) GetMessageName() string {
+       return "sw_interface_tap_dump"
+}
+func (*SwInterfaceTapDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceTapDump) GetCrcString() string {
+       return "bc6ddbe2"
+}
+func NewSwInterfaceTapDump() api.Message {
+       return &SwInterfaceTapDump{}
+}
+
+// SwInterfaceTapDetails represents the VPP binary API message 'sw_interface_tap_details'.
+// Generated from 'bin_api/tap.api.json', line 69:
+//
+//        ["sw_interface_tap_details",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "dev_name", 64],
+//            {"crc" : "0x0df07bc3"}
+//        ]
+//
+type SwInterfaceTapDetails struct {
+       SwIfIndex uint32
+       DevName   []byte `struc:"[64]byte"`
+}
+
+func (*SwInterfaceTapDetails) GetMessageName() string {
+       return "sw_interface_tap_details"
+}
+func (*SwInterfaceTapDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceTapDetails) GetCrcString() string {
+       return "0df07bc3"
+}
+func NewSwInterfaceTapDetails() api.Message {
+       return &SwInterfaceTapDetails{}
+}
diff --git a/examples/bin_api/uflow.api.json b/examples/bin_api/uflow.api.json
new file mode 100644 (file)
index 0000000..df63772
--- /dev/null
@@ -0,0 +1,78 @@
+{
+    "types" : [
+        ["uflow_idx",
+            ["u32", "vslot"],
+            ["u32", "md"],
+            ["u32", "sid"],
+            {"crc" : "0x3310d92c"}
+        ],
+        ["uflow_ent",
+            ["u32", "cm_dpidx"],
+            ["u32", "vbundle_dpidx"],
+            {"crc" : "0x50fa3f43"}
+        ],
+        ["uflow_row",
+            ["vl_api_uflow_idx_t", "idx"],
+            ["vl_api_uflow_ent_t", "ent"],
+            {"crc" : "0x3b73b975"}
+        ]
+    ],
+    "messages" : [
+        ["uflow_enable_disable",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["u32", "sw_if_index"],
+            ["u8", "enable_disable"],
+            {"crc" : "0x4c7f1b8a"}
+        ],
+        ["uflow_enable_disable_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xf47b6600"}
+        ],
+        ["uflow_set_ent",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["vl_api_uflow_idx_t", "idx"],
+            ["vl_api_uflow_ent_t", "ent"],
+            {"crc" : "0x6bfeac11"}
+        ],
+        ["uflow_set_ent_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0xc49943f5"}
+        ],
+        ["uflow_clr_ent",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            ["vl_api_uflow_idx_t", "idx"],
+            {"crc" : "0x9c0b61a7"}
+        ],
+        ["uflow_clr_ent_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            {"crc" : "0x6ca429f7"}
+        ],
+        ["uflow_dump",
+            ["u16", "_vl_msg_id"],
+            ["u32", "client_index"],
+            ["u32", "context"],
+            {"crc" : "0xf0ac7601"}
+        ],
+        ["uflow_dump_reply",
+            ["u16", "_vl_msg_id"],
+            ["u32", "context"],
+            ["i32", "retval"],
+            ["u32", "num"],
+            ["vl_api_uflow_row_t", "row", 0, "num"],
+            {"crc" : "0x85b96451"}
+        ]
+    ],
+"vl_api_version" :"0x85909300"
+}
diff --git a/examples/bin_api/uflow/uflow.go b/examples/bin_api/uflow/uflow.go
new file mode 100644 (file)
index 0000000..ecf1674
--- /dev/null
@@ -0,0 +1,299 @@
+// Package uflow represents the VPP binary API of the 'uflow' VPP module.
+// DO NOT EDIT. Generated from 'bin_api/uflow.api.json' on Fri, 21 Apr 2017 17:10:06 CEST.
+package uflow
+
+import "gerrit.fd.io/r/govpp/api"
+
+// VlApiVersion contains version of the API.
+const VlAPIVersion = 0x85909300
+
+// UflowIdx represents the VPP binary API data type 'uflow_idx'.
+// Generated from 'bin_api/uflow.api.json', line 3:
+//
+//        ["uflow_idx",
+//            ["u32", "vslot"],
+//            ["u32", "md"],
+//            ["u32", "sid"],
+//            {"crc" : "0x3310d92c"}
+//        ],
+//
+type UflowIdx struct {
+       Vslot uint32
+       Md    uint32
+       Sid   uint32
+}
+
+func (*UflowIdx) GetTypeName() string {
+       return "uflow_idx"
+}
+func (*UflowIdx) GetCrcString() string {
+       return "3310d92c"
+}
+
+// UflowEnt represents the VPP binary API data type 'uflow_ent'.
+// Generated from 'bin_api/uflow.api.json', line 9:
+//
+//        ["uflow_ent",
+//            ["u32", "cm_dpidx"],
+//            ["u32", "vbundle_dpidx"],
+//            {"crc" : "0x50fa3f43"}
+//        ],
+//
+type UflowEnt struct {
+       CmDpidx      uint32
+       VbundleDpidx uint32
+}
+
+func (*UflowEnt) GetTypeName() string {
+       return "uflow_ent"
+}
+func (*UflowEnt) GetCrcString() string {
+       return "50fa3f43"
+}
+
+// UflowRow represents the VPP binary API data type 'uflow_row'.
+// Generated from 'bin_api/uflow.api.json', line 14:
+//
+//        ["uflow_row",
+//            ["vl_api_uflow_idx_t", "idx"],
+//            ["vl_api_uflow_ent_t", "ent"],
+//            {"crc" : "0x3b73b975"}
+//        ]
+//
+type UflowRow struct {
+       Idx UflowIdx
+       Ent UflowEnt
+}
+
+func (*UflowRow) GetTypeName() string {
+       return "uflow_row"
+}
+func (*UflowRow) GetCrcString() string {
+       return "3b73b975"
+}
+
+// UflowEnableDisable represents the VPP binary API message 'uflow_enable_disable'.
+// Generated from 'bin_api/uflow.api.json', line 21:
+//
+//        ["uflow_enable_disable",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "enable_disable"],
+//            {"crc" : "0x4c7f1b8a"}
+//        ],
+//
+type UflowEnableDisable struct {
+       SwIfIndex     uint32
+       EnableDisable uint8
+}
+
+func (*UflowEnableDisable) GetMessageName() string {
+       return "uflow_enable_disable"
+}
+func (*UflowEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*UflowEnableDisable) GetCrcString() string {
+       return "4c7f1b8a"
+}
+func NewUflowEnableDisable() api.Message {
+       return &UflowEnableDisable{}
+}
+
+// UflowEnableDisableReply represents the VPP binary API message 'uflow_enable_disable_reply'.
+// Generated from 'bin_api/uflow.api.json', line 29:
+//
+//        ["uflow_enable_disable_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xf47b6600"}
+//        ],
+//
+type UflowEnableDisableReply struct {
+       Retval int32
+}
+
+func (*UflowEnableDisableReply) GetMessageName() string {
+       return "uflow_enable_disable_reply"
+}
+func (*UflowEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*UflowEnableDisableReply) GetCrcString() string {
+       return "f47b6600"
+}
+func NewUflowEnableDisableReply() api.Message {
+       return &UflowEnableDisableReply{}
+}
+
+// UflowSetEnt represents the VPP binary API message 'uflow_set_ent'.
+// Generated from 'bin_api/uflow.api.json', line 35:
+//
+//        ["uflow_set_ent",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["vl_api_uflow_idx_t", "idx"],
+//            ["vl_api_uflow_ent_t", "ent"],
+//            {"crc" : "0x6bfeac11"}
+//        ],
+//
+type UflowSetEnt struct {
+       Idx UflowIdx
+       Ent UflowEnt
+}
+
+func (*UflowSetEnt) GetMessageName() string {
+       return "uflow_set_ent"
+}
+func (*UflowSetEnt) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*UflowSetEnt) GetCrcString() string {
+       return "6bfeac11"
+}
+func NewUflowSetEnt() api.Message {
+       return &UflowSetEnt{}
+}
+
+// UflowSetEntReply represents the VPP binary API message 'uflow_set_ent_reply'.
+// Generated from 'bin_api/uflow.api.json', line 43:
+//
+//        ["uflow_set_ent_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0xc49943f5"}
+//        ],
+//
+type UflowSetEntReply struct {
+       Retval int32
+}
+
+func (*UflowSetEntReply) GetMessageName() string {
+       return "uflow_set_ent_reply"
+}
+func (*UflowSetEntReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*UflowSetEntReply) GetCrcString() string {
+       return "c49943f5"
+}
+func NewUflowSetEntReply() api.Message {
+       return &UflowSetEntReply{}
+}
+
+// UflowClrEnt represents the VPP binary API message 'uflow_clr_ent'.
+// Generated from 'bin_api/uflow.api.json', line 49:
+//
+//        ["uflow_clr_ent",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["vl_api_uflow_idx_t", "idx"],
+//            {"crc" : "0x9c0b61a7"}
+//        ],
+//
+type UflowClrEnt struct {
+       Idx UflowIdx
+}
+
+func (*UflowClrEnt) GetMessageName() string {
+       return "uflow_clr_ent"
+}
+func (*UflowClrEnt) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*UflowClrEnt) GetCrcString() string {
+       return "9c0b61a7"
+}
+func NewUflowClrEnt() api.Message {
+       return &UflowClrEnt{}
+}
+
+// UflowClrEntReply represents the VPP binary API message 'uflow_clr_ent_reply'.
+// Generated from 'bin_api/uflow.api.json', line 56:
+//
+//        ["uflow_clr_ent_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x6ca429f7"}
+//        ],
+//
+type UflowClrEntReply struct {
+       Retval int32
+}
+
+func (*UflowClrEntReply) GetMessageName() string {
+       return "uflow_clr_ent_reply"
+}
+func (*UflowClrEntReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*UflowClrEntReply) GetCrcString() string {
+       return "6ca429f7"
+}
+func NewUflowClrEntReply() api.Message {
+       return &UflowClrEntReply{}
+}
+
+// UflowDump represents the VPP binary API message 'uflow_dump'.
+// Generated from 'bin_api/uflow.api.json', line 62:
+//
+//        ["uflow_dump",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0xf0ac7601"}
+//        ],
+//
+type UflowDump struct {
+}
+
+func (*UflowDump) GetMessageName() string {
+       return "uflow_dump"
+}
+func (*UflowDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*UflowDump) GetCrcString() string {
+       return "f0ac7601"
+}
+func NewUflowDump() api.Message {
+       return &UflowDump{}
+}
+
+// UflowDumpReply represents the VPP binary API message 'uflow_dump_reply'.
+// Generated from 'bin_api/uflow.api.json', line 68:
+//
+//        ["uflow_dump_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "num"],
+//            ["vl_api_uflow_row_t", "row", 0, "num"],
+//            {"crc" : "0x85b96451"}
+//        ]
+//
+type UflowDumpReply struct {
+       Retval int32
+       Num    uint32 `struc:"sizeof=Row"`
+       Row    []UflowRow
+}
+
+func (*UflowDumpReply) GetMessageName() string {
+       return "uflow_dump_reply"
+}
+func (*UflowDumpReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*UflowDumpReply) GetCrcString() string {
+       return "85b96451"
+}
+func NewUflowDumpReply() api.Message {
+       return &UflowDumpReply{}
+}
diff --git a/examples/example_client.go b/examples/example_client.go
new file mode 100644 (file)
index 0000000..fd858ee
--- /dev/null
@@ -0,0 +1,269 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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.
+
+// Example VPP management application that exercises the govpp API on real-world use-cases.
+package main
+
+// Generates Go bindings for all VPP APIs located in the json directory.
+//go:generate binapi_generator --input-dir=bin_api --output-dir=bin_api
+
+import (
+       "fmt"
+       "net"
+       "os"
+       "os/signal"
+
+       "gerrit.fd.io/r/govpp"
+       "gerrit.fd.io/r/govpp/api"
+       "gerrit.fd.io/r/govpp/api/ifcounters"
+       "gerrit.fd.io/r/govpp/core/bin_api/vpe"
+       "gerrit.fd.io/r/govpp/examples/bin_api/acl"
+       "gerrit.fd.io/r/govpp/examples/bin_api/interfaces"
+       "gerrit.fd.io/r/govpp/examples/bin_api/tap"
+)
+
+func main() {
+       fmt.Println("Starting example VPP client...")
+
+       // connect to VPP and create an API channel that will be used in the examples
+       conn, _ := govpp.Connect()
+       defer conn.Disconnect()
+
+       ch, _ := conn.NewAPIChannel()
+       defer ch.Close()
+
+       // check whether the VPP supports our version of some messages
+       compatibilityCheck(ch)
+
+       // individual examples
+       aclVersion(ch)
+       aclConfig(ch)
+       aclDump(ch)
+
+       tapConnect(ch)
+
+       interfaceDump(ch)
+       interfaceNotifications(ch)
+
+       //interfaceCounters(ch)
+}
+
+// compatibilityCheck shows how an management application can check whether generated API messages are
+// compatible with the version of VPP which the library is connected to.
+func compatibilityCheck(ch *api.Channel) {
+       err := ch.CheckMessageCompatibility(
+               &interfaces.SwInterfaceDump{},
+               &interfaces.SwInterfaceDetails{},
+       )
+       if err != nil {
+               fmt.Println(err)
+               os.Exit(1)
+       }
+}
+
+// aclVersion is the simplest API example - one empty request message and one reply message.
+func aclVersion(ch *api.Channel) {
+       req := &acl.ACLPluginGetVersion{}
+       reply := &acl.ACLPluginGetVersionReply{}
+
+       err := ch.SendRequest(req).ReceiveReply(reply)
+
+       if err != nil {
+               fmt.Println("Error:", err)
+       } else {
+               fmt.Printf("%+v\n", reply)
+       }
+}
+
+// aclConfig is another simple API example - in this case, the request contains structured data.
+func aclConfig(ch *api.Channel) {
+       req := &acl.ACLAddReplace{
+               ACLIndex: ^uint32(0),
+               Tag:      []byte("access list 1"),
+               R: []acl.ACLRule{
+                       {
+                               IsPermit:       1,
+                               SrcIPAddr:      net.ParseIP("10.0.0.0").To4(),
+                               SrcIPPrefixLen: 8,
+                               DstIPAddr:      net.ParseIP("192.168.1.0").To4(),
+                               DstIPPrefixLen: 24,
+                               Proto:          6,
+                       },
+                       {
+                               IsPermit:       1,
+                               SrcIPAddr:      net.ParseIP("8.8.8.8").To4(),
+                               SrcIPPrefixLen: 32,
+                               DstIPAddr:      net.ParseIP("172.16.0.0").To4(),
+                               DstIPPrefixLen: 16,
+                               Proto:          6,
+                       },
+               },
+       }
+       reply := &acl.ACLAddReplaceReply{}
+
+       err := ch.SendRequest(req).ReceiveReply(reply)
+
+       if err != nil {
+               fmt.Println("Error:", err)
+       } else {
+               fmt.Printf("%+v\n", reply)
+       }
+}
+
+// aclDump shows an example where SendRequest and ReceiveReply are not chained together.
+func aclDump(ch *api.Channel) {
+       req := &acl.ACLDump{}
+       reply := &acl.ACLDetails{}
+
+       reqCtx := ch.SendRequest(req)
+       err := reqCtx.ReceiveReply(reply)
+
+       if err != nil {
+               fmt.Println("Error:", err)
+       } else {
+               fmt.Printf("%+v\n", reply)
+       }
+}
+
+// tapConnect example shows how the Go channels in the API channel can be accessed directly instead
+// of using SendRequest and ReceiveReply wrappers.
+func tapConnect(ch *api.Channel) {
+       req := &tap.TapConnect{
+               TapName:      []byte("testtap"),
+               UseRandomMac: 1,
+       }
+
+       // send the request to the request go channel
+       ch.ReqChan <- &api.VppRequest{Message: req}
+
+       // receive a reply from the reply go channel
+       vppReply := <-ch.ReplyChan
+       if vppReply.Error != nil {
+               fmt.Println("Error:", vppReply.Error)
+               return
+       }
+
+       // decode the message
+       reply := &tap.TapConnectReply{}
+       err := ch.MsgDecoder.DecodeMsg(vppReply.Data, reply)
+
+       if err != nil {
+               fmt.Println("Error:", err)
+       } else {
+               fmt.Printf("%+v\n", reply)
+       }
+}
+
+// interfaceDump shows an example of multipart request (multiple replies are expected).
+func interfaceDump(ch *api.Channel) {
+       req := &interfaces.SwInterfaceDump{}
+       reqCtx := ch.SendMultiRequest(req)
+
+       for {
+               msg := &interfaces.SwInterfaceDetails{}
+               stop, err := reqCtx.ReceiveReply(msg)
+               if stop {
+                       break // break out of the loop
+               }
+               if err != nil {
+                       fmt.Println("Error:", err)
+               }
+               fmt.Printf("%+v\n", msg)
+       }
+}
+
+// interfaceNotifications shows the usage of notification API. Note that for notifications,
+// you are supposed to create your own Go channel with your preferred buffer size. If the channel's
+// buffer is full, the notifications will not be delivered into it.
+func interfaceNotifications(ch *api.Channel) {
+       // subscribe for specific notification message
+       notifChan := make(chan api.Message, 100)
+       subs, _ := ch.SubscribeNotification(notifChan, interfaces.NewSwInterfaceSetFlags)
+
+       // enable interface events in VPP
+       ch.SendRequest(&interfaces.WantInterfaceEvents{
+               Pid:           uint32(os.Getpid()),
+               EnableDisable: 1,
+       }).ReceiveReply(&interfaces.WantInterfaceEventsReply{})
+
+       // generate some events in VPP
+       ch.SendRequest(&interfaces.SwInterfaceSetFlags{
+               SwIfIndex:   0,
+               AdminUpDown: 0,
+       }).ReceiveReply(&interfaces.SwInterfaceSetFlagsReply{})
+       ch.SendRequest(&interfaces.SwInterfaceSetFlags{
+               SwIfIndex:   0,
+               AdminUpDown: 1,
+       }).ReceiveReply(&interfaces.SwInterfaceSetFlagsReply{})
+
+       // receive one notification
+       notif := (<-notifChan).(*interfaces.SwInterfaceSetFlags)
+       fmt.Printf("%+v\n", notif)
+
+       // unsubscribe from delivery of the notifications
+       ch.UnsubscribeNotification(subs)
+}
+
+// interfaceCounters is an example of using notification API to periodically retrieve interface statistics.
+// The ifcounters package contains the API that can be used to decode the strange VnetInterfaceCounters message.
+func interfaceCounters(ch *api.Channel) {
+       // subscribe for interface counters notifications
+       notifChan := make(chan api.Message, 100)
+       subs, _ := ch.SubscribeNotification(notifChan, interfaces.NewVnetInterfaceCounters)
+
+       // enable interface counters notifications from VPP
+       ch.SendRequest(&vpe.WantStats{
+               Pid:           uint32(os.Getpid()),
+               EnableDisable: 1,
+       }).ReceiveReply(&vpe.WantStatsReply{})
+
+       // create channel for Interrupt signal
+       sigChan := make(chan os.Signal, 1)
+       signal.Notify(sigChan, os.Interrupt)
+
+       // loop until Interrupt signal is received
+loop:
+       for {
+               select {
+               case <-sigChan:
+                       // interrupt received
+                       break loop
+               case notifMsg := <-notifChan:
+                       notif := notifMsg.(*interfaces.VnetInterfaceCounters)
+                       // notification received
+                       fmt.Printf("%+v\n", notif)
+
+                       if notif.IsCombined == 0 {
+                               // simple counter
+                               counters, err := ifcounters.DecodeCounters(ifcounters.VnetInterfaceCounters(*notif))
+                               if err != nil {
+                                       fmt.Println("Error:", err)
+                               } else {
+                                       fmt.Printf("%+v\n", counters)
+                               }
+                       } else {
+                               // combined counter
+                               counters, err := ifcounters.DecodeCombinedCounters(ifcounters.VnetInterfaceCounters(*notif))
+                               if err != nil {
+                                       fmt.Println("Error:", err)
+                               } else {
+                                       fmt.Printf("%+v\n", counters)
+                               }
+                       }
+               }
+       }
+
+       // unsubscribe from delivery of the notifications
+       ch.UnsubscribeNotification(subs)
+}
diff --git a/examples/examples b/examples/examples
new file mode 100755 (executable)
index 0000000..30dde52
Binary files /dev/null and b/examples/examples differ
diff --git a/glide.lock b/glide.lock
new file mode 100644 (file)
index 0000000..c7cc164
--- /dev/null
@@ -0,0 +1,30 @@
+hash: 63211bb08ba0fe7dc97a226b16d682e53e502832d42a08f3dc0dfb0419da126c
+updated: 2017-05-04T10:44:17.166761301+02:00
+imports:
+- name: github.com/bennyscetbun/jsongo
+  version: 5240b3f82c6665fe3ccd96bdf5e6f38fe1e1399d
+- name: github.com/lunixbochs/struc
+  version: ae5aa8161e35c822b55526833b1635764b740770
+- name: github.com/Sirupsen/logrus
+  version: ba1b36c82c5e05c4f912a88eab0dcd91a171688f
+- name: golang.org/x/sys
+  version: 9ccfe848b9db8435a24c424abbc07a921adf1df5
+  subpackages:
+  - unix
+testImports:
+- name: github.com/onsi/gomega
+  version: 334b8f472b3af5d541c5642701c1e29e2126f486
+  subpackages:
+  - format
+  - internal/assertion
+  - internal/asyncassertion
+  - internal/oraclematcher
+  - internal/testingtsupport
+  - matchers
+  - matchers/support/goraph/bipartitegraph
+  - matchers/support/goraph/edge
+  - matchers/support/goraph/node
+  - matchers/support/goraph/util
+  - types
+- name: gopkg.in/yaml.v2
+  version: cd8b52f8269e0feb286dfeef29f8fe4d5b397e0b
diff --git a/glide.yaml b/glide.yaml
new file mode 100644 (file)
index 0000000..73c4a3f
--- /dev/null
@@ -0,0 +1,9 @@
+package: gerrit.fd.io/r/govpp
+import:
+- package: github.com/Sirupsen/logrus
+  version: v0.11.5
+- package: github.com/bennyscetbun/jsongo
+- package: github.com/lunixbochs/struc
+testImport:
+- package: github.com/onsi/gomega
+  version: v1.1.0
diff --git a/govpp.go b/govpp.go
new file mode 100644 (file)
index 0000000..f0ced41
--- /dev/null
+++ b/govpp.go
@@ -0,0 +1,37 @@
+// Copyright (c) 2017 Cisco and/or its affiliates.
+//
+// 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 govpp
+
+import (
+       "gerrit.fd.io/r/govpp/adapter"
+       "gerrit.fd.io/r/govpp/adapter/vppapiclient"
+       "gerrit.fd.io/r/govpp/core"
+)
+
+var vppAdapter adapter.VppAdapter // VPP Adapter that will be used in the subsequent Connect calls
+
+// Connect connects the govpp core to VPP either using the default VPP Adapter, or using the adapter previously
+// set by SetAdapter (useful mostly just for unit/integration tests with mocked VPP adapter).
+func Connect() (*core.Connection, error) {
+       if vppAdapter == nil {
+               vppAdapter = vppapiclient.NewVppAdapter()
+       }
+       return core.Connect(vppAdapter)
+}
+
+// SetAdapter sets the adapter that will be used for connections to VPP in the subsequent `Connect` calls.
+func SetAdapter(ad adapter.VppAdapter) {
+       vppAdapter = ad
+}
diff --git a/vendor/github.com/Sirupsen/logrus/.gitignore b/vendor/github.com/Sirupsen/logrus/.gitignore
new file mode 100644 (file)
index 0000000..66be63a
--- /dev/null
@@ -0,0 +1 @@
+logrus
diff --git a/vendor/github.com/Sirupsen/logrus/.travis.yml b/vendor/github.com/Sirupsen/logrus/.travis.yml
new file mode 100644 (file)
index 0000000..804c569
--- /dev/null
@@ -0,0 +1,8 @@
+language: go
+go:
+  - 1.6
+  - 1.7
+  - tip
+install:
+  - go get -t ./...
+script: GOMAXPROCS=4 GORACE="halt_on_error=1" go test -race -v ./...
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..747e4d8
--- /dev/null
@@ -0,0 +1,94 @@
+# 0.11.5
+
+* feature: add writer and writerlevel to entry (#372)
+
+# 0.11.4
+
+* bug: fix undefined variable on solaris (#493)
+
+# 0.11.3
+
+* formatter: configure quoting of empty values (#484)
+* formatter: configure quoting character (default is `"`) (#484)
+* bug: fix not importing io correctly in non-linux environments (#481)
+
+# 0.11.2
+
+* bug: fix windows terminal detection (#476)
+
+# 0.11.1
+
+* bug: fix tty detection with custom out (#471)
+
+# 0.11.0
+
+* performance: Use bufferpool to allocate (#370)
+* terminal: terminal detection for app-engine (#343)
+* feature: exit handler (#375)
+
+# 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..640cf61
--- /dev/null
@@ -0,0 +1,476 @@
+# 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)
+
+**Seeing weird case-sensitive problems?** See [this
+issue](https://github.com/sirupsen/logrus/issues/451#issuecomment-264332021).
+This change has been reverted. I apologize for causing this. I greatly
+underestimated the impact this would have. Logrus strives for stability and
+backwards compatibility and failed to provide that.
+
+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 stdout instead of the default stderr
+  // Can be any io.Writer, see below for File example
+  log.SetOutput(os.Stdout)
+
+  // 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.Stdout
+
+  // You could set this to any `io.Writer` such as a file
+  // file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666)
+  // if err == nil {
+  //  log.Out = file
+  // } else {
+  //  log.Info("Failed to log to file, using default 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.
+
+#### Default Fields
+
+Often it's helpful to have fields _always_ attached to log statements in an
+application or parts of one. For example, you may want to always log the
+`request_id` and `user_ip` in the context of a request. Instead of writing
+`log.WithFields(log.Fields{"request_id": request_id, "user_ip": user_ip})` on
+every line, you can create a `logrus.Entry` to pass around instead:
+
+```go
+requestLogger := log.WithFields(log.Fields{"request_id": request_id, user_ip: user_ip})
+requestLogger.Info("something happened on that request") # will log request_id and user_ip
+requestLogger.Warn("something not great happened")
+```
+
+#### 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 "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. |
+| [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. |
+| [Amazon Kinesis](https://github.com/evalphobia/logrus_kinesis) | Hook for logging to [Amazon Kinesis](https://aws.amazon.com/kinesis/) |
+| [Amqp-Hook](https://github.com/vladoatanasov/logrus_amqp) | Hook for logging to Amqp broker (Like RabbitMQ) |
+| [Bugsnag](https://github.com/Shopify/logrus-bugsnag/blob/master/bugsnag.go) | Send errors to the Bugsnag exception tracking service. |
+| [DeferPanic](https://github.com/deferpanic/dp-logrus) | Hook for logging to DeferPanic |
+| [ElasticSearch](https://github.com/sohlich/elogrus) | Hook for logging to ElasticSearch|
+| [Fluentd](https://github.com/evalphobia/logrus_fluent) | Hook for logging to fluentd |
+| [Go-Slack](https://github.com/multiplay/go-slack) | Hook for logging to [Slack](https://slack.com) |
+| [Graylog](https://github.com/gemnasium/logrus-graylog-hook) | Hook for logging to [Graylog](http://graylog2.org/) |
+| [Hiprus](https://github.com/nubo/hiprus) | Send errors to a channel in hipchat. |
+| [Honeybadger](https://github.com/agonzalezro/logrus_honeybadger) | Hook for sending exceptions to Honeybadger |
+| [InfluxDB](https://github.com/Abramovic/logrus_influxdb) | Hook for logging to influxdb |
+| [Influxus] (http://github.com/vlad-doru/influxus) | Hook for concurrently logging to [InfluxDB] (http://influxdata.com/) |
+| [Journalhook](https://github.com/wercker/journalhook) | Hook for logging to `systemd-journald` |
+| [KafkaLogrus](https://github.com/goibibo/KafkaLogrus) | Hook for logging to kafka |
+| [LFShook](https://github.com/rifflock/lfshook) | Hook for logging to the local filesystem |
+| [Logentries](https://github.com/jcftang/logentriesrus) | Hook for logging to [Logentries](https://logentries.com/) |
+| [Logentrus](https://github.com/puddingfactory/logentrus) | Hook for logging to [Logentries](https://logentries.com/) |
+| [Logmatic.io](https://github.com/logmatic/logmatic-go) | Hook for logging to [Logmatic.io](http://logmatic.io/) |
+| [Logrusly](https://github.com/sebest/logrusly) | Send logs to [Loggly](https://www.loggly.com/) |
+| [Logstash](https://github.com/bshuster-repo/logrus-logstash-hook) | Hook for logging to [Logstash](https://www.elastic.co/products/logstash) |
+| [Mail](https://github.com/zbindenren/logrus_mail) | Hook for sending exceptions via mail |
+| [Mongodb](https://github.com/weekface/mgorus) | Hook for logging to mongodb |
+| [NATS-Hook](https://github.com/rybit/nats_logrus_hook) | Hook for logging to [NATS](https://nats.io) |
+| [Octokit](https://github.com/dorajistyle/logrus-octokit-hook) | Hook for logging to github via octokit |
+| [Papertrail](https://github.com/polds/logrus-papertrail-hook) | Send errors to the [Papertrail](https://papertrailapp.com) hosted logging service via UDP. |
+| [PostgreSQL](https://github.com/gemnasium/logrus-postgresql-hook) | Send logs to [PostgreSQL](http://postgresql.org) |
+| [Pushover](https://github.com/toorop/logrus_pushover) | Send error via [Pushover](https://pushover.net) |
+| [Raygun](https://github.com/squirkle/logrus-raygun-hook) | Hook for logging to [Raygun.io](http://raygun.io/) |
+| [Redis-Hook](https://github.com/rogierlommers/logrus-redis-hook) | Hook for logging to a ELK stack (through Redis) |
+| [Rollrus](https://github.com/heroku/rollrus) | Hook for sending errors to rollbar |
+| [Scribe](https://github.com/sagar8192/logrus-scribe-hook) | Hook for logging to [Scribe](https://github.com/facebookarchive/scribe)|
+| [Sentry](https://github.com/evalphobia/logrus_sentry) | Send errors to the Sentry error logging and aggregation service. |
+| [Slackrus](https://github.com/johntdyer/slackrus) | Hook for Slack chat. |
+| [Stackdriver](https://github.com/knq/sdhook) | Hook for logging to [Google Stackdriver](https://cloud.google.com/logging/) |
+| [Sumorus](https://github.com/doublefree/sumorus) | Hook for logging to [SumoLogic](https://www.sumologic.com/)|
+| [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. |
+| [TraceView](https://github.com/evalphobia/logrus_appneta) | Hook for logging to [AppNeta TraceView](https://www.appneta.com/products/traceview/) |
+| [Typetalk](https://github.com/dragon3/logrus-typetalk-hook) | Hook for logging to [Typetalk](https://www.typetalk.in/) |
+| [logz.io](https://github.com/ripcurld00d/logrus-logzio-hook) | Hook for logging to [logz.io](https://logz.io), a Log as a Service using Logstash |
+
+#### 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`. For Windows, see
+    [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable).
+  * All options are listed in the [generated docs](https://godoc.org/github.com/sirupsen/logrus#TextFormatter).
+* `logrus.JSONFormatter`. Logs fields as JSON.
+  * All options are listed in the [generated docs](https://godoc.org/github.com/sirupsen/logrus#JSONFormatter).
+
+Third party logging formatters:
+
+* [`logstash`](https://github.com/bshuster-repo/logrus-logstash-hook). Logs fields as [Logstash](http://logstash.net) Events.
+* [`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`.
+
+This means that we can override the standard library logger easily:
+
+```go
+logger := logrus.New()
+logger.Formatter = &logrus.JSONFormatter{}
+
+// Use logrus for standard log output
+// Note that `log` here references stdlib's log
+// Not logrus imported under the name `log`.
+log.SetOutput(logger.Writer())
+```
+
+#### 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.|
+|[Logrus Viper Helper](https://github.com/heirko/go-contrib/tree/master/logrusHelper)|An Helper arround Logrus to wrap with spf13/Viper to load configuration with fangs! And to simplify Logrus configuration use some behavior of [Logrus Mate](https://github.com/gogap/logrus_mate). [sample](https://github.com/heirko/iris-contrib/blob/master/middleware/logrus-logger/example) |
+
+#### 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())
+```
+
+#### Fatal handlers
+
+Logrus can register one or more functions that will be called when any `fatal`
+level message is logged. The registered handlers will be executed before
+logrus performs a `os.Exit(1)`. This behavior may be helpful if callers need
+to gracefully shutdown. Unlike a `panic("Something went wrong...")` call which can be intercepted with a deferred `recover` a call to `os.Exit(1)` can not be intercepted.
+
+```
+...
+handler := func() {
+  // gracefully shutdown something...
+}
+logrus.RegisterExitHandler(handler)
+...
+```
+
+#### Thread safety
+
+By default Logger is protected by mutex for concurrent writes, this mutex is invoked when calling hooks and writing logs.
+If you are sure such locking is not needed, you can call logger.SetNoLock() to disable the locking.
+
+Situation when locking is not needed includes:
+
+* You have no hooks registered, or hooks calling is already thread-safe.
+
+* Writing to logger.Out is already thread-safe, for example:
+
+  1) logger.Out is protected by locks.
+
+  2) logger.Out is a os.File handler opened with `O_APPEND` flag, and every write is smaller than 4k. (This allow multi-thread/multi-process writing)
+
+     (Refer to http://www.notthewizard.com/2014/06/17/are-files-appends-really-atomic/)
diff --git a/vendor/github.com/Sirupsen/logrus/alt_exit.go b/vendor/github.com/Sirupsen/logrus/alt_exit.go
new file mode 100644 (file)
index 0000000..b4c9e84
--- /dev/null
@@ -0,0 +1,64 @@
+package logrus
+
+// The following code was sourced and modified from the
+// https://bitbucket.org/tebeka/atexit package governed by the following license:
+//
+// Copyright (c) 2012 Miki Tebeka <miki.tebeka@gmail.com>.
+//
+// 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.
+
+import (
+       "fmt"
+       "os"
+)
+
+var handlers = []func(){}
+
+func runHandler(handler func()) {
+       defer func() {
+               if err := recover(); err != nil {
+                       fmt.Fprintln(os.Stderr, "Error: Logrus exit handler error:", err)
+               }
+       }()
+
+       handler()
+}
+
+func runHandlers() {
+       for _, handler := range handlers {
+               runHandler(handler)
+       }
+}
+
+// Exit runs all the Logrus atexit handlers and then terminates the program using os.Exit(code)
+func Exit(code int) {
+       runHandlers()
+       os.Exit(code)
+}
+
+// RegisterExitHandler adds a Logrus Exit handler, call logrus.Exit to invoke
+// all handlers. The handlers will also be invoked when any Fatal log entry is
+// made.
+//
+// This method is useful when a caller wishes to use logrus to log a fatal
+// message but also needs to gracefully shutdown. An example usecase could be
+// closing database connections, or sending a alert that the application is
+// closing.
+func RegisterExitHandler(handler func()) {
+       handlers = append(handlers, handler)
+}
diff --git a/vendor/github.com/Sirupsen/logrus/alt_exit_test.go b/vendor/github.com/Sirupsen/logrus/alt_exit_test.go
new file mode 100644 (file)
index 0000000..022b778
--- /dev/null
@@ -0,0 +1,74 @@
+package logrus
+
+import (
+       "io/ioutil"
+       "os/exec"
+       "testing"
+       "time"
+)
+
+func TestRegister(t *testing.T) {
+       current := len(handlers)
+       RegisterExitHandler(func() {})
+       if len(handlers) != current+1 {
+               t.Fatalf("can't add handler")
+       }
+}
+
+func TestHandler(t *testing.T) {
+       gofile := "/tmp/testprog.go"
+       if err := ioutil.WriteFile(gofile, testprog, 0666); err != nil {
+               t.Fatalf("can't create go file")
+       }
+
+       outfile := "/tmp/testprog.out"
+       arg := time.Now().UTC().String()
+       err := exec.Command("go", "run", gofile, outfile, arg).Run()
+       if err == nil {
+               t.Fatalf("completed normally, should have failed")
+       }
+
+       data, err := ioutil.ReadFile(outfile)
+       if err != nil {
+               t.Fatalf("can't read output file %s", outfile)
+       }
+
+       if string(data) != arg {
+               t.Fatalf("bad data")
+       }
+}
+
+var testprog = []byte(`
+// Test program for atexit, gets output file and data as arguments and writes
+// data to output file in atexit handler.
+package main
+
+import (
+       "github.com/Sirupsen/logrus"
+       "flag"
+       "fmt"
+       "io/ioutil"
+)
+
+var outfile = ""
+var data = ""
+
+func handler() {
+       ioutil.WriteFile(outfile, []byte(data), 0666)
+}
+
+func badHandler() {
+       n := 0
+       fmt.Println(1/n)
+}
+
+func main() {
+       flag.Parse()
+       outfile = flag.Arg(0)
+       data = flag.Arg(1)
+
+       logrus.RegisterExitHandler(handler)
+       logrus.RegisterExitHandler(badHandler)
+       logrus.Fatal("Bye bye")
+}
+`)
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..4edbe7a
--- /dev/null
@@ -0,0 +1,275 @@
+package logrus
+
+import (
+       "bytes"
+       "fmt"
+       "os"
+       "sync"
+       "time"
+)
+
+var bufferPool *sync.Pool
+
+func init() {
+       bufferPool = &sync.Pool{
+               New: func() interface{} {
+                       return new(bytes.Buffer)
+               },
+       }
+}
+
+// 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
+
+       // When formatter is called in entry.log(), an Buffer may be set to entry
+       Buffer *bytes.Buffer
+}
+
+func NewEntry(logger *Logger) *Entry {
+       return &Entry{
+               Logger: logger,
+               // Default is three fields, give a little extra room
+               Data: make(Fields, 5),
+       }
+}
+
+// Returns the string representation from the reader and ultimately the
+// formatter.
+func (entry *Entry) String() (string, error) {
+       serialized, err := entry.Logger.Formatter.Format(entry)
+       if err != nil {
+               return "", err
+       }
+       str := string(serialized)
+       return str, nil
+}
+
+// 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) {
+       var buffer *bytes.Buffer
+       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()
+       }
+       buffer = bufferPool.Get().(*bytes.Buffer)
+       buffer.Reset()
+       defer bufferPool.Put(buffer)
+       entry.Buffer = buffer
+       serialized, err := entry.Logger.Formatter.Format(&entry)
+       entry.Buffer = nil
+       if err != nil {
+               entry.Logger.mu.Lock()
+               fmt.Fprintf(os.Stderr, "Failed to obtain reader, %v\n", err)
+               entry.Logger.mu.Unlock()
+       } else {
+               entry.Logger.mu.Lock()
+               _, err = entry.Logger.Out.Write(serialized)
+               if err != nil {
+                       fmt.Fprintf(os.Stderr, "Failed to write to log, %v\n", err)
+               }
+               entry.Logger.mu.Unlock()
+       }
+
+       // 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...))
+       }
+       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...))
+       }
+       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...))
+       }
+       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/entry_test.go b/vendor/github.com/Sirupsen/logrus/entry_test.go
new file mode 100644 (file)
index 0000000..99c3b41
--- /dev/null
@@ -0,0 +1,77 @@
+package logrus
+
+import (
+       "bytes"
+       "fmt"
+       "testing"
+
+       "github.com/stretchr/testify/assert"
+)
+
+func TestEntryWithError(t *testing.T) {
+
+       assert := assert.New(t)
+
+       defer func() {
+               ErrorKey = "error"
+       }()
+
+       err := fmt.Errorf("kaboom at layer %d", 4711)
+
+       assert.Equal(err, WithError(err).Data["error"])
+
+       logger := New()
+       logger.Out = &bytes.Buffer{}
+       entry := NewEntry(logger)
+
+       assert.Equal(err, entry.WithError(err).Data["error"])
+
+       ErrorKey = "err"
+
+       assert.Equal(err, entry.WithError(err).Data["err"])
+
+}
+
+func TestEntryPanicln(t *testing.T) {
+       errBoom := fmt.Errorf("boom time")
+
+       defer func() {
+               p := recover()
+               assert.NotNil(t, p)
+
+               switch pVal := p.(type) {
+               case *Entry:
+                       assert.Equal(t, "kaboom", pVal.Message)
+                       assert.Equal(t, errBoom, pVal.Data["err"])
+               default:
+                       t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal)
+               }
+       }()
+
+       logger := New()
+       logger.Out = &bytes.Buffer{}
+       entry := NewEntry(logger)
+       entry.WithField("err", errBoom).Panicln("kaboom")
+}
+
+func TestEntryPanicf(t *testing.T) {
+       errBoom := fmt.Errorf("boom again")
+
+       defer func() {
+               p := recover()
+               assert.NotNil(t, p)
+
+               switch pVal := p.(type) {
+               case *Entry:
+                       assert.Equal(t, "kaboom true", pVal.Message)
+                       assert.Equal(t, errBoom, pVal.Data["err"])
+               default:
+                       t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal)
+               }
+       }()
+
+       logger := New()
+       logger.Out = &bytes.Buffer{}
+       entry := NewEntry(logger)
+       entry.WithField("err", errBoom).Panicf("kaboom %v", true)
+}
diff --git a/vendor/github.com/Sirupsen/logrus/examples/basic/basic.go b/vendor/github.com/Sirupsen/logrus/examples/basic/basic.go
new file mode 100644 (file)
index 0000000..ad703fc
--- /dev/null
@@ -0,0 +1,59 @@
+package main
+
+import (
+       "github.com/Sirupsen/logrus"
+       // "os"
+)
+
+var log = logrus.New()
+
+func init() {
+       log.Formatter = new(logrus.JSONFormatter)
+       log.Formatter = new(logrus.TextFormatter) // default
+
+       // file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666)
+       // if err == nil {
+       //      log.Out = file
+       // } else {
+       //      log.Info("Failed to log to file, using default stderr")
+       // }
+
+       log.Level = logrus.DebugLevel
+}
+
+func main() {
+       defer func() {
+               err := recover()
+               if err != nil {
+                       log.WithFields(logrus.Fields{
+                               "omg":    true,
+                               "err":    err,
+                               "number": 100,
+                       }).Fatal("The ice breaks!")
+               }
+       }()
+
+       log.WithFields(logrus.Fields{
+               "animal": "walrus",
+               "number": 8,
+       }).Debug("Started observing beach")
+
+       log.WithFields(logrus.Fields{
+               "animal": "walrus",
+               "size":   10,
+       }).Info("A group of walrus emerges from the ocean")
+
+       log.WithFields(logrus.Fields{
+               "omg":    true,
+               "number": 122,
+       }).Warn("The group's number increased tremendously!")
+
+       log.WithFields(logrus.Fields{
+               "temperature": -4,
+       }).Debug("Temperature changes")
+
+       log.WithFields(logrus.Fields{
+               "animal": "orca",
+               "size":   9009,
+       }).Panic("It's over 9000!")
+}
diff --git a/vendor/github.com/Sirupsen/logrus/examples/hook/hook.go b/vendor/github.com/Sirupsen/logrus/examples/hook/hook.go
new file mode 100644 (file)
index 0000000..3187f6d
--- /dev/null
@@ -0,0 +1,30 @@
+package main
+
+import (
+       "github.com/Sirupsen/logrus"
+       "gopkg.in/gemnasium/logrus-airbrake-hook.v2"
+)
+
+var log = logrus.New()
+
+func init() {
+       log.Formatter = new(logrus.TextFormatter) // default
+       log.Hooks.Add(airbrake.NewHook(123, "xyz", "development"))
+}
+
+func main() {
+       log.WithFields(logrus.Fields{
+               "animal": "walrus",
+               "size":   10,
+       }).Info("A group of walrus emerges from the ocean")
+
+       log.WithFields(logrus.Fields{
+               "omg":    true,
+               "number": 122,
+       }).Warn("The group's number increased tremendously!")
+
+       log.WithFields(logrus.Fields{
+               "omg":    true,
+               "number": 100,
+       }).Fatal("The ice breaks!")
+}
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..b5fbe93
--- /dev/null
@@ -0,0 +1,45 @@
+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) {
+       if t, ok := data["time"]; ok {
+               data["fields.time"] = t
+       }
+
+       if m, ok := data["msg"]; ok {
+               data["fields.msg"] = m
+       }
+
+       if l, ok := data["level"]; ok {
+               data["fields.level"] = l
+       }
+}
diff --git a/vendor/github.com/Sirupsen/logrus/formatter_bench_test.go b/vendor/github.com/Sirupsen/logrus/formatter_bench_test.go
new file mode 100644 (file)
index 0000000..d948158
--- /dev/null
@@ -0,0 +1,101 @@
+package logrus
+
+import (
+       "fmt"
+       "testing"
+       "time"
+)
+
+// smallFields is a small size data set for benchmarking
+var smallFields = Fields{
+       "foo":   "bar",
+       "baz":   "qux",
+       "one":   "two",
+       "three": "four",
+}
+
+// largeFields is a large size data set for benchmarking
+var largeFields = Fields{
+       "foo":       "bar",
+       "baz":       "qux",
+       "one":       "two",
+       "three":     "four",
+       "five":      "six",
+       "seven":     "eight",
+       "nine":      "ten",
+       "eleven":    "twelve",
+       "thirteen":  "fourteen",
+       "fifteen":   "sixteen",
+       "seventeen": "eighteen",
+       "nineteen":  "twenty",
+       "a":         "b",
+       "c":         "d",
+       "e":         "f",
+       "g":         "h",
+       "i":         "j",
+       "k":         "l",
+       "m":         "n",
+       "o":         "p",
+       "q":         "r",
+       "s":         "t",
+       "u":         "v",
+       "w":         "x",
+       "y":         "z",
+       "this":      "will",
+       "make":      "thirty",
+       "entries":   "yeah",
+}
+
+var errorFields = Fields{
+       "foo": fmt.Errorf("bar"),
+       "baz": fmt.Errorf("qux"),
+}
+
+func BenchmarkErrorTextFormatter(b *testing.B) {
+       doBenchmark(b, &TextFormatter{DisableColors: true}, errorFields)
+}
+
+func BenchmarkSmallTextFormatter(b *testing.B) {
+       doBenchmark(b, &TextFormatter{DisableColors: true}, smallFields)
+}
+
+func BenchmarkLargeTextFormatter(b *testing.B) {
+       doBenchmark(b, &TextFormatter{DisableColors: true}, largeFields)
+}
+
+func BenchmarkSmallColoredTextFormatter(b *testing.B) {
+       doBenchmark(b, &TextFormatter{ForceColors: true}, smallFields)
+}
+
+func BenchmarkLargeColoredTextFormatter(b *testing.B) {
+       doBenchmark(b, &TextFormatter{ForceColors: true}, largeFields)
+}
+
+func BenchmarkSmallJSONFormatter(b *testing.B) {
+       doBenchmark(b, &JSONFormatter{}, smallFields)
+}
+
+func BenchmarkLargeJSONFormatter(b *testing.B) {
+       doBenchmark(b, &JSONFormatter{}, largeFields)
+}
+
+func doBenchmark(b *testing.B, formatter Formatter, fields Fields) {
+       logger := New()
+
+       entry := &Entry{
+               Time:    time.Time{},
+               Level:   InfoLevel,
+               Message: "message",
+               Data:    fields,
+               Logger:  logger,
+       }
+       var d []byte
+       var err error
+       for i := 0; i < b.N; i++ {
+               d, err = formatter.Format(entry)
+               if err != nil {
+                       b.Fatal(err)
+               }
+               b.SetBytes(int64(len(d)))
+       }
+}
diff --git a/vendor/github.com/Sirupsen/logrus/hook_test.go b/vendor/github.com/Sirupsen/logrus/hook_test.go
new file mode 100644 (file)
index 0000000..13f34cb
--- /dev/null
@@ -0,0 +1,122 @@
+package logrus
+
+import (
+       "testing"
+
+       "github.com/stretchr/testify/assert"
+)
+
+type TestHook struct {
+       Fired bool
+}
+
+func (hook *TestHook) Fire(entry *Entry) error {
+       hook.Fired = true
+       return nil
+}
+
+func (hook *TestHook) Levels() []Level {
+       return []Level{
+               DebugLevel,
+               InfoLevel,
+               WarnLevel,
+               ErrorLevel,
+               FatalLevel,
+               PanicLevel,
+       }
+}
+
+func TestHookFires(t *testing.T) {
+       hook := new(TestHook)
+
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Hooks.Add(hook)
+               assert.Equal(t, hook.Fired, false)
+
+               log.Print("test")
+       }, func(fields Fields) {
+               assert.Equal(t, hook.Fired, true)
+       })
+}
+
+type ModifyHook struct {
+}
+
+func (hook *ModifyHook) Fire(entry *Entry) error {
+       entry.Data["wow"] = "whale"
+       return nil
+}
+
+func (hook *ModifyHook) Levels() []Level {
+       return []Level{
+               DebugLevel,
+               InfoLevel,
+               WarnLevel,
+               ErrorLevel,
+               FatalLevel,
+               PanicLevel,
+       }
+}
+
+func TestHookCanModifyEntry(t *testing.T) {
+       hook := new(ModifyHook)
+
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Hooks.Add(hook)
+               log.WithField("wow", "elephant").Print("test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["wow"], "whale")
+       })
+}
+
+func TestCanFireMultipleHooks(t *testing.T) {
+       hook1 := new(ModifyHook)
+       hook2 := new(TestHook)
+
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Hooks.Add(hook1)
+               log.Hooks.Add(hook2)
+
+               log.WithField("wow", "elephant").Print("test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["wow"], "whale")
+               assert.Equal(t, hook2.Fired, true)
+       })
+}
+
+type ErrorHook struct {
+       Fired bool
+}
+
+func (hook *ErrorHook) Fire(entry *Entry) error {
+       hook.Fired = true
+       return nil
+}
+
+func (hook *ErrorHook) Levels() []Level {
+       return []Level{
+               ErrorLevel,
+       }
+}
+
+func TestErrorHookShouldntFireOnInfo(t *testing.T) {
+       hook := new(ErrorHook)
+
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Hooks.Add(hook)
+               log.Info("test")
+       }, func(fields Fields) {
+               assert.Equal(t, hook.Fired, false)
+       })
+}
+
+func TestErrorHookShouldFireOnError(t *testing.T) {
+       hook := new(ErrorHook)
+
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Hooks.Add(hook)
+               log.Error("test")
+       }, func(fields Fields) {
+               assert.Equal(t, hook.Fired, true)
+       })
+}
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/hooks/syslog/README.md b/vendor/github.com/Sirupsen/logrus/hooks/syslog/README.md
new file mode 100644 (file)
index 0000000..066704b
--- /dev/null
@@ -0,0 +1,39 @@
+# Syslog Hooks for Logrus <img src="http://i.imgur.com/hTeVwmJ.png" width="40" height="40" alt=":walrus:" class="emoji" title=":walrus:"/>
+
+## Usage
+
+```go
+import (
+  "log/syslog"
+  "github.com/Sirupsen/logrus"
+  logrus_syslog "github.com/Sirupsen/logrus/hooks/syslog"
+)
+
+func main() {
+  log       := logrus.New()
+  hook, err := logrus_syslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
+
+  if err == nil {
+    log.Hooks.Add(hook)
+  }
+}
+```
+
+If you want to connect to local syslog (Ex. "/dev/log" or "/var/run/syslog" or "/var/run/log"). Just assign empty string to the first two parameters of `NewSyslogHook`. It should look like the following.
+
+```go
+import (
+  "log/syslog"
+  "github.com/Sirupsen/logrus"
+  logrus_syslog "github.com/Sirupsen/logrus/hooks/syslog"
+)
+
+func main() {
+  log       := logrus.New()
+  hook, err := logrus_syslog.NewSyslogHook("", "", syslog.LOG_INFO, "")
+
+  if err == nil {
+    log.Hooks.Add(hook)
+  }
+}
+```
\ No newline at end of file
diff --git a/vendor/github.com/Sirupsen/logrus/hooks/syslog/syslog.go b/vendor/github.com/Sirupsen/logrus/hooks/syslog/syslog.go
new file mode 100644 (file)
index 0000000..a36e200
--- /dev/null
@@ -0,0 +1,54 @@
+// +build !windows,!nacl,!plan9
+
+package logrus_syslog
+
+import (
+       "fmt"
+       "github.com/Sirupsen/logrus"
+       "log/syslog"
+       "os"
+)
+
+// SyslogHook to send logs via syslog.
+type SyslogHook struct {
+       Writer        *syslog.Writer
+       SyslogNetwork string
+       SyslogRaddr   string
+}
+
+// Creates a hook to be added to an instance of logger. This is called with
+// `hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_DEBUG, "")`
+// `if err == nil { log.Hooks.Add(hook) }`
+func NewSyslogHook(network, raddr string, priority syslog.Priority, tag string) (*SyslogHook, error) {
+       w, err := syslog.Dial(network, raddr, priority, tag)
+       return &SyslogHook{w, network, raddr}, err
+}
+
+func (hook *SyslogHook) Fire(entry *logrus.Entry) error {
+       line, err := entry.String()
+       if err != nil {
+               fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err)
+               return err
+       }
+
+       switch entry.Level {
+       case logrus.PanicLevel:
+               return hook.Writer.Crit(line)
+       case logrus.FatalLevel:
+               return hook.Writer.Crit(line)
+       case logrus.ErrorLevel:
+               return hook.Writer.Err(line)
+       case logrus.WarnLevel:
+               return hook.Writer.Warning(line)
+       case logrus.InfoLevel:
+               return hook.Writer.Info(line)
+       case logrus.DebugLevel:
+               return hook.Writer.Debug(line)
+       default:
+               return nil
+       }
+}
+
+func (hook *SyslogHook) Levels() []logrus.Level {
+       return logrus.AllLevels
+}
diff --git a/vendor/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go b/vendor/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go
new file mode 100644 (file)
index 0000000..42762dc
--- /dev/null
@@ -0,0 +1,26 @@
+package logrus_syslog
+
+import (
+       "github.com/Sirupsen/logrus"
+       "log/syslog"
+       "testing"
+)
+
+func TestLocalhostAddAndPrint(t *testing.T) {
+       log := logrus.New()
+       hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
+
+       if err != nil {
+               t.Errorf("Unable to connect to local syslog.")
+       }
+
+       log.Hooks.Add(hook)
+
+       for _, level := range hook.Levels() {
+               if len(log.Hooks[level]) != 1 {
+                       t.Errorf("SyslogHook was not added. The length of log.Hooks[%v]: %v", level, len(log.Hooks[level]))
+               }
+       }
+
+       log.Info("Congratulations!")
+}
diff --git a/vendor/github.com/Sirupsen/logrus/hooks/test/test.go b/vendor/github.com/Sirupsen/logrus/hooks/test/test.go
new file mode 100644 (file)
index 0000000..0688125
--- /dev/null
@@ -0,0 +1,67 @@
+package test
+
+import (
+       "io/ioutil"
+
+       "github.com/Sirupsen/logrus"
+)
+
+// test.Hook is a hook designed for dealing with logs in test scenarios.
+type Hook struct {
+       Entries []*logrus.Entry
+}
+
+// Installs a test hook for the global logger.
+func NewGlobal() *Hook {
+
+       hook := new(Hook)
+       logrus.AddHook(hook)
+
+       return hook
+
+}
+
+// Installs a test hook for a given local logger.
+func NewLocal(logger *logrus.Logger) *Hook {
+
+       hook := new(Hook)
+       logger.Hooks.Add(hook)
+
+       return hook
+
+}
+
+// Creates a discarding logger and installs the test hook.
+func NewNullLogger() (*logrus.Logger, *Hook) {
+
+       logger := logrus.New()
+       logger.Out = ioutil.Discard
+
+       return logger, NewLocal(logger)
+
+}
+
+func (t *Hook) Fire(e *logrus.Entry) error {
+       t.Entries = append(t.Entries, e)
+       return nil
+}
+
+func (t *Hook) Levels() []logrus.Level {
+       return logrus.AllLevels
+}
+
+// LastEntry returns the last entry that was logged or nil.
+func (t *Hook) LastEntry() (l *logrus.Entry) {
+
+       if i := len(t.Entries) - 1; i < 0 {
+               return nil
+       } else {
+               return t.Entries[i]
+       }
+
+}
+
+// Reset removes all Entries from this test hook.
+func (t *Hook) Reset() {
+       t.Entries = make([]*logrus.Entry, 0)
+}
diff --git a/vendor/github.com/Sirupsen/logrus/hooks/test/test_test.go b/vendor/github.com/Sirupsen/logrus/hooks/test/test_test.go
new file mode 100644 (file)
index 0000000..d69455b
--- /dev/null
@@ -0,0 +1,39 @@
+package test
+
+import (
+       "testing"
+
+       "github.com/Sirupsen/logrus"
+       "github.com/stretchr/testify/assert"
+)
+
+func TestAllHooks(t *testing.T) {
+
+       assert := assert.New(t)
+
+       logger, hook := NewNullLogger()
+       assert.Nil(hook.LastEntry())
+       assert.Equal(0, len(hook.Entries))
+
+       logger.Error("Hello error")
+       assert.Equal(logrus.ErrorLevel, hook.LastEntry().Level)
+       assert.Equal("Hello error", hook.LastEntry().Message)
+       assert.Equal(1, len(hook.Entries))
+
+       logger.Warn("Hello warning")
+       assert.Equal(logrus.WarnLevel, hook.LastEntry().Level)
+       assert.Equal("Hello warning", hook.LastEntry().Message)
+       assert.Equal(2, len(hook.Entries))
+
+       hook.Reset()
+       assert.Nil(hook.LastEntry())
+       assert.Equal(0, len(hook.Entries))
+
+       hook = NewGlobal()
+
+       logrus.Error("Hello error")
+       assert.Equal(logrus.ErrorLevel, hook.LastEntry().Level)
+       assert.Equal("Hello error", hook.LastEntry().Message)
+       assert.Equal(1, len(hook.Entries))
+
+}
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..266554e
--- /dev/null
@@ -0,0 +1,74 @@
+package logrus
+
+import (
+       "encoding/json"
+       "fmt"
+)
+
+type fieldKey string
+type FieldMap map[fieldKey]string
+
+const (
+       FieldKeyMsg   = "msg"
+       FieldKeyLevel = "level"
+       FieldKeyTime  = "time"
+)
+
+func (f FieldMap) resolve(key fieldKey) string {
+       if k, ok := f[key]; ok {
+               return k
+       }
+
+       return string(key)
+}
+
+type JSONFormatter struct {
+       // TimestampFormat sets the format used for marshaling timestamps.
+       TimestampFormat string
+
+       // DisableTimestamp allows disabling automatic timestamps in output
+       DisableTimestamp bool
+
+       // FieldMap allows users to customize the names of keys for various fields.
+       // As an example:
+       // formatter := &JSONFormatter{
+       //      FieldMap: FieldMap{
+       //               FieldKeyTime: "@timestamp",
+       //               FieldKeyLevel: "@level",
+       //               FieldKeyLevel: "@message",
+       //    },
+       // }
+       FieldMap FieldMap
+}
+
+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
+       }
+
+       if !f.DisableTimestamp {
+               data[f.FieldMap.resolve(FieldKeyTime)] = entry.Time.Format(timestampFormat)
+       }
+       data[f.FieldMap.resolve(FieldKeyMsg)] = entry.Message
+       data[f.FieldMap.resolve(FieldKeyLevel)] = 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/json_formatter_test.go b/vendor/github.com/Sirupsen/logrus/json_formatter_test.go
new file mode 100644 (file)
index 0000000..51093a7
--- /dev/null
@@ -0,0 +1,199 @@
+package logrus
+
+import (
+       "encoding/json"
+       "errors"
+       "strings"
+       "testing"
+)
+
+func TestErrorNotLost(t *testing.T) {
+       formatter := &JSONFormatter{}
+
+       b, err := formatter.Format(WithField("error", errors.New("wild walrus")))
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+
+       entry := make(map[string]interface{})
+       err = json.Unmarshal(b, &entry)
+       if err != nil {
+               t.Fatal("Unable to unmarshal formatted entry: ", err)
+       }
+
+       if entry["error"] != "wild walrus" {
+               t.Fatal("Error field not set")
+       }
+}
+
+func TestErrorNotLostOnFieldNotNamedError(t *testing.T) {
+       formatter := &JSONFormatter{}
+
+       b, err := formatter.Format(WithField("omg", errors.New("wild walrus")))
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+
+       entry := make(map[string]interface{})
+       err = json.Unmarshal(b, &entry)
+       if err != nil {
+               t.Fatal("Unable to unmarshal formatted entry: ", err)
+       }
+
+       if entry["omg"] != "wild walrus" {
+               t.Fatal("Error field not set")
+       }
+}
+
+func TestFieldClashWithTime(t *testing.T) {
+       formatter := &JSONFormatter{}
+
+       b, err := formatter.Format(WithField("time", "right now!"))
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+
+       entry := make(map[string]interface{})
+       err = json.Unmarshal(b, &entry)
+       if err != nil {
+               t.Fatal("Unable to unmarshal formatted entry: ", err)
+       }
+
+       if entry["fields.time"] != "right now!" {
+               t.Fatal("fields.time not set to original time field")
+       }
+
+       if entry["time"] != "0001-01-01T00:00:00Z" {
+               t.Fatal("time field not set to current time, was: ", entry["time"])
+       }
+}
+
+func TestFieldClashWithMsg(t *testing.T) {
+       formatter := &JSONFormatter{}
+
+       b, err := formatter.Format(WithField("msg", "something"))
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+
+       entry := make(map[string]interface{})
+       err = json.Unmarshal(b, &entry)
+       if err != nil {
+               t.Fatal("Unable to unmarshal formatted entry: ", err)
+       }
+
+       if entry["fields.msg"] != "something" {
+               t.Fatal("fields.msg not set to original msg field")
+       }
+}
+
+func TestFieldClashWithLevel(t *testing.T) {
+       formatter := &JSONFormatter{}
+
+       b, err := formatter.Format(WithField("level", "something"))
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+
+       entry := make(map[string]interface{})
+       err = json.Unmarshal(b, &entry)
+       if err != nil {
+               t.Fatal("Unable to unmarshal formatted entry: ", err)
+       }
+
+       if entry["fields.level"] != "something" {
+               t.Fatal("fields.level not set to original level field")
+       }
+}
+
+func TestJSONEntryEndsWithNewline(t *testing.T) {
+       formatter := &JSONFormatter{}
+
+       b, err := formatter.Format(WithField("level", "something"))
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+
+       if b[len(b)-1] != '\n' {
+               t.Fatal("Expected JSON log entry to end with a newline")
+       }
+}
+
+func TestJSONMessageKey(t *testing.T) {
+       formatter := &JSONFormatter{
+               FieldMap: FieldMap{
+                       FieldKeyMsg: "message",
+               },
+       }
+
+       b, err := formatter.Format(&Entry{Message: "oh hai"})
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+       s := string(b)
+       if !(strings.Contains(s, "message") && strings.Contains(s, "oh hai")) {
+               t.Fatal("Expected JSON to format message key")
+       }
+}
+
+func TestJSONLevelKey(t *testing.T) {
+       formatter := &JSONFormatter{
+               FieldMap: FieldMap{
+                       FieldKeyLevel: "somelevel",
+               },
+       }
+
+       b, err := formatter.Format(WithField("level", "something"))
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+       s := string(b)
+       if !strings.Contains(s, "somelevel") {
+               t.Fatal("Expected JSON to format level key")
+       }
+}
+
+func TestJSONTimeKey(t *testing.T) {
+       formatter := &JSONFormatter{
+               FieldMap: FieldMap{
+                       FieldKeyTime: "timeywimey",
+               },
+       }
+
+       b, err := formatter.Format(WithField("level", "something"))
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+       s := string(b)
+       if !strings.Contains(s, "timeywimey") {
+               t.Fatal("Expected JSON to format time key")
+       }
+}
+
+func TestJSONDisableTimestamp(t *testing.T) {
+       formatter := &JSONFormatter{
+               DisableTimestamp: true,
+       }
+
+       b, err := formatter.Format(WithField("level", "something"))
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+       s := string(b)
+       if strings.Contains(s, FieldKeyTime) {
+               t.Error("Did not prevent timestamp", s)
+       }
+}
+
+func TestJSONEnableTimestamp(t *testing.T) {
+       formatter := &JSONFormatter{}
+
+       b, err := formatter.Format(WithField("level", "something"))
+       if err != nil {
+               t.Fatal("Unable to format entry: ", err)
+       }
+       s := string(b)
+       if !strings.Contains(s, FieldKeyTime) {
+               t.Error("Timestamp not present", s)
+       }
+}
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..b769f3d
--- /dev/null
@@ -0,0 +1,308 @@
+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. Locking is enabled by Default
+       mu MutexWrap
+       // Reusable empty entry
+       entryPool sync.Pool
+}
+
+type MutexWrap struct {
+       lock     sync.Mutex
+       disabled bool
+}
+
+func (mw *MutexWrap) Lock() {
+       if !mw.disabled {
+               mw.lock.Lock()
+       }
+}
+
+func (mw *MutexWrap) Unlock() {
+       if !mw.disabled {
+               mw.lock.Unlock()
+       }
+}
+
+func (mw *MutexWrap) Disable() {
+       mw.disabled = true
+}
+
+// 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,
+       }
+}
+
+func (logger *Logger) newEntry() *Entry {
+       entry, ok := logger.entryPool.Get().(*Entry)
+       if ok {
+               return entry
+       }
+       return NewEntry(logger)
+}
+
+func (logger *Logger) releaseEntry(entry *Entry) {
+       logger.entryPool.Put(entry)
+}
+
+// Adds a field to the log entry, note that 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 {
+       entry := logger.newEntry()
+       defer logger.releaseEntry(entry)
+       return entry.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 {
+       entry := logger.newEntry()
+       defer logger.releaseEntry(entry)
+       return entry.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 {
+       entry := logger.newEntry()
+       defer logger.releaseEntry(entry)
+       return entry.WithError(err)
+}
+
+func (logger *Logger) Debugf(format string, args ...interface{}) {
+       if logger.Level >= DebugLevel {
+               entry := logger.newEntry()
+               entry.Debugf(format, args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Infof(format string, args ...interface{}) {
+       if logger.Level >= InfoLevel {
+               entry := logger.newEntry()
+               entry.Infof(format, args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Printf(format string, args ...interface{}) {
+       entry := logger.newEntry()
+       entry.Printf(format, args...)
+       logger.releaseEntry(entry)
+}
+
+func (logger *Logger) Warnf(format string, args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               entry := logger.newEntry()
+               entry.Warnf(format, args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Warningf(format string, args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               entry := logger.newEntry()
+               entry.Warnf(format, args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Errorf(format string, args ...interface{}) {
+       if logger.Level >= ErrorLevel {
+               entry := logger.newEntry()
+               entry.Errorf(format, args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Fatalf(format string, args ...interface{}) {
+       if logger.Level >= FatalLevel {
+               entry := logger.newEntry()
+               entry.Fatalf(format, args...)
+               logger.releaseEntry(entry)
+       }
+       Exit(1)
+}
+
+func (logger *Logger) Panicf(format string, args ...interface{}) {
+       if logger.Level >= PanicLevel {
+               entry := logger.newEntry()
+               entry.Panicf(format, args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Debug(args ...interface{}) {
+       if logger.Level >= DebugLevel {
+               entry := logger.newEntry()
+               entry.Debug(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Info(args ...interface{}) {
+       if logger.Level >= InfoLevel {
+               entry := logger.newEntry()
+               entry.Info(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Print(args ...interface{}) {
+       entry := logger.newEntry()
+       entry.Info(args...)
+       logger.releaseEntry(entry)
+}
+
+func (logger *Logger) Warn(args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               entry := logger.newEntry()
+               entry.Warn(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Warning(args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               entry := logger.newEntry()
+               entry.Warn(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Error(args ...interface{}) {
+       if logger.Level >= ErrorLevel {
+               entry := logger.newEntry()
+               entry.Error(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Fatal(args ...interface{}) {
+       if logger.Level >= FatalLevel {
+               entry := logger.newEntry()
+               entry.Fatal(args...)
+               logger.releaseEntry(entry)
+       }
+       Exit(1)
+}
+
+func (logger *Logger) Panic(args ...interface{}) {
+       if logger.Level >= PanicLevel {
+               entry := logger.newEntry()
+               entry.Panic(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Debugln(args ...interface{}) {
+       if logger.Level >= DebugLevel {
+               entry := logger.newEntry()
+               entry.Debugln(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Infoln(args ...interface{}) {
+       if logger.Level >= InfoLevel {
+               entry := logger.newEntry()
+               entry.Infoln(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Println(args ...interface{}) {
+       entry := logger.newEntry()
+       entry.Println(args...)
+       logger.releaseEntry(entry)
+}
+
+func (logger *Logger) Warnln(args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               entry := logger.newEntry()
+               entry.Warnln(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Warningln(args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               entry := logger.newEntry()
+               entry.Warnln(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Errorln(args ...interface{}) {
+       if logger.Level >= ErrorLevel {
+               entry := logger.newEntry()
+               entry.Errorln(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+func (logger *Logger) Fatalln(args ...interface{}) {
+       if logger.Level >= FatalLevel {
+               entry := logger.newEntry()
+               entry.Fatalln(args...)
+               logger.releaseEntry(entry)
+       }
+       Exit(1)
+}
+
+func (logger *Logger) Panicln(args ...interface{}) {
+       if logger.Level >= PanicLevel {
+               entry := logger.newEntry()
+               entry.Panicln(args...)
+               logger.releaseEntry(entry)
+       }
+}
+
+//When file is opened with appending mode, it's safe to
+//write concurrently to a file (within 4k message on Linux).
+//In these cases user can choose to disable the lock.
+func (logger *Logger) SetNoLock() {
+       logger.mu.Disable()
+}
diff --git a/vendor/github.com/Sirupsen/logrus/logger_bench_test.go b/vendor/github.com/Sirupsen/logrus/logger_bench_test.go
new file mode 100644 (file)
index 0000000..dd23a35
--- /dev/null
@@ -0,0 +1,61 @@
+package logrus
+
+import (
+       "os"
+       "testing"
+)
+
+// smallFields is a small size data set for benchmarking
+var loggerFields = Fields{
+       "foo":   "bar",
+       "baz":   "qux",
+       "one":   "two",
+       "three": "four",
+}
+
+func BenchmarkDummyLogger(b *testing.B) {
+       nullf, err := os.OpenFile("/dev/null", os.O_WRONLY, 0666)
+       if err != nil {
+               b.Fatalf("%v", err)
+       }
+       defer nullf.Close()
+       doLoggerBenchmark(b, nullf, &TextFormatter{DisableColors: true}, smallFields)
+}
+
+func BenchmarkDummyLoggerNoLock(b *testing.B) {
+       nullf, err := os.OpenFile("/dev/null", os.O_WRONLY|os.O_APPEND, 0666)
+       if err != nil {
+               b.Fatalf("%v", err)
+       }
+       defer nullf.Close()
+       doLoggerBenchmarkNoLock(b, nullf, &TextFormatter{DisableColors: true}, smallFields)
+}
+
+func doLoggerBenchmark(b *testing.B, out *os.File, formatter Formatter, fields Fields) {
+       logger := Logger{
+               Out:       out,
+               Level:     InfoLevel,
+               Formatter: formatter,
+       }
+       entry := logger.WithFields(fields)
+       b.RunParallel(func(pb *testing.PB) {
+               for pb.Next() {
+                       entry.Info("aaa")
+               }
+       })
+}
+
+func doLoggerBenchmarkNoLock(b *testing.B, out *os.File, formatter Formatter, fields Fields) {
+       logger := Logger{
+               Out:       out,
+               Level:     InfoLevel,
+               Formatter: formatter,
+       }
+       logger.SetNoLock()
+       entry := logger.WithFields(fields)
+       b.RunParallel(func(pb *testing.PB) {
+               for pb.Next() {
+                       entry.Info("aaa")
+               }
+       })
+}
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/logrus_test.go b/vendor/github.com/Sirupsen/logrus/logrus_test.go
new file mode 100644 (file)
index 0000000..78cbc28
--- /dev/null
@@ -0,0 +1,386 @@
+package logrus
+
+import (
+       "bytes"
+       "encoding/json"
+       "strconv"
+       "strings"
+       "sync"
+       "testing"
+
+       "github.com/stretchr/testify/assert"
+)
+
+func LogAndAssertJSON(t *testing.T, log func(*Logger), assertions func(fields Fields)) {
+       var buffer bytes.Buffer
+       var fields Fields
+
+       logger := New()
+       logger.Out = &buffer
+       logger.Formatter = new(JSONFormatter)
+
+       log(logger)
+
+       err := json.Unmarshal(buffer.Bytes(), &fields)
+       assert.Nil(t, err)
+
+       assertions(fields)
+}
+
+func LogAndAssertText(t *testing.T, log func(*Logger), assertions func(fields map[string]string)) {
+       var buffer bytes.Buffer
+
+       logger := New()
+       logger.Out = &buffer
+       logger.Formatter = &TextFormatter{
+               DisableColors: true,
+       }
+
+       log(logger)
+
+       fields := make(map[string]string)
+       for _, kv := range strings.Split(buffer.String(), " ") {
+               if !strings.Contains(kv, "=") {
+                       continue
+               }
+               kvArr := strings.Split(kv, "=")
+               key := strings.TrimSpace(kvArr[0])
+               val := kvArr[1]
+               if kvArr[1][0] == '"' {
+                       var err error
+                       val, err = strconv.Unquote(val)
+                       assert.NoError(t, err)
+               }
+               fields[key] = val
+       }
+       assertions(fields)
+}
+
+func TestPrint(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Print("test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "test")
+               assert.Equal(t, fields["level"], "info")
+       })
+}
+
+func TestInfo(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Info("test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "test")
+               assert.Equal(t, fields["level"], "info")
+       })
+}
+
+func TestWarn(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Warn("test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "test")
+               assert.Equal(t, fields["level"], "warning")
+       })
+}
+
+func TestInfolnShouldAddSpacesBetweenStrings(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Infoln("test", "test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "test test")
+       })
+}
+
+func TestInfolnShouldAddSpacesBetweenStringAndNonstring(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Infoln("test", 10)
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "test 10")
+       })
+}
+
+func TestInfolnShouldAddSpacesBetweenTwoNonStrings(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Infoln(10, 10)
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "10 10")
+       })
+}
+
+func TestInfoShouldAddSpacesBetweenTwoNonStrings(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Infoln(10, 10)
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "10 10")
+       })
+}
+
+func TestInfoShouldNotAddSpacesBetweenStringAndNonstring(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Info("test", 10)
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "test10")
+       })
+}
+
+func TestInfoShouldNotAddSpacesBetweenStrings(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.Info("test", "test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "testtest")
+       })
+}
+
+func TestWithFieldsShouldAllowAssignments(t *testing.T) {
+       var buffer bytes.Buffer
+       var fields Fields
+
+       logger := New()
+       logger.Out = &buffer
+       logger.Formatter = new(JSONFormatter)
+
+       localLog := logger.WithFields(Fields{
+               "key1": "value1",
+       })
+
+       localLog.WithField("key2", "value2").Info("test")
+       err := json.Unmarshal(buffer.Bytes(), &fields)
+       assert.Nil(t, err)
+
+       assert.Equal(t, "value2", fields["key2"])
+       assert.Equal(t, "value1", fields["key1"])
+
+       buffer = bytes.Buffer{}
+       fields = Fields{}
+       localLog.Info("test")
+       err = json.Unmarshal(buffer.Bytes(), &fields)
+       assert.Nil(t, err)
+
+       _, ok := fields["key2"]
+       assert.Equal(t, false, ok)
+       assert.Equal(t, "value1", fields["key1"])
+}
+
+func TestUserSuppliedFieldDoesNotOverwriteDefaults(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.WithField("msg", "hello").Info("test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "test")
+       })
+}
+
+func TestUserSuppliedMsgFieldHasPrefix(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.WithField("msg", "hello").Info("test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["msg"], "test")
+               assert.Equal(t, fields["fields.msg"], "hello")
+       })
+}
+
+func TestUserSuppliedTimeFieldHasPrefix(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.WithField("time", "hello").Info("test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["fields.time"], "hello")
+       })
+}
+
+func TestUserSuppliedLevelFieldHasPrefix(t *testing.T) {
+       LogAndAssertJSON(t, func(log *Logger) {
+               log.WithField("level", 1).Info("test")
+       }, func(fields Fields) {
+               assert.Equal(t, fields["level"], "info")
+               assert.Equal(t, fields["fields.level"], 1.0) // JSON has floats only
+       })
+}
+
+func TestDefaultFieldsAreNotPrefixed(t *testing.T) {
+       LogAndAssertText(t, func(log *Logger) {
+               ll := log.WithField("herp", "derp")
+               ll.Info("hello")
+               ll.Info("bye")
+       }, func(fields map[string]string) {
+               for _, fieldName := range []string{"fields.level", "fields.time", "fields.msg"} {
+                       if _, ok := fields[fieldName]; ok {
+                               t.Fatalf("should not have prefixed %q: %v", fieldName, fields)
+                       }
+               }
+       })
+}
+
+func TestDoubleLoggingDoesntPrefixPreviousFields(t *testing.T) {
+
+       var buffer bytes.Buffer
+       var fields Fields
+
+       logger := New()
+       logger.Out = &buffer
+       logger.Formatter = new(JSONFormatter)
+
+       llog := logger.WithField("context", "eating raw fish")
+
+       llog.Info("looks delicious")
+
+       err := json.Unmarshal(buffer.Bytes(), &fields)
+       assert.NoError(t, err, "should have decoded first message")
+       assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields")
+       assert.Equal(t, fields["msg"], "looks delicious")
+       assert.Equal(t, fields["context"], "eating raw fish")
+
+       buffer.Reset()
+
+       llog.Warn("omg it is!")
+
+       err = json.Unmarshal(buffer.Bytes(), &fields)
+       assert.NoError(t, err, "should have decoded second message")
+       assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields")
+       assert.Equal(t, fields["msg"], "omg it is!")
+       assert.Equal(t, fields["context"], "eating raw fish")
+       assert.Nil(t, fields["fields.msg"], "should not have prefixed previous `msg` entry")
+
+}
+
+func TestConvertLevelToString(t *testing.T) {
+       assert.Equal(t, "debug", DebugLevel.String())
+       assert.Equal(t, "info", InfoLevel.String())
+       assert.Equal(t, "warning", WarnLevel.String())
+       assert.Equal(t, "error", ErrorLevel.String())
+       assert.Equal(t, "fatal", FatalLevel.String())
+       assert.Equal(t, "panic", PanicLevel.String())
+}
+
+func TestParseLevel(t *testing.T) {
+       l, err := ParseLevel("panic")
+       assert.Nil(t, err)
+       assert.Equal(t, PanicLevel, l)
+
+       l, err = ParseLevel("PANIC")
+       assert.Nil(t, err)
+       assert.Equal(t, PanicLevel, l)
+
+       l, err = ParseLevel("fatal")
+       assert.Nil(t, err)
+       assert.Equal(t, FatalLevel, l)
+
+       l, err = ParseLevel("FATAL")
+       assert.Nil(t, err)
+       assert.Equal(t, FatalLevel, l)
+
+       l, err = ParseLevel("error")
+       assert.Nil(t, err)
+       assert.Equal(t, ErrorLevel, l)
+
+       l, err = ParseLevel("ERROR")
+       assert.Nil(t, err)
+       assert.Equal(t, ErrorLevel, l)
+
+       l, err = ParseLevel("warn")
+       assert.Nil(t, err)
+       assert.Equal(t, WarnLevel, l)
+
+       l, err = ParseLevel("WARN")
+       assert.Nil(t, err)
+       assert.Equal(t, WarnLevel, l)
+
+       l, err = ParseLevel("warning")
+       assert.Nil(t, err)
+       assert.Equal(t, WarnLevel, l)
+
+       l, err = ParseLevel("WARNING")
+       assert.Nil(t, err)
+       assert.Equal(t, WarnLevel, l)
+
+       l, err = ParseLevel("info")
+       assert.Nil(t, err)
+       assert.Equal(t, InfoLevel, l)
+
+       l, err = ParseLevel("INFO")
+       assert.Nil(t, err)
+       assert.Equal(t, InfoLevel, l)
+
+       l, err = ParseLevel("debug")
+       assert.Nil(t, err)
+       assert.Equal(t, DebugLevel, l)
+
+       l, err = ParseLevel("DEBUG")
+       assert.Nil(t, err)
+       assert.Equal(t, DebugLevel, l)
+
+       l, err = ParseLevel("invalid")
+       assert.Equal(t, "not a valid logrus Level: \"invalid\"", err.Error())
+}
+
+func TestGetSetLevelRace(t *testing.T) {
+       wg := sync.WaitGroup{}
+       for i := 0; i < 100; i++ {
+               wg.Add(1)
+               go func(i int) {
+                       defer wg.Done()
+                       if i%2 == 0 {
+                               SetLevel(InfoLevel)
+                       } else {
+                               GetLevel()
+                       }
+               }(i)
+
+       }
+       wg.Wait()
+}
+
+func TestLoggingRace(t *testing.T) {
+       logger := New()
+
+       var wg sync.WaitGroup
+       wg.Add(100)
+
+       for i := 0; i < 100; i++ {
+               go func() {
+                       logger.Info("info")
+                       wg.Done()
+               }()
+       }
+       wg.Wait()
+}
+
+// Compile test
+func TestLogrusInterface(t *testing.T) {
+       var buffer bytes.Buffer
+       fn := func(l FieldLogger) {
+               b := l.WithField("key", "value")
+               b.Debug("Test")
+       }
+       // test logger
+       logger := New()
+       logger.Out = &buffer
+       fn(logger)
+
+       // test Entry
+       e := logger.WithField("another", "value")
+       fn(e)
+}
+
+// Implements io.Writer using channels for synchronization, so we can wait on
+// the Entry.Writer goroutine to write in a non-racey way. This does assume that
+// there is a single call to Logger.Out for each message.
+type channelWriter chan []byte
+
+func (cw channelWriter) Write(p []byte) (int, error) {
+       cw <- p
+       return len(p), nil
+}
+
+func TestEntryWriter(t *testing.T) {
+       cw := channelWriter(make(chan []byte, 1))
+       log := New()
+       log.Out = cw
+       log.Formatter = new(JSONFormatter)
+       log.WithField("foo", "bar").WriterLevel(WarnLevel).Write([]byte("hello\n"))
+
+       bs := <-cw
+       var fields Fields
+       err := json.Unmarshal(bs, &fields)
+       assert.Nil(t, err)
+       assert.Equal(t, fields["foo"], "bar")
+       assert.Equal(t, fields["level"], "warning")
+}
diff --git a/vendor/github.com/Sirupsen/logrus/terminal_appengine.go b/vendor/github.com/Sirupsen/logrus/terminal_appengine.go
new file mode 100644 (file)
index 0000000..e011a86
--- /dev/null
@@ -0,0 +1,10 @@
+// +build appengine
+
+package logrus
+
+import "io"
+
+// IsTerminal returns true if stderr's file descriptor is a terminal.
+func IsTerminal(f io.Writer) bool {
+       return true
+}
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..5f6be4d
--- /dev/null
@@ -0,0 +1,10 @@
+// +build darwin freebsd openbsd netbsd dragonfly
+// +build !appengine
+
+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..308160c
--- /dev/null
@@ -0,0 +1,14 @@
+// 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.
+
+// +build !appengine
+
+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..190297a
--- /dev/null
@@ -0,0 +1,28 @@
+// 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
+// +build !appengine
+
+package logrus
+
+import (
+       "io"
+       "os"
+       "syscall"
+       "unsafe"
+)
+
+// IsTerminal returns true if stderr's file descriptor is a terminal.
+func IsTerminal(f io.Writer) bool {
+       var termios Termios
+       switch v := f.(type) {
+       case *os.File:
+               _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(v.Fd()), ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0)
+               return err == 0
+       default:
+               return false
+       }
+}
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..3c86b1a
--- /dev/null
@@ -0,0 +1,21 @@
+// +build solaris,!appengine
+
+package logrus
+
+import (
+       "io"
+       "os"
+
+       "golang.org/x/sys/unix"
+)
+
+// IsTerminal returns true if the given file descriptor is a terminal.
+func IsTerminal(f io.Writer) bool {
+       switch v := f.(type) {
+       case *os.File:
+               _, err := unix.IoctlGetTermios(int(v.Fd()), unix.TCGETA)
+               return err == nil
+       default:
+               return false
+       }
+}
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..05d2f91
--- /dev/null
@@ -0,0 +1,33 @@
+// 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,!appengine
+
+package logrus
+
+import (
+       "io"
+       "os"
+       "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(f io.Writer) bool {
+       switch v := f.(type) {
+       case *os.File:
+               var st uint32
+               r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(v.Fd()), uintptr(unsafe.Pointer(&st)), 0)
+               return r != 0 && e == 0
+       default:
+               return false
+       }
+}
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..ba88854
--- /dev/null
@@ -0,0 +1,189 @@
+package logrus
+
+import (
+       "bytes"
+       "fmt"
+       "sort"
+       "strings"
+       "sync"
+       "time"
+)
+
+const (
+       nocolor = 0
+       red     = 31
+       green   = 32
+       yellow  = 33
+       blue    = 34
+       gray    = 37
+)
+
+var (
+       baseTimestamp time.Time
+)
+
+func init() {
+       baseTimestamp = time.Now()
+}
+
+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
+
+       // QuoteEmptyFields will wrap empty fields in quotes if true
+       QuoteEmptyFields bool
+
+       // QuoteCharacter can be set to the override the default quoting character "
+       // with something else. For example: ', or `.
+       QuoteCharacter string
+
+       // Whether the logger's out is to a terminal
+       isTerminal bool
+
+       sync.Once
+}
+
+func (f *TextFormatter) init(entry *Entry) {
+       if len(f.QuoteCharacter) == 0 {
+               f.QuoteCharacter = "\""
+       }
+       if entry.Logger != nil {
+               f.isTerminal = IsTerminal(entry.Logger.Out)
+       }
+}
+
+func (f *TextFormatter) Format(entry *Entry) ([]byte, error) {
+       var b *bytes.Buffer
+       keys := make([]string, 0, len(entry.Data))
+       for k := range entry.Data {
+               keys = append(keys, k)
+       }
+
+       if !f.DisableSorting {
+               sort.Strings(keys)
+       }
+       if entry.Buffer != nil {
+               b = entry.Buffer
+       } else {
+               b = &bytes.Buffer{}
+       }
+
+       prefixFieldClashes(entry.Data)
+
+       f.Do(func() { f.init(entry) })
+
+       isColored := (f.ForceColors || f.isTerminal) && !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.DisableTimestamp {
+               fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m %-44s ", levelColor, levelText, entry.Message)
+       } else if !f.FullTimestamp {
+               fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%04d] %-44s ", levelColor, levelText, int(entry.Time.Sub(baseTimestamp)/time.Second), 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=", levelColor, k)
+               f.appendValue(b, v)
+       }
+}
+
+func (f *TextFormatter) needsQuoting(text string) bool {
+       if f.QuoteEmptyFields && len(text) == 0 {
+               return true
+       }
+       for _, ch := range text {
+               if !((ch >= 'a' && ch <= 'z') ||
+                       (ch >= 'A' && ch <= 'Z') ||
+                       (ch >= '0' && ch <= '9') ||
+                       ch == '-' || ch == '.') {
+                       return true
+               }
+       }
+       return false
+}
+
+func (f *TextFormatter) appendKeyValue(b *bytes.Buffer, key string, value interface{}) {
+
+       b.WriteString(key)
+       b.WriteByte('=')
+       f.appendValue(b, value)
+       b.WriteByte(' ')
+}
+
+func (f *TextFormatter) appendValue(b *bytes.Buffer, value interface{}) {
+       switch value := value.(type) {
+       case string:
+               if !f.needsQuoting(value) {
+                       b.WriteString(value)
+               } else {
+                       fmt.Fprintf(b, "%s%v%s", f.QuoteCharacter, value, f.QuoteCharacter)
+               }
+       case error:
+               errmsg := value.Error()
+               if !f.needsQuoting(errmsg) {
+                       b.WriteString(errmsg)
+               } else {
+                       fmt.Fprintf(b, "%s%v%s", f.QuoteCharacter, errmsg, f.QuoteCharacter)
+               }
+       default:
+               fmt.Fprint(b, value)
+       }
+}
diff --git a/vendor/github.com/Sirupsen/logrus/text_formatter_test.go b/vendor/github.com/Sirupsen/logrus/text_formatter_test.go
new file mode 100644 (file)
index 0000000..9793b5f
--- /dev/null
@@ -0,0 +1,87 @@
+package logrus
+
+import (
+       "bytes"
+       "errors"
+       "strings"
+       "testing"
+       "time"
+)
+
+func TestQuoting(t *testing.T) {
+       tf := &TextFormatter{DisableColors: true}
+
+       checkQuoting := func(q bool, value interface{}) {
+               b, _ := tf.Format(WithField("test", value))
+               idx := bytes.Index(b, ([]byte)("test="))
+               cont := bytes.Contains(b[idx+5:], []byte(tf.QuoteCharacter))
+               if cont != q {
+                       if q {
+                               t.Errorf("quoting expected for: %#v", value)
+                       } else {
+                               t.Errorf("quoting not expected for: %#v", value)
+                       }
+               }
+       }
+
+       checkQuoting(false, "")
+       checkQuoting(false, "abcd")
+       checkQuoting(false, "v1.0")
+       checkQuoting(false, "1234567890")
+       checkQuoting(true, "/foobar")
+       checkQuoting(true, "x y")
+       checkQuoting(true, "x,y")
+       checkQuoting(false, errors.New("invalid"))
+       checkQuoting(true, errors.New("invalid argument"))
+
+       // Test for custom quote character.
+       tf.QuoteCharacter = "`"
+       checkQuoting(false, "")
+       checkQuoting(false, "abcd")
+       checkQuoting(true, "/foobar")
+       checkQuoting(true, errors.New("invalid argument"))
+
+       // Test for multi-character quotes.
+       tf.QuoteCharacter = "§~±"
+       checkQuoting(false, "abcd")
+       checkQuoting(true, errors.New("invalid argument"))
+
+       // Test for quoting empty fields.
+       tf.QuoteEmptyFields = true
+       checkQuoting(true, "")
+       checkQuoting(false, "abcd")
+       checkQuoting(true, errors.New("invalid argument"))
+}
+
+func TestTimestampFormat(t *testing.T) {
+       checkTimeStr := func(format string) {
+               customFormatter := &TextFormatter{DisableColors: true, TimestampFormat: format}
+               customStr, _ := customFormatter.Format(WithField("test", "test"))
+               timeStart := bytes.Index(customStr, ([]byte)("time="))
+               timeEnd := bytes.Index(customStr, ([]byte)("level="))
+               timeStr := customStr[timeStart+5+len(customFormatter.QuoteCharacter) : timeEnd-1-len(customFormatter.QuoteCharacter)]
+               if format == "" {
+                       format = time.RFC3339
+               }
+               _, e := time.Parse(format, (string)(timeStr))
+               if e != nil {
+                       t.Errorf("time string \"%s\" did not match provided time format \"%s\": %s", timeStr, format, e)
+               }
+       }
+
+       checkTimeStr("2006-01-02T15:04:05.000000000Z07:00")
+       checkTimeStr("Mon Jan _2 15:04:05 2006")
+       checkTimeStr("")
+}
+
+func TestDisableTimestampWithColoredOutput(t *testing.T) {
+       tf := &TextFormatter{DisableTimestamp: true, ForceColors: true}
+
+       b, _ := tf.Format(WithField("test", "test"))
+       if strings.Contains(string(b), "[0000]") {
+               t.Error("timestamp not expected when DisableTimestamp is true")
+       }
+}
+
+// TODO add tests for sorting etc., this requires a parser for the text
+// formatter output.
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..7bdebed
--- /dev/null
@@ -0,0 +1,62 @@
+package logrus
+
+import (
+       "bufio"
+       "io"
+       "runtime"
+)
+
+func (logger *Logger) Writer() *io.PipeWriter {
+       return logger.WriterLevel(InfoLevel)
+}
+
+func (logger *Logger) WriterLevel(level Level) *io.PipeWriter {
+       return NewEntry(logger).WriterLevel(level)
+}
+
+func (entry *Entry) Writer() *io.PipeWriter {
+       return entry.WriterLevel(InfoLevel)
+}
+
+func (entry *Entry) WriterLevel(level Level) *io.PipeWriter {
+       reader, writer := io.Pipe()
+
+       var printFunc func(args ...interface{})
+
+       switch level {
+       case DebugLevel:
+               printFunc = entry.Debug
+       case InfoLevel:
+               printFunc = entry.Info
+       case WarnLevel:
+               printFunc = entry.Warn
+       case ErrorLevel:
+               printFunc = entry.Error
+       case FatalLevel:
+               printFunc = entry.Fatal
+       case PanicLevel:
+               printFunc = entry.Panic
+       default:
+               printFunc = entry.Print
+       }
+
+       go entry.writerScanner(reader, printFunc)
+       runtime.SetFinalizer(writer, writerFinalizer)
+
+       return writer
+}
+
+func (entry *Entry) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) {
+       scanner := bufio.NewScanner(reader)
+       for scanner.Scan() {
+               printFunc(scanner.Text())
+       }
+       if err := scanner.Err(); err != nil {
+               entry.Errorf("Error while reading from Writer: %s", err)
+       }
+       reader.Close()
+}
+
+func writerFinalizer(writer *io.PipeWriter) {
+       writer.Close()
+}
diff --git a/vendor/github.com/bennyscetbun/jsongo/.gitignore b/vendor/github.com/bennyscetbun/jsongo/.gitignore
new file mode 100644 (file)
index 0000000..32678c7
--- /dev/null
@@ -0,0 +1,24 @@
+# Compiled Object files, Static and Dynamic libs (Shared Objects)
+*.o
+*.a
+*.so
+
+# Folders
+_obj
+_test
+
+# Architecture specific extensions/prefixes
+*.[568vq]
+[568vq].out
+
+*.cgo1.go
+*.cgo2.c
+_cgo_defun.c
+_cgo_gotypes.go
+_cgo_export.*
+
+_testmain.go
+
+*.exe
+*.test
+*~
diff --git a/vendor/github.com/bennyscetbun/jsongo/LICENSE b/vendor/github.com/bennyscetbun/jsongo/LICENSE
new file mode 100644 (file)
index 0000000..aab88ef
--- /dev/null
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Benny Scetbun
+
+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/bennyscetbun/jsongo/README.md b/vendor/github.com/bennyscetbun/jsongo/README.md
new file mode 100644 (file)
index 0000000..ebc81c6
--- /dev/null
@@ -0,0 +1,574 @@
+jsongo
+======
+
+**Jsongo is a simple library for golang to help you build Json without static struct or map[string]interface**
+
+[json.Marshal](http://golang.org/pkg/encoding/json/#Marshal) and [json.Unmarshal](http://golang.org/pkg/encoding/json/#Unmarshal) have never been that easy
+
+**If you had only one function to look at, look at the "[At](#at)" function**
+
+***If you want an easy way to turn your json into a structure you should use the "[Print](#print)" function after unmarshalling json in a JSONNODE***
+
+You can find the doc on godoc.org [![GoDoc](https://godoc.org/github.com/bennyscetbun/jsongo?status.png)](https://godoc.org/github.com/bennyscetbun/jsongo)
+
+
+##JsonNode
+
+JsonNode is the basic Structure that you must use when using jsongo. It can either be a:
+- Map (jsongo.TypeMap)
+- Array (jsongo.TypeArray)
+- Value (jsongo.TypeValue) *Precisely a pointer store in an interface{}*
+- Undefined (jsongo.TypeUndefined) *default type*
+
+*When a JSONNode Type is set you cant change it without using Unset() first*
+____
+###Val
+####Synopsis:
+turn this JSONNode to TypeValue and set that value
+```go
+func (that *JSONNode) Val(val interface{}) 
+```
+
+####Examples
+#####code:
+```go
+package main
+
+import (
+    "github.com/bennyscetbun/jsongo"
+)
+
+func main() {
+    root := jsongo.JSONNode{}
+       root.Val(42)
+       root.DebugPrint("")
+}
+```
+#####output:
+```
+42
+```
+#####code:
+```go
+package main
+
+import (
+    "github.com/bennyscetbun/jsongo"
+)
+type MyStruct struct {
+       Member1 string
+       Member2 int
+}
+
+func main() {
+       root := jsongo.JSONNode{}
+       root.Val(MyStruct{"The answer", 42})
+       root.DebugPrint("")
+}
+```
+#####output:
+```
+{
+  "Member1": "The answer",
+  "Member2": 42
+}
+```
+_____
+###Array
+####Synopsis:
+ Turn this JSONNode to a TypeArray and/or set the array size (reducing size will make you loose data)
+```go
+func (that *JSONNode) Array(size int) *[]JSONNode
+```
+
+####Examples
+#####code:
+```go
+package main
+
+import (
+    "github.com/bennyscetbun/jsongo"
+)
+
+func main() {
+    root := jsongo.JSONNode{}
+       a := root.Array(4)
+    for i := 0; i < 4; i++ {
+        (*a)[i].Val(i)
+    }
+       root.DebugPrint("")
+}
+```
+#####output:
+```
+[
+  0,
+  1,
+  2,
+  3
+]
+```
+#####code:
+```go
+package main
+
+import (
+    "github.com/bennyscetbun/jsongo"
+)
+
+func main() {
+    root := jsongo.JSONNode{}
+    a := root.Array(4)
+    for i := 0; i < 4; i++ {
+        (*a)[i].Val(i)
+    }
+    root.Array(2) //Here we reduce the size and we loose some data
+       root.DebugPrint("")
+}
+```
+#####output:
+```
+[
+  0,
+  1
+]
+```
+____
+###Map
+####Synopsis:
+Turn this JSONNode to a TypeMap and/or Create a new element for key if necessary and return it
+```go
+func (that *JSONNode) Map(key string) *JSONNode
+```
+
+####Examples
+#####code:
+```go
+package main
+
+import (
+    "github.com/bennyscetbun/jsongo"
+)
+
+func main() {
+    root := jsongo.JSONNode{}
+    root.Map("there").Val("you are")
+    root.Map("here").Val("you should be")
+       root.DebugPrint("")
+}
+```
+#####output:
+```
+{
+  "here": "you should be",
+  "there": "you are"
+}
+```
+____
+###At
+####Synopsis:
+Helps you move through your node by building them on the fly
+
+*val can be string or int only*
+
+*strings are keys for TypeMap*
+
+*ints are index in TypeArray (it will make array grow on the fly, so you should start to populate with the biggest index first)*
+```go
+func (that *JSONNode) At(val ...interface{}) *JSONNode
+```
+
+####Examples
+#####code:
+```go
+package main
+
+import (
+    "github.com/bennyscetbun/jsongo"
+)
+
+func main() {
+    root := jsongo.JSONNode{}
+    root.At(4, "Who").Val("Let the dog out") //is equivalent to (*root.Array(5))[4].Map("Who").Val("Let the dog out")
+    root.DebugPrint("")
+}
+```
+#####output:
+```
+[
+  null,
+  null,
+  null,
+  null,
+  {
+    "Who": "Let the dog out"
+  }
+]
+```
+#####code:
+```go
+package main
+
+import (
+    "github.com/bennyscetbun/jsongo"
+)
+
+func main() {
+    root := jsongo.JSONNode{}
+    root.At(4, "Who").Val("Let the dog out")
+    //to win some time you can even even save a certain JSONNode
+       node := root.At(2, "What")
+       node.At("Can", "You").Val("do with that?")
+       node.At("Do", "You", "Think").Val("Of that")
+    root.DebugPrint("")
+}
+```
+#####output:
+```
+[
+  null,
+  null,
+  {
+    "What": {
+      "Can": {
+        "You": "do with that?"
+      },
+      "Do": {
+        "You": {
+          "Think": "Of that"
+        }
+      }
+    }
+  },
+  null,
+  {
+    "Who": "Let the dog out"
+  }
+]
+```
+____
+###Print
+####Synopsis:
+Helps you build your code by printing a go structure from the json you ve just unmarshaled
+
+```go
+func (that *JSONNode) Print()
+```
+
+____
+###Other Function
+There is plenty of other function, you should check the complete doc [![GoDoc](https://godoc.org/github.com/bennyscetbun/jsongo?status.png)](https://godoc.org/github.com/bennyscetbun/jsongo)
+
+####A last Example for fun
+#####code:
+```go
+package main
+
+import (
+    "github.com/bennyscetbun/jsongo"
+)
+
+func ShowOnlyValue(current *jsongo.JSONNode) {
+    switch current.GetType() {
+       case jsongo.TypeValue:
+                       println(current.Get().(string))
+               case jsongo.TypeMap:
+                       for _, key := range current.GetKeys() {
+                               ShowOnlyValue(current.At(key))
+                       }
+               case jsongo.TypeArray:
+                       for _, key := range current.GetKeys() {
+                               ShowOnlyValue(current.At(key))
+                       }
+       }
+}
+
+func main() {
+    root := jsongo.JSONNode{}
+    root.At(4, "Who").Val("Let the dog out")
+       node := root.At(2, "What")
+       node.At("Can", "You").Val("do with that?")
+       node.At("Do", "You", "Think").Val("Of that")
+       ShowOnlyValue(&root)
+}
+```
+#####output:
+```
+Of that
+do with that?
+Let the dog out
+```
+_____
+_____
+##Json Marshal/Unmarshal
+
+One of the main purpose of jsongo was to create Json from data without using static structure or map[string]interface.
+
+You can use the full power of the [encoding/json](http://golang.org/pkg/encoding/json/) package with jsongo.
+
+###Marshal
+####Example
+#####code:
+```go
+package main
+
+import (
+    "encoding/json"
+       "fmt"
+    "github.com/bennyscetbun/jsongo"
+)
+
+type Test struct {
+       Static string `json:"static"`
+       Over int `json:"over"`
+}
+
+func main() {
+       root := jsongo.JSONNode{}
+       root.At("A", "AA", "AAA").Val(42)
+
+       node := root.At("A", "AB")
+       node.At(1).Val("Peace")
+       node.At(0).Val(Test{"struct suck when you build json", 9000})
+       root.At("B").Val("Oh Yeah")
+
+       tojson, err := json.MarshalIndent(&root, "", "  ")
+       if err != nil {
+               fmt.Printf("%s\n", err.Error())
+               return
+       }
+       fmt.Printf("%s\n", tojson)
+}
+```
+#####output:
+```
+{
+  "A": {
+    "AA": {
+      "AAA": 42
+    },
+    "AB": [
+      {
+        "static": "struct suck when you build json",
+        "over": 9000
+      },
+      "Peace"
+    ]
+  },
+  "B": "Oh Yeah"
+}
+```
+____
+###Unmarshal
+Unmarshal using JSONNode follow some simple rules:
+- Any TypeUndefined JSONNode will be set to the right type, any other type wont be changed
+- Array will grow if necessary
+- New keys will be added to Map
+- Values set to nil "*.Val(nil)*" will be turn into the type decide by Json
+- It will respect any current mapping and will return errors if needed
+
+You can set a node as "DontExpand" with the UnmarshalDontExpand function and thoose rules will apply:
+- The type wont be change for any type
+- Array wont grow
+- New keys wont be added to Map
+- Values set to nil "*.Val(nil)*" will be turn into the type decide by Json
+- It will respect any current mapping and will return errors if needed
+
+####Example of full expand
+#####code:
+```go
+package main
+
+import (
+    "encoding/json"
+    "github.com/bennyscetbun/jsongo"
+    "fmt"
+)
+
+func main() {
+    root := jsongo.JSONNode{}
+    fromjson := `{
+         "A": {
+               "AA": {
+                 "AAA": 42
+               },
+               "AB": [
+                 {
+                       "static": "struct suck when you build json",
+                       "over": 9000
+                 },
+                 "Peace"
+               ]
+         },
+         "B": "Oh Yeah"
+       }`
+    err := json.Unmarshal([]byte(fromjson), &root)
+       if err != nil {
+               fmt.Printf("%s\n", err.Error())
+               return
+       }
+       root.DebugProspect(0, "\t")
+}
+```
+#####output:
+```
+Is of Type: TypeMap
+A:
+        Is of Type: TypeMap
+        AA:
+                Is of Type: TypeMap
+                AAA:
+                        Is of Type: TypeValue
+                        Value of type: float64
+                        42
+        AB:
+                Is of Type: TypeArray
+                [0]:
+                        Is of Type: TypeMap
+                        static:
+                                Is of Type: TypeValue
+                                Value of type: string
+                                struct suck when you build json
+                        over:
+                                Is of Type: TypeValue
+                                Value of type: float64
+                                9000
+                [1]:
+                        Is of Type: TypeValue
+                        Value of type: string
+                        Peace
+B:
+        Is of Type: TypeValue
+        Value of type: string
+        Oh Yeah
+```
+####Example expand with mapping
+#####code:
+```go
+package main
+
+import (
+    "encoding/json"
+    "github.com/bennyscetbun/jsongo"
+    "fmt"
+)
+type Test struct {
+    Static string `json:"static"`
+    Over int `json:"over"`
+}
+
+func main() {
+       root := jsongo.JSONNode{}
+    fromjson := `{
+      "A": {
+               "AA": {
+                 "AAA": 42
+               },
+               "AB": [
+                 {
+                       "static": "struct suck when you build json",
+                       "over": 9000
+                 },
+                 "Peace"
+               ]
+         },
+         "B": "Oh Yeah"
+       }`
+       root.At("A", "AB", 0).Val(Test{})
+    err := json.Unmarshal([]byte(fromjson), &root)
+       if err != nil {
+               fmt.Printf("%s\n", err.Error())
+               return
+       }
+       root.DebugProspect(0, "\t")
+}
+```
+#####output:
+```
+Is of Type: TypeMap
+A:
+        Is of Type: TypeMap
+        AB:
+                Is of Type: TypeArray
+                [0]:
+                        Is of Type: TypeValue
+                        Value of type: main.Test
+                        {Static:struct suck when you build json Over:9000}
+                [1]:
+                        Is of Type: TypeValue
+                        Value of type: string
+                        Peace
+        AA:
+                Is of Type: TypeMap
+                AAA:
+                        Is of Type: TypeValue
+                        Value of type: float64
+                        42
+B:
+        Is of Type: TypeValue
+        Value of type: string
+        Oh Yeah
+```
+####Example expand with some UnmarshalDontExpand
+#####code:
+```go
+package main
+
+import (
+    "encoding/json"
+    "github.com/bennyscetbun/jsongo"
+    "fmt"
+)
+type Test struct {
+       Static string `json:"static"`
+       Over int `json:"over"`
+}
+
+func main() {
+    root := jsongo.JSONNode{}
+    fromjson := `{
+      "A": {
+               "AA": {
+                 "AAA": 42
+               },
+               "AB": [
+                 {
+                       "static": "struct suck when you build json",
+                       "over": 9000
+                 },
+                 "Peace"
+               ]
+         },
+         "B": "Oh Yeah"
+       }`
+       root.At("A", "AB").UnmarshalDontExpand(true, false).At(0).Val(Test{})
+    err := json.Unmarshal([]byte(fromjson), &root)
+       if err != nil {
+               fmt.Printf("%s\n", err.Error())
+               return
+       }
+       root.DebugProspect(0, "\t")
+}
+```
+#####output:
+```
+Is of Type: TypeMap
+A:
+        Is of Type: TypeMap
+        AB:
+                Is of Type: TypeArray
+                [0]:
+                        Is of Type: TypeValue
+                        Value of type: main.Test
+                        {Static:struct suck when you build json Over:9000}
+        AA:
+                Is of Type: TypeMap
+                AAA:
+                        Is of Type: TypeValue
+                        Value of type: float64
+                        42
+B:
+        Is of Type: TypeValue
+        Value of type: string
+        Oh Yeah
+```
diff --git a/vendor/github.com/bennyscetbun/jsongo/debug.go b/vendor/github.com/bennyscetbun/jsongo/debug.go
new file mode 100644 (file)
index 0000000..a1aa425
--- /dev/null
@@ -0,0 +1,60 @@
+package jsongo
+
+import (
+       "encoding/json"
+       "fmt"
+       "os"
+)
+
+//DebugPrint Print a JSONNode as json withindent
+func (that *JSONNode) DebugPrint(prefix string) {
+       asJSON, err := json.MarshalIndent(that, "", "  ")
+       if err != nil {
+               fmt.Printf("%s\n", err.Error())
+               os.Exit(-1)
+       }
+       fmt.Printf("%s%s\n", prefix, asJSON)
+}
+
+func printfindent(indentlevel int, indentchar string, format string, args ...interface{}) {
+       for i := 0; i < indentlevel; i++ {
+               fmt.Printf("%s", indentchar)
+       }
+       fmt.Printf(format, args...)
+}
+
+func (that *JSONNode) debugProspectValue(indentlevel int, indentchar string) {
+       printfindent(indentlevel, indentchar, "Is of Type: TypeValue\n")
+       printfindent(indentlevel, indentchar, "Value of type: %T\n", that.Get())
+       printfindent(indentlevel, indentchar, "%+v\n", that.Get())
+}
+
+func (that *JSONNode) debugProspectMap(indentlevel int, indentchar string) {
+       printfindent(indentlevel, indentchar, "Is of Type: TypeMap\n")
+       for key := range that.m {
+               printfindent(indentlevel, indentchar, "%s:\n", key)
+               that.m[key].DebugProspect(indentlevel+1, indentchar)
+       }
+}
+
+func (that *JSONNode) debugProspectArray(indentlevel int, indentchar string) {
+       printfindent(indentlevel, indentchar, "Is of Type: TypeArray\n")
+       for key := range that.a {
+               printfindent(indentlevel, indentchar, "[%d]:\n", key)
+               that.a[key].DebugProspect(indentlevel+1, indentchar)
+       }
+}
+
+//DebugProspect Print all the data the we ve got on a node and all it s children
+func (that *JSONNode) DebugProspect(indentlevel int, indentchar string) {
+       switch that.t {
+       case TypeValue:
+               that.debugProspectValue(indentlevel, indentchar)
+       case TypeMap:
+               that.debugProspectMap(indentlevel, indentchar)
+       case TypeArray:
+               that.debugProspectArray(indentlevel, indentchar)
+       case TypeUndefined:
+               printfindent(indentlevel, indentchar, "Is of Type: TypeUndefined\n")
+       }
+}
diff --git a/vendor/github.com/bennyscetbun/jsongo/jsongo.go b/vendor/github.com/bennyscetbun/jsongo/jsongo.go
new file mode 100644 (file)
index 0000000..d661931
--- /dev/null
@@ -0,0 +1,472 @@
+// Copyright 2014 Benny Scetbun. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+// Package Jsongo is a simple library to help you build Json without static struct
+//
+// Source code and project home:
+// https://github.com/benny-deluxe/jsongo
+//
+
+package jsongo
+
+import (
+       "encoding/json"
+       "errors"
+       "reflect"
+       //"fmt"
+)
+
+//ErrorKeyAlreadyExist error if a key already exist in current JSONNode
+var ErrorKeyAlreadyExist = errors.New("jsongo key already exist")
+
+//ErrorMultipleType error if a JSONNode already got a different type of value
+var ErrorMultipleType = errors.New("jsongo this node is already set to a different jsonNodeType")
+
+//ErrorArrayNegativeValue error if you ask for a negative index in an array
+var ErrorArrayNegativeValue = errors.New("jsongo negative index for array")
+
+//ErrorArrayNegativeValue error if you ask for a negative index in an array
+var ErrorAtUnsupportedType = errors.New("jsongo Unsupported Type as At argument")
+
+//ErrorRetrieveUserValue error if you ask the value of a node that is not a value node
+var ErrorRetrieveUserValue = errors.New("jsongo Cannot retrieve node's value which is not of type value")
+
+//ErrorTypeUnmarshaling error if you try to unmarshal something in the wrong type
+var ErrorTypeUnmarshaling = errors.New("jsongo Wrong type when Unmarshaling")
+
+//ErrorUnknowType error if you try to use an unknow JSONNodeType
+var ErrorUnknowType = errors.New("jsongo Unknow JSONNodeType")
+
+//ErrorValNotPointer error if you try to use Val without a valid pointer
+var ErrorValNotPointer = errors.New("jsongo: Val: arguments must be a pointer and not nil")
+
+//ErrorGetKeys error if you try to get the keys from a JSONNode that isnt a TypeMap or a TypeArray
+var ErrorGetKeys = errors.New("jsongo: GetKeys: JSONNode is not a TypeMap or TypeArray")
+
+//ErrorDeleteKey error if you try to call DelKey on a JSONNode that isnt a TypeMap
+var ErrorDeleteKey = errors.New("jsongo: DelKey: This JSONNode is not a TypeMap")
+
+//ErrorCopyType error if you try to call Copy on a JSONNode that isnt a TypeUndefined
+var ErrorCopyType = errors.New("jsongo: Copy: This JSONNode is not a TypeUndefined")
+
+//JSONNode Datastructure to build and maintain Nodes
+type JSONNode struct {
+       m          map[string]*JSONNode
+       a          []JSONNode
+       v          interface{}
+       vChanged   bool         //True if we changed the type of the value
+       t          JSONNodeType //Type of that JSONNode 0: Not defined, 1: map, 2: array, 3: value
+       dontExpand bool         //dont expand while Unmarshal
+}
+
+//JSONNodeType is used to set, check and get the inner type of a JSONNode
+type JSONNodeType uint
+
+const (
+       //TypeUndefined is set by default for empty JSONNode
+       TypeUndefined JSONNodeType = iota
+       //TypeMap is set when a JSONNode is a Map
+       TypeMap
+       //TypeArray is set when a JSONNode is an Array
+       TypeArray
+       //TypeValue is set when a JSONNode is a Value Node
+       TypeValue
+       //typeError help us detect errors
+       typeError
+)
+
+//At helps you move through your node by building them on the fly
+//
+//val can be string or int only
+//
+//strings are keys for TypeMap
+//
+//ints are index in TypeArray (it will make array grow on the fly, so you should start to populate with the biggest index first)*
+func (that *JSONNode) At(val ...interface{}) *JSONNode {
+       if len(val) == 0 {
+               return that
+       }
+       switch vv := val[0].(type) {
+       case string:
+               return that.atMap(vv, val[1:]...)
+       case int:
+               return that.atArray(vv, val[1:]...)
+       }
+       panic(ErrorAtUnsupportedType)
+}
+
+//atMap return the JSONNode in current map
+func (that *JSONNode) atMap(key string, val ...interface{}) *JSONNode {
+       if that.t != TypeUndefined && that.t != TypeMap {
+               panic(ErrorMultipleType)
+       }
+       if that.m == nil {
+               that.m = make(map[string]*JSONNode)
+               that.t = TypeMap
+       }
+       if next, ok := that.m[key]; ok {
+               return next.At(val...)
+       }
+       that.m[key] = new(JSONNode)
+       return that.m[key].At(val...)
+}
+
+//atArray return the JSONNode in current TypeArray (and make it grow if necessary)
+func (that *JSONNode) atArray(key int, val ...interface{}) *JSONNode {
+       if that.t == TypeUndefined {
+               that.t = TypeArray
+       } else if that.t != TypeArray {
+               panic(ErrorMultipleType)
+       }
+       if key < 0 {
+               panic(ErrorArrayNegativeValue)
+       }
+       if key >= len(that.a) {
+               newa := make([]JSONNode, key+1)
+               for i := 0; i < len(that.a); i++ {
+                       newa[i] = that.a[i]
+               }
+               that.a = newa
+       }
+       return that.a[key].At(val...)
+}
+
+//Map Turn this JSONNode to a TypeMap and/or Create a new element for key if necessary and return it
+func (that *JSONNode) Map(key string) *JSONNode {
+       if that.t != TypeUndefined && that.t != TypeMap {
+               panic(ErrorMultipleType)
+       }
+       if that.m == nil {
+               that.m = make(map[string]*JSONNode)
+               that.t = TypeMap
+       }
+       if _, ok := that.m[key]; ok {
+               return that.m[key]
+       }
+       that.m[key] = &JSONNode{}
+       return that.m[key]
+}
+
+//Array Turn this JSONNode to a TypeArray and/or set the array size (reducing size will make you loose data)
+func (that *JSONNode) Array(size int) *[]JSONNode {
+       if that.t == TypeUndefined {
+               that.t = TypeArray
+       } else if that.t != TypeArray {
+               panic(ErrorMultipleType)
+       }
+       if size < 0 {
+               panic(ErrorArrayNegativeValue)
+       }
+       var min int
+       if size < len(that.a) {
+               min = size
+       } else {
+               min = len(that.a)
+       }
+       newa := make([]JSONNode, size)
+       for i := 0; i < min; i++ {
+               newa[i] = that.a[i]
+       }
+       that.a = newa
+       return &(that.a)
+}
+
+//Val Turn this JSONNode to Value type and/or set that value to val
+func (that *JSONNode) Val(val interface{}) {
+       if that.t == TypeUndefined {
+               that.t = TypeValue
+       } else if that.t != TypeValue {
+               panic(ErrorMultipleType)
+       }
+       rt := reflect.TypeOf(val)
+       var finalval interface{}
+       if val == nil {
+               finalval = &val
+               that.vChanged = true
+       } else if rt.Kind() != reflect.Ptr {
+               rv := reflect.ValueOf(val)
+               var tmp reflect.Value
+               if rv.CanAddr() {
+                       tmp = rv.Addr()
+               } else {
+                       tmp = reflect.New(rt)
+                       tmp.Elem().Set(rv)
+               }
+               finalval = tmp.Interface()
+               that.vChanged = true
+       } else {
+               finalval = val
+       }
+       that.v = finalval
+}
+
+//Get Return value of a TypeValue as interface{}
+func (that *JSONNode) Get() interface{} {
+       if that.t != TypeValue {
+               panic(ErrorRetrieveUserValue)
+       }
+       if that.vChanged {
+               rv := reflect.ValueOf(that.v)
+               return rv.Elem().Interface()
+       }
+       return that.v
+}
+
+//GetKeys Return a slice interface that represent the keys to use with the At fonction (Works only on TypeMap and TypeArray)
+func (that *JSONNode) GetKeys() []interface{} {
+       var ret []interface{}
+       switch that.t {
+       case TypeMap:
+               nb := len(that.m)
+               ret = make([]interface{}, nb)
+               for key := range that.m {
+                       nb--
+                       ret[nb] = key
+               }
+       case TypeArray:
+               nb := len(that.a)
+               ret = make([]interface{}, nb)
+               for nb > 0 {
+                       nb--
+                       ret[nb] = nb
+               }
+       default:
+               panic(ErrorGetKeys)
+       }
+       return ret
+}
+
+//Len Return the length of the current Node
+//
+// if TypeUndefined return 0
+//
+// if TypeValue return 1
+//
+// if TypeArray return the size of the array
+//
+// if TypeMap return the size of the map
+func (that *JSONNode) Len() int {
+       var ret int
+       switch that.t {
+       case TypeMap:
+               ret = len(that.m)
+       case TypeArray:
+               ret = len(that.a)
+       case TypeValue:
+               ret = 1
+       }
+       return ret
+}
+
+//SetType Is use to set the Type of a node and return the current Node you are working on
+func (that *JSONNode) SetType(t JSONNodeType) *JSONNode {
+       if that.t != TypeUndefined && that.t != t {
+               panic(ErrorMultipleType)
+       }
+       if t >= typeError {
+               panic(ErrorUnknowType)
+       }
+       that.t = t
+       switch t {
+       case TypeMap:
+               that.m = make(map[string]*JSONNode, 0)
+       case TypeArray:
+               that.a = make([]JSONNode, 0)
+       case TypeValue:
+               that.Val(nil)
+       }
+       return that
+}
+
+//GetType Is use to Get the Type of a node
+func (that *JSONNode) GetType() JSONNodeType {
+       return that.t
+}
+
+//Copy Will set this node like the one in argument. this node must be of type TypeUndefined
+//
+//if deepCopy is true we will copy all the children recursively else we will share the children
+//
+//return the current JSONNode
+func (that *JSONNode) Copy(other *JSONNode, deepCopy bool) *JSONNode {
+       if that.t != TypeUndefined {
+               panic(ErrorCopyType)
+       }
+       
+       if other.t == TypeValue {
+               *that = *other
+       } else if other.t == TypeArray {
+               if !deepCopy {
+                       *that = *other
+               } else {
+                       that.Array(len(other.a))
+                       for i := range other.a {
+                               that.At(i).Copy(other.At(i), deepCopy)
+                       }
+               }
+       } else if other.t == TypeMap {
+               that.SetType(other.t)
+               if !deepCopy {
+                       for val := range other.m {
+                               that.m[val] = other.m[val]
+                       }
+               } else {
+                       for val := range other.m {
+                               that.Map(val).Copy(other.At(val), deepCopy)
+                       }
+               }
+       }
+       return that
+}
+
+
+//Unset Will unset everything in the JSONnode. All the children data will be lost
+func (that *JSONNode) Unset() {
+       *that = JSONNode{}
+}
+
+//DelKey will remove a key in the map.
+//
+//return the current JSONNode.
+func (that *JSONNode) DelKey(key string) *JSONNode {
+       if that.t != TypeMap {
+               panic(ErrorDeleteKey)
+       }
+       delete(that.m, key)
+       return that
+}
+
+//UnmarshalDontExpand set or not if Unmarshall will generate anything in that JSONNode and its children
+//
+//val: will change the expanding rules for this node
+//
+//- The type wont be change for any type
+//
+//- Array wont grow
+//
+//- New keys wont be added to Map
+//
+//- Values set to nil "*.Val(nil)*" will be turn into the type decide by Json
+//
+//- It will respect any current mapping and will return errors if needed
+//
+//recurse: if true, it will set all the children of that JSONNode with val
+func (that *JSONNode) UnmarshalDontExpand(val bool, recurse bool) *JSONNode {
+       that.dontExpand = val
+       if recurse {
+               switch that.t {
+               case TypeMap:
+                       for k := range that.m {
+                               that.m[k].UnmarshalDontExpand(val, recurse)
+                       }
+               case TypeArray:
+                       for k := range that.a {
+                               that.a[k].UnmarshalDontExpand(val, recurse)
+                       }
+               }
+       }
+       return that
+}
+
+//MarshalJSON Make JSONNode a Marshaler Interface compatible
+func (that *JSONNode) MarshalJSON() ([]byte, error) {
+       var ret []byte
+       var err error
+       switch that.t {
+       case TypeMap:
+               ret, err = json.Marshal(that.m)
+       case TypeArray:
+               ret, err = json.Marshal(that.a)
+       case TypeValue:
+               ret, err = json.Marshal(that.v)
+       default:
+               ret, err = json.Marshal(nil)
+       }
+       if err != nil {
+               return nil, err
+       }
+       return ret, err
+}
+
+func (that *JSONNode) unmarshalMap(data []byte) error {
+       tmp := make(map[string]json.RawMessage)
+       err := json.Unmarshal(data, &tmp)
+       if err != nil {
+               return err
+       }
+       for k := range tmp {
+               if _, ok := that.m[k]; ok {
+                       err := json.Unmarshal(tmp[k], that.m[k])
+                       if err != nil {
+                               return err
+                       }
+               } else if !that.dontExpand {
+                       err := json.Unmarshal(tmp[k], that.Map(k))
+                       if err != nil {
+                               return err
+                       }
+               }
+       }
+       return nil
+}
+
+func (that *JSONNode) unmarshalArray(data []byte) error {
+       var tmp []json.RawMessage
+       err := json.Unmarshal(data, &tmp)
+       if err != nil {
+               return err
+       }
+       for i := len(tmp) - 1; i >= 0; i-- {
+               if !that.dontExpand || i < len(that.a) {
+                       err := json.Unmarshal(tmp[i], that.At(i))
+                       if err != nil {
+                               return err
+                       }
+               }
+       }
+       return nil
+}
+
+func (that *JSONNode) unmarshalValue(data []byte) error {
+       if that.v != nil {
+               return json.Unmarshal(data, that.v)
+       }
+       var tmp interface{}
+       err := json.Unmarshal(data, &tmp)
+       if err != nil {
+               return err
+       }
+       that.Val(tmp)
+       return nil
+}
+
+//UnmarshalJSON Make JSONNode a Unmarshaler Interface compatible
+func (that *JSONNode) UnmarshalJSON(data []byte) error {
+       if len(data) == 0 {
+               return nil
+       }
+       if that.dontExpand && that.t == TypeUndefined {
+               return nil
+       }
+       if that.t == TypeValue {
+               return that.unmarshalValue(data)
+       }
+       if data[0] == '{' {
+               if that.t != TypeMap && that.t != TypeUndefined {
+                       return ErrorTypeUnmarshaling
+               }
+               return that.unmarshalMap(data)
+       }
+       if data[0] == '[' {
+               if that.t != TypeArray && that.t != TypeUndefined {
+                       return ErrorTypeUnmarshaling
+               }
+               return that.unmarshalArray(data)
+
+       }
+       if that.t == TypeUndefined {
+               return that.unmarshalValue(data)
+       }
+       return ErrorTypeUnmarshaling
+}
diff --git a/vendor/github.com/bennyscetbun/jsongo/print.go b/vendor/github.com/bennyscetbun/jsongo/print.go
new file mode 100644 (file)
index 0000000..6869918
--- /dev/null
@@ -0,0 +1,74 @@
+package jsongo
+
+import (
+       "fmt"
+       "regexp"
+       "strings"
+)
+
+//Thanks https://github.com/chuckpreslar/inflect for the UpperCamelCase
+
+// Split's a string so that it can be converted to a different casing.
+// Splits on underscores, hyphens, spaces and camel casing.
+func split(str string) []string {
+       // FIXME: This isn't a perfect solution.
+       // ex. WEiRD CaSINg (Support for 13 year old developers)
+       return strings.Split(regexp.MustCompile(`-|_|([a-z])([A-Z])`).ReplaceAllString(strings.Trim(str, `-|_| `), `$1 $2`), ` `)
+}
+
+// UpperCamelCase converts a string to it's upper camel case version.
+func UpperCamelCase(str string) string {
+       pieces := split(str)
+
+       for index, s := range pieces {
+               pieces[index] = fmt.Sprintf(`%v%v`, strings.ToUpper(string(s[0])), strings.ToLower(s[1:]))
+       }
+
+       return strings.Join(pieces, ``)
+}
+
+func (that *JSONNode) printValue(indentlevel int, indentchar string) {
+       fmt.Printf(" %T ", that.Get())
+}
+
+func (that *JSONNode) printMap(indentlevel int, indentchar string) {
+       fmt.Printf(" struct {\n")
+       for key := range that.m {
+               printfindent(indentlevel+1, indentchar, "%s", UpperCamelCase(key))
+               that.m[key].print(indentlevel+1, indentchar)
+               fmt.Printf(" `json:\"%s\"`\n", key)
+       }
+       printfindent(indentlevel, indentchar, "}")
+}
+
+func (that *JSONNode) printArray(indentlevel int, indentchar string) {
+       if len(that.a) == 0 {
+               fmt.Printf(" []interface{} ")
+               return
+       }
+       fmt.Printf(" [] ")
+       for key := range that.a {
+               that.a[key].print(indentlevel+1, indentchar)
+               break
+       }
+}
+
+//DebugProspect Print all the data the we ve got on a node and all it s children
+func (that *JSONNode) print(indentlevel int, indentchar string) {
+       switch that.t {
+       case TypeValue:
+               that.printValue(indentlevel, indentchar)
+       case TypeMap:
+               that.printMap(indentlevel, indentchar)
+       case TypeArray:
+               that.printArray(indentlevel, indentchar)
+       case TypeUndefined:
+               printfindent(indentlevel, indentchar, "Is of Type: TypeUndefined\n")
+       }
+}
+
+//Print Print all the data the we ve got on a node and all it s children as a go struct :) (FOR DEV PURPOSE)
+func (that *JSONNode) Print() {
+       that.print(0, "\t")
+       fmt.Printf("\n")
+}
diff --git a/vendor/github.com/lunixbochs/struc/.travis.yml b/vendor/github.com/lunixbochs/struc/.travis.yml
new file mode 100644 (file)
index 0000000..8316e89
--- /dev/null
@@ -0,0 +1,10 @@
+language: go
+sudo: false
+
+script: go test -v
+
+go:
+  - 1.2
+  - 1.3
+  - 1.4
+  - tip
diff --git a/vendor/github.com/lunixbochs/struc/LICENSE b/vendor/github.com/lunixbochs/struc/LICENSE
new file mode 100644 (file)
index 0000000..42e8263
--- /dev/null
@@ -0,0 +1,19 @@
+Copyright (c) 2015 Ryan Hileman
+
+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/lunixbochs/struc/README.md b/vendor/github.com/lunixbochs/struc/README.md
new file mode 100644 (file)
index 0000000..c813497
--- /dev/null
@@ -0,0 +1,103 @@
+[![Build Status](https://travis-ci.org/lunixbochs/struc.svg?branch=master)](https://travis-ci.org/lunixbochs/struc)
+
+struc
+====
+
+Struc exists to pack and unpack C-style structures from bytes, which is useful for binary files and network protocols. It could be considered an alternative to `encoding/binary`, which requires massive boilerplate for some similar operations.
+
+Take a look at an [example comparing `struc` and `encoding/binary`](https://bochs.info/p/cxvm9)
+
+Struc considers usability first. That said, it does cache reflection data and aims to be competitive with `encoding/binary` struct packing in every way, including performance.
+
+Example struct
+----
+
+```Go
+type Example struct {
+    Var   int `struc:"int32,sizeof=Str"`
+    Str   string
+    Weird []byte `struc:"[8]int64"`
+    Var   []int `struc:"[]int32,little"`
+}
+```
+
+Struct tag format
+----
+
+ - ```Var []int `struc:"[]int32,little,sizeof=StringField"` ``` will pack Var as a slice of little-endian int32, and link it as the size of `StringField`.
+ - `sizeof=`: Indicates this field is a number used to track the length of a another field. `sizeof` fields are automatically updated on `Pack()` based on the current length of the tracked field, and are used to size the target field during `Unpack()`.
+ - Bare values will be parsed as type and endianness.
+
+Endian formats
+----
+
+ - `big` (default)
+ - `little`
+
+Recognized types
+----
+
+ - `pad` - this type ignores field contents and is backed by a `[length]byte` containing nulls
+ - `bool`
+ - `byte`
+ - `int8`, `uint8`
+ - `int16`, `uint16`
+ - `int32`, `uint32`
+ - `int64`, `uint64`
+ - `float32`
+ - `float64`
+
+Types can be indicated as arrays/slices using `[]` syntax. Example: `[]int64`, `[8]int32`.
+
+Bare slice types (those with no `[size]`) must have a linked `Sizeof` field.
+
+Private fields are ignored when packing and unpacking.
+
+Example code
+----
+
+```Go
+package main
+
+import (
+    "bytes"
+    "github.com/lunixbochs/struc"
+)
+
+type Example struct {
+    A int `struc:"big"`
+
+    // B will be encoded/decoded as a 16-bit int (a "short")
+    // but is stored as a native int in the struct
+    B int `struc:"int16"`
+
+    // the sizeof key links a buffer's size to any int field
+    Size int `struc:"int8,little,sizeof=Str"`
+    Str  string
+
+    // you can get freaky if you want
+    Str2 string `struc:"[5]int64"`
+}
+
+func main() {
+    var buf bytes.Buffer
+    t := &Example{1, 2, 0, "test", "test2"}
+    err := struc.Pack(&buf, t)
+    o := &Example{}
+    err = struc.Unpack(&buf, o)
+}
+```
+
+Benchmark
+----
+
+`BenchmarkEncode` uses struc. `Stdlib` benchmarks use equivalent `encoding/binary` code. `Manual` encodes without any reflection, and should be considered an upper bound on performance (which generated code based on struc definitions should be able to achieve).
+
+```
+BenchmarkEncode        1000000   1265 ns/op
+BenchmarkStdlibEncode  1000000   1855 ns/op
+BenchmarkManualEncode  5000000    284 ns/op
+BenchmarkDecode        1000000   1259 ns/op
+BenchmarkStdlibDecode  1000000   1656 ns/op
+BenchmarkManualDecode  20000000  89.0 ns/op
+```
diff --git a/vendor/github.com/lunixbochs/struc/bench_test.go b/vendor/github.com/lunixbochs/struc/bench_test.go
new file mode 100644 (file)
index 0000000..d73c110
--- /dev/null
@@ -0,0 +1,165 @@
+package struc
+
+import (
+       "bytes"
+       "encoding/binary"
+       "testing"
+)
+
+type BenchExample struct {
+       Test    [5]byte
+       A       int32
+       B, C, D int16
+       Test2   [4]byte
+       Length  int32
+}
+
+type BenchStrucExample struct {
+       Test    [5]byte `struc:"[5]byte"`
+       A       int     `struc:"int32"`
+       B, C, D int     `struc:"int16"`
+       Test2   [4]byte `struc:"[4]byte"`
+       Length  int     `struc:"int32,sizeof=Data"`
+       Data    []byte
+}
+
+var benchRef = &BenchExample{
+       [5]byte{1, 2, 3, 4, 5},
+       1, 2, 3, 4,
+       [4]byte{1, 2, 3, 4},
+       8,
+}
+
+var eightBytes = []byte("8bytestr")
+
+var benchStrucRef = &BenchStrucExample{
+       [5]byte{1, 2, 3, 4, 5},
+       1, 2, 3, 4,
+       [4]byte{1, 2, 3, 4},
+       8, eightBytes,
+}
+
+func BenchmarkEncode(b *testing.B) {
+       for i := 0; i < b.N; i++ {
+               var buf bytes.Buffer
+               err := Pack(&buf, benchStrucRef)
+               if err != nil {
+                       b.Fatal(err)
+               }
+       }
+}
+
+func BenchmarkStdlibEncode(b *testing.B) {
+       for i := 0; i < b.N; i++ {
+               var buf bytes.Buffer
+               err := binary.Write(&buf, binary.BigEndian, benchRef)
+               if err != nil {
+                       b.Fatal(err)
+               }
+               _, err = buf.Write(eightBytes)
+               if err != nil {
+                       b.Fatal(err)
+               }
+       }
+}
+
+func BenchmarkManualEncode(b *testing.B) {
+       order := binary.BigEndian
+       s := benchStrucRef
+       for i := 0; i < b.N; i++ {
+               var buf bytes.Buffer
+               tmp := make([]byte, 29)
+               copy(tmp[0:5], s.Test[:])
+               order.PutUint32(tmp[5:9], uint32(s.A))
+               order.PutUint16(tmp[9:11], uint16(s.B))
+               order.PutUint16(tmp[11:13], uint16(s.C))
+               order.PutUint16(tmp[13:15], uint16(s.D))
+               copy(tmp[15:19], s.Test2[:])
+               order.PutUint32(tmp[19:23], uint32(s.Length))
+               copy(tmp[23:], s.Data)
+               _, err := buf.Write(tmp)
+               if err != nil {
+                       b.Fatal(err)
+               }
+       }
+}
+
+func BenchmarkDecode(b *testing.B) {
+       var out BenchStrucExample
+       var buf bytes.Buffer
+       if err := Pack(&buf, benchStrucRef); err != nil {
+               b.Fatal(err)
+       }
+       bufBytes := buf.Bytes()
+       for i := 0; i < b.N; i++ {
+               buf := bytes.NewReader(bufBytes)
+               err := Unpack(buf, &out)
+               if err != nil {
+                       b.Fatal(err)
+               }
+               out.Data = nil
+       }
+}
+
+func BenchmarkStdlibDecode(b *testing.B) {
+       var out BenchExample
+       var buf bytes.Buffer
+       binary.Write(&buf, binary.BigEndian, *benchRef)
+       _, err := buf.Write(eightBytes)
+       if err != nil {
+               b.Fatal(err)
+       }
+       bufBytes := buf.Bytes()
+       for i := 0; i < b.N; i++ {
+               buf := bytes.NewReader(bufBytes)
+               err := binary.Read(buf, binary.BigEndian, &out)
+               if err != nil {
+                       b.Fatal(err)
+               }
+               tmp := make([]byte, out.Length)
+               _, err = buf.Read(tmp)
+               if err != nil {
+                       b.Fatal(err)
+               }
+       }
+}
+
+func BenchmarkManualDecode(b *testing.B) {
+       var o BenchStrucExample
+       var buf bytes.Buffer
+       if err := Pack(&buf, benchStrucRef); err != nil {
+               b.Fatal(err)
+       }
+       tmp := buf.Bytes()
+       order := binary.BigEndian
+       for i := 0; i < b.N; i++ {
+               copy(o.Test[:], tmp[0:5])
+               o.A = int(order.Uint32(tmp[5:9]))
+               o.B = int(order.Uint16(tmp[9:11]))
+               o.C = int(order.Uint16(tmp[11:13]))
+               o.D = int(order.Uint16(tmp[13:15]))
+               copy(o.Test2[:], tmp[15:19])
+               o.Length = int(order.Uint32(tmp[19:23]))
+               o.Data = make([]byte, o.Length)
+               copy(o.Data, tmp[23:])
+       }
+}
+
+func BenchmarkFullEncode(b *testing.B) {
+       for i := 0; i < b.N; i++ {
+               var buf bytes.Buffer
+               if err := Pack(&buf, reference); err != nil {
+                       b.Fatal(err)
+               }
+       }
+}
+
+func BenchmarkFullDecode(b *testing.B) {
+       var out Example
+       for i := 0; i < b.N; i++ {
+               buf := bytes.NewBuffer(referenceBytes)
+               if err := Unpack(buf, &out); err != nil {
+                       b.Fatal(err)
+               }
+       }
+}
diff --git a/vendor/github.com/lunixbochs/struc/binary.go b/vendor/github.com/lunixbochs/struc/binary.go
new file mode 100644 (file)
index 0000000..4899d08
--- /dev/null
@@ -0,0 +1,52 @@
+package struc
+
+import (
+       "encoding/binary"
+       "io"
+       "reflect"
+)
+
+type byteWriter struct {
+       buf []byte
+       pos int
+}
+
+func (b byteWriter) Write(p []byte) (int, error) {
+       capacity := len(b.buf) - b.pos
+       if capacity < len(p) {
+               p = p[:capacity]
+       }
+       if len(p) > 0 {
+               copy(b.buf[b.pos:], p)
+               b.pos += len(p)
+       }
+       return len(p), nil
+}
+
+type binaryFallback reflect.Value
+
+func (b binaryFallback) String() string {
+       return b.String()
+}
+
+func (b binaryFallback) Sizeof(val reflect.Value, options *Options) int {
+       return binary.Size(val.Interface())
+}
+
+func (b binaryFallback) Pack(buf []byte, val reflect.Value, options *Options) (int, error) {
+       tmp := byteWriter{buf: buf}
+       var order binary.ByteOrder = binary.BigEndian
+       if options.Order != nil {
+               order = options.Order
+       }
+       err := binary.Write(tmp, order, val.Interface())
+       return tmp.pos, err
+}
+
+func (b binaryFallback) Unpack(r io.Reader, val reflect.Value, options *Options) error {
+       var order binary.ByteOrder = binary.BigEndian
+       if options.Order != nil {
+               order = options.Order
+       }
+       return binary.Read(r, order, val.Interface())
+}
diff --git a/vendor/github.com/lunixbochs/struc/custom.go b/vendor/github.com/lunixbochs/struc/custom.go
new file mode 100644 (file)
index 0000000..c468dce
--- /dev/null
@@ -0,0 +1,33 @@
+package struc
+
+import (
+       "io"
+       "reflect"
+)
+
+type Custom interface {
+       Pack(p []byte, opt *Options) (int, error)
+       Unpack(r io.Reader, length int, opt *Options) error
+       Size(opt *Options) int
+       String() string
+}
+
+type customFallback struct {
+       custom Custom
+}
+
+func (c customFallback) Pack(p []byte, val reflect.Value, opt *Options) (int, error) {
+       return c.custom.Pack(p, opt)
+}
+
+func (c customFallback) Unpack(r io.Reader, val reflect.Value, opt *Options) error {
+       return c.custom.Unpack(r, 1, opt)
+}
+
+func (c customFallback) Sizeof(val reflect.Value, opt *Options) int {
+       return c.custom.Size(opt)
+}
+
+func (c customFallback) String() string {
+       return c.custom.String()
+}
diff --git a/vendor/github.com/lunixbochs/struc/custom_float16.go b/vendor/github.com/lunixbochs/struc/custom_float16.go
new file mode 100644 (file)
index 0000000..722be76
--- /dev/null
@@ -0,0 +1,78 @@
+package struc
+
+import (
+       "encoding/binary"
+       "io"
+       "math"
+       "strconv"
+)
+
+type Float16 float64
+
+func (f *Float16) Pack(p []byte, opt *Options) (int, error) {
+       order := opt.Order
+       if order == nil {
+               order = binary.BigEndian
+       }
+       sign := uint16(0)
+       if *f < 0 {
+               sign = 1
+       }
+       var frac, exp uint16
+       if math.IsInf(float64(*f), 0) {
+               exp = 0x1f
+               frac = 0
+       } else if math.IsNaN(float64(*f)) {
+               exp = 0x1f
+               frac = 1
+       } else {
+               bits := math.Float64bits(float64(*f))
+               exp64 := (bits >> 52) & 0x7ff
+               if exp64 != 0 {
+                       exp = uint16((exp64 - 1023 + 15) & 0x1f)
+               }
+               frac = uint16((bits >> 42) & 0x3ff)
+       }
+       var out uint16
+       out |= sign << 15
+       out |= exp << 10
+       out |= frac & 0x3ff
+       order.PutUint16(p, out)
+       return 2, nil
+}
+func (f *Float16) Unpack(r io.Reader, length int, opt *Options) error {
+       order := opt.Order
+       if order == nil {
+               order = binary.BigEndian
+       }
+       var tmp [2]byte
+       if _, err := r.Read(tmp[:]); err != nil {
+               return err
+       }
+       val := order.Uint16(tmp[:2])
+       sign := (val >> 15) & 1
+       exp := int16((val >> 10) & 0x1f)
+       frac := val & 0x3ff
+       if exp == 0x1f {
+               if frac != 0 {
+                       *f = Float16(math.NaN())
+               } else {
+                       *f = Float16(math.Inf(int(sign)*-2 + 1))
+               }
+       } else {
+               var bits uint64
+               bits |= uint64(sign) << 63
+               bits |= uint64(frac) << 42
+               if exp > 0 {
+                       bits |= uint64(exp-15+1023) << 52
+               }
+               *f = Float16(math.Float64frombits(bits))
+       }
+       return nil
+}
+func (f *Float16) Size(opt *Options) int {
+       return 2
+}
+func (f *Float16) String() string {
+       return strconv.FormatFloat(float64(*f), 'g', -1, 32)
+}
diff --git a/vendor/github.com/lunixbochs/struc/custom_float16_test.go b/vendor/github.com/lunixbochs/struc/custom_float16_test.go
new file mode 100644 (file)
index 0000000..11f73cb
--- /dev/null
@@ -0,0 +1,56 @@
+package struc
+
+import (
+       "bytes"
+       "encoding/binary"
+       "fmt"
+       "math"
+       "strconv"
+       "strings"
+       "testing"
+)
+
+func TestFloat16(t *testing.T) {
+       // test cases from https://en.wikipedia.org/wiki/Half-precision_floating-point_format#Half_precision_examples
+       tests := []struct {
+               B string
+               F float64
+       }{
+               //s expnt significand
+               {"0 01111 0000000000", 1},
+               {"0 01111 0000000001", 1.0009765625},
+               {"1 10000 0000000000", -2},
+               {"0 11110 1111111111", 65504},
+               // {"0 00001 0000000000", 0.0000610352},
+               // {"0 00000 1111111111", 0.0000609756},
+               // {"0 00000 0000000001", 0.0000000596046},
+               {"0 00000 0000000000", 0},
+               // {"1 00000 0000000000", -0},
+               {"0 11111 0000000000", math.Inf(1)},
+               {"1 11111 0000000000", math.Inf(-1)},
+               {"0 01101 0101010101", 0.333251953125},
+       }
+       for _, test := range tests {
+               var buf bytes.Buffer
+               f := Float16(test.F)
+               if err := Pack(&buf, &f); err != nil {
+                       t.Error("pack failed:", err)
+                       continue
+               }
+               bitval, _ := strconv.ParseUint(strings.Replace(test.B, " ", "", -1), 2, 16)
+               tmp := binary.BigEndian.Uint16(buf.Bytes())
+               if tmp != uint16(bitval) {
+                       t.Errorf("incorrect pack: %s != %016b (%f)", test.B, tmp, test.F)
+                       continue
+               }
+               var f2 Float16
+               if err := Unpack(&buf, &f2); err != nil {
+                       t.Error("unpack failed:", err)
+                       continue
+               }
+               // let sprintf deal with (im)precision for me here
+               if fmt.Sprintf("%f", f) != fmt.Sprintf("%f", f2) {
+                       t.Errorf("incorrect unpack: %016b %f != %f", bitval, f, f2)
+               }
+       }
+}
diff --git a/vendor/github.com/lunixbochs/struc/custom_test.go b/vendor/github.com/lunixbochs/struc/custom_test.go
new file mode 100644 (file)
index 0000000..e601166
--- /dev/null
@@ -0,0 +1,97 @@
+package struc
+
+import (
+       "bytes"
+       "encoding/binary"
+       "io"
+       "strconv"
+       "testing"
+)
+
+type Int3 uint32
+
+func (i *Int3) Pack(p []byte, opt *Options) (int, error) {
+       var tmp [4]byte
+       binary.BigEndian.PutUint32(tmp[:], uint32(*i))
+       copy(p, tmp[1:])
+       return 3, nil
+}
+func (i *Int3) Unpack(r io.Reader, length int, opt *Options) error {
+       var tmp [4]byte
+       if _, err := r.Read(tmp[1:]); err != nil {
+               return err
+       }
+       *i = Int3(binary.BigEndian.Uint32(tmp[:]))
+       return nil
+}
+func (i *Int3) Size(opt *Options) int {
+       return 3
+}
+func (i *Int3) String() string {
+       return strconv.FormatUint(uint64(*i), 10)
+}
+
+func TestCustom(t *testing.T) {
+       var buf bytes.Buffer
+       var i Int3 = 3
+       if err := Pack(&buf, &i); err != nil {
+               t.Fatal(err)
+       }
+       if !bytes.Equal(buf.Bytes(), []byte{0, 0, 3}) {
+               t.Fatal("error packing custom int")
+       }
+       var i2 Int3
+       if err := Unpack(&buf, &i2); err != nil {
+               t.Fatal(err)
+       }
+       if i2 != 3 {
+               t.Fatal("error unpacking custom int")
+       }
+}
+
+type Int3Struct struct {
+       I Int3
+}
+
+func TestCustomStruct(t *testing.T) {
+       var buf bytes.Buffer
+       i := Int3Struct{3}
+       if err := Pack(&buf, &i); err != nil {
+               t.Fatal(err)
+       }
+       if !bytes.Equal(buf.Bytes(), []byte{0, 0, 3}) {
+               t.Fatal("error packing custom int struct")
+       }
+       var i2 Int3Struct
+       if err := Unpack(&buf, &i2); err != nil {
+               t.Fatal(err)
+       }
+       if i2.I != 3 {
+               t.Fatal("error unpacking custom int struct")
+       }
+}
+
+// TODO: slices of custom types don't work yet
+/*
+type Int3SliceStruct struct {
+       I [2]Int3
+}
+
+func TestCustomSliceStruct(t *testing.T) {
+       var buf bytes.Buffer
+       i := Int3SliceStruct{[2]Int3{3, 4}}
+       if err := Pack(&buf, &i); err != nil {
+               t.Fatal(err)
+       }
+       if !bytes.Equal(buf.Bytes(), []byte{0, 0, 3}) {
+               t.Fatal("error packing custom int struct")
+       }
+       var i2 Int3SliceStruct
+       if err := Unpack(&buf, &i2); err != nil {
+               t.Fatal(err)
+       }
+       if i2.I[0] != 3 && i2.I[1] != 4 {
+               t.Fatal("error unpacking custom int struct")
+       }
+}
+*/
diff --git a/vendor/github.com/lunixbochs/struc/field.go b/vendor/github.com/lunixbochs/struc/field.go
new file mode 100644 (file)
index 0000000..4af10a7
--- /dev/null
@@ -0,0 +1,281 @@
+package struc
+
+import (
+       "bytes"
+       "encoding/binary"
+       "fmt"
+       "math"
+       "reflect"
+)
+
+type Field struct {
+       Name     string
+       CanSet   bool
+       Ptr      bool
+       Index    int
+       Type     Type
+       defType  Type
+       Array    bool
+       Slice    bool
+       Len      int
+       Order    binary.ByteOrder
+       Sizeof   []int
+       Sizefrom []int
+       Fields   Fields
+       kind     reflect.Kind
+}
+
+func (f *Field) String() string {
+       var out string
+       if f.Type == Pad {
+               return fmt.Sprintf("{type: Pad, len: %d}", f.Len)
+       } else {
+               out = fmt.Sprintf("type: %s, order: %v", f.Type.String(), f.Order)
+       }
+       if f.Sizefrom != nil {
+               out += fmt.Sprintf(", sizefrom: %v", f.Sizefrom)
+       } else if f.Len > 0 {
+               out += fmt.Sprintf(", len: %d", f.Len)
+       }
+       if f.Sizeof != nil {
+               out += fmt.Sprintf(", sizeof: %v", f.Sizeof)
+       }
+       return "{" + out + "}"
+}
+
+func (f *Field) Size(val reflect.Value, options *Options) int {
+       typ := f.Type.Resolve(options)
+       size := 0
+       if typ == Struct {
+               vals := []reflect.Value{val}
+               if f.Slice {
+                       vals = make([]reflect.Value, val.Len())
+                       for i := 0; i < val.Len(); i++ {
+                               vals[i] = val.Index(i)
+                       }
+               }
+               for _, val := range vals {
+                       size += f.Fields.Sizeof(val, options)
+               }
+       } else if typ == Pad {
+               size = f.Len
+       } else if f.Slice || f.kind == reflect.String {
+               length := val.Len()
+               if f.Len > 1 {
+                       length = f.Len
+               }
+               size = length * typ.Size()
+       } else if typ == CustomType {
+               return val.Addr().Interface().(Custom).Size(options)
+       } else {
+               size = typ.Size()
+       }
+       align := options.ByteAlign
+       if align > 0 && size < align {
+               size = align
+       }
+       return size
+}
+
+func (f *Field) packVal(buf []byte, val reflect.Value, length int, options *Options) (size int, err error) {
+       order := f.Order
+       if options.Order != nil {
+               order = options.Order
+       }
+       if f.Ptr {
+               val = val.Elem()
+       }
+       typ := f.Type.Resolve(options)
+       switch typ {
+       case Struct:
+               return f.Fields.Pack(buf, val, options)
+       case Bool, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64:
+               size = typ.Size()
+               var n uint64
+               switch f.kind {
+               case reflect.Bool:
+                       if val.Bool() {
+                               n = 1
+                       } else {
+                               n = 0
+                       }
+               case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+                       n = uint64(val.Int())
+               default:
+                       n = val.Uint()
+               }
+               switch typ {
+               case Bool:
+                       if n != 0 {
+                               buf[0] = 1
+                       } else {
+                               buf[0] = 0
+                       }
+               case Int8, Uint8:
+                       buf[0] = byte(n)
+               case Int16, Uint16:
+                       order.PutUint16(buf, uint16(n))
+               case Int32, Uint32:
+                       order.PutUint32(buf, uint32(n))
+               case Int64, Uint64:
+                       order.PutUint64(buf, uint64(n))
+               }
+       case Float32, Float64:
+               size = typ.Size()
+               n := val.Float()
+               switch typ {
+               case Float32:
+                       order.PutUint32(buf, math.Float32bits(float32(n)))
+               case Float64:
+                       order.PutUint64(buf, math.Float64bits(n))
+               }
+       case String:
+               switch f.kind {
+               case reflect.String:
+                       size = val.Len()
+                       copy(buf, []byte(val.String()))
+               default:
+                       // TODO: handle kind != bytes here
+                       size = val.Len()
+                       copy(buf, val.Bytes())
+               }
+       case CustomType:
+               return val.Addr().Interface().(Custom).Pack(buf, options)
+       default:
+               panic(fmt.Sprintf("no pack handler for type: %s", typ))
+       }
+       return
+}
+
+func (f *Field) Pack(buf []byte, val reflect.Value, length int, options *Options) (int, error) {
+       typ := f.Type.Resolve(options)
+       if typ == Pad {
+               for i := 0; i < length; i++ {
+                       buf[i] = 0
+               }
+               return length, nil
+       }
+       if f.Slice {
+               // special case strings and byte slices for performance
+               end := val.Len()
+               if !f.Array && typ == Uint8 && (f.defType == Uint8 || f.kind == reflect.String) {
+                       var tmp []byte
+                       if f.kind == reflect.String {
+                               tmp = []byte(val.String())
+                       } else {
+                               tmp = val.Bytes()
+                       }
+                       copy(buf, tmp)
+                       if end < length {
+                               // TODO: allow configuring pad byte?
+                               rep := bytes.Repeat([]byte{0}, length-end)
+                               copy(buf[end:], rep)
+                               return length, nil
+                       }
+                       return val.Len(), nil
+               }
+               pos := 0
+               var zero reflect.Value
+               if end < length {
+                       zero = reflect.Zero(val.Type().Elem())
+               }
+               for i := 0; i < length; i++ {
+                       cur := zero
+                       if i < end {
+                               cur = val.Index(i)
+                       }
+                       if n, err := f.packVal(buf[pos:], cur, 1, options); err != nil {
+                               return pos, err
+                       } else {
+                               pos += n
+                       }
+               }
+               return pos, nil
+       } else {
+               return f.packVal(buf, val, length, options)
+       }
+}
+
+func (f *Field) unpackVal(buf []byte, val reflect.Value, length int, options *Options) error {
+       order := f.Order
+       if options.Order != nil {
+               order = options.Order
+       }
+       if f.Ptr {
+               val = val.Elem()
+       }
+       typ := f.Type.Resolve(options)
+       switch typ {
+       case Float32, Float64:
+               var n float64
+               switch typ {
+               case Float32:
+                       n = float64(math.Float32frombits(order.Uint32(buf)))
+               case Float64:
+                       n = math.Float64frombits(order.Uint64(buf))
+               }
+               switch f.kind {
+               case reflect.Float32, reflect.Float64:
+                       val.SetFloat(n)
+               default:
+                       return fmt.Errorf("struc: refusing to unpack float into field %s of type %s", f.Name, f.kind.String())
+               }
+       case Bool, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64:
+               var n uint64
+               switch typ {
+               case Bool, Int8, Uint8:
+                       n = uint64(buf[0])
+               case Int16, Uint16:
+                       n = uint64(order.Uint16(buf))
+               case Int32, Uint32:
+                       n = uint64(order.Uint32(buf))
+               case Int64, Uint64:
+                       n = uint64(order.Uint64(buf))
+               }
+               switch f.kind {
+               case reflect.Bool:
+                       val.SetBool(n != 0)
+               case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+                       val.SetInt(int64(n))
+               default:
+                       val.SetUint(n)
+               }
+       default:
+               panic(fmt.Sprintf("no unpack handler for type: %s", typ))
+       }
+       return nil
+}
+
+func (f *Field) Unpack(buf []byte, val reflect.Value, length int, options *Options) error {
+       typ := f.Type.Resolve(options)
+       if typ == Pad || f.kind == reflect.String {
+               if typ == Pad {
+                       return nil
+               } else {
+                       val.SetString(string(buf))
+                       return nil
+               }
+       } else if f.Slice {
+               if val.Cap() < length {
+                       val.Set(reflect.MakeSlice(val.Type(), length, length))
+               } else if val.Len() < length {
+                       val.Set(val.Slice(0, length))
+               }
+               // special case byte slices for performance
+               if !f.Array && typ == Uint8 && f.defType == Uint8 {
+                       copy(val.Bytes(), buf[:length])
+                       return nil
+               }
+               pos := 0
+               size := typ.Size()
+               for i := 0; i < length; i++ {
+                       if err := f.unpackVal(buf[pos:pos+size], val.Index(i), 1, options); err != nil {
+                               return err
+                       }
+                       pos += size
+               }
+               return nil
+       } else {
+               return f.unpackVal(buf, val, length, options)
+       }
+}
diff --git a/vendor/github.com/lunixbochs/struc/field_test.go b/vendor/github.com/lunixbochs/struc/field_test.go
new file mode 100644 (file)
index 0000000..45a07b2
--- /dev/null
@@ -0,0 +1,77 @@
+package struc
+
+import (
+       "bytes"
+       "testing"
+)
+
+type badFloat struct {
+       BadFloat int `struc:"float64"`
+}
+
+func TestBadFloatField(t *testing.T) {
+       buf := bytes.NewReader([]byte("00000000"))
+       err := Unpack(buf, &badFloat{})
+       if err == nil {
+               t.Fatal("failed to error on bad float unpack")
+       }
+}
+
+type emptyLengthField struct {
+       Strlen int `struc:"sizeof=Str"`
+       Str    []byte
+}
+
+func TestEmptyLengthField(t *testing.T) {
+       var buf bytes.Buffer
+       s := &emptyLengthField{0, []byte("test")}
+       o := &emptyLengthField{}
+       if err := Pack(&buf, s); err != nil {
+               t.Fatal(err)
+       }
+       if err := Unpack(&buf, o); err != nil {
+               t.Fatal(err)
+       }
+       if !bytes.Equal(s.Str, o.Str) {
+               t.Fatal("empty length field encode failed")
+       }
+}
+
+type fixedSlicePad struct {
+       Field []byte `struc:"[4]byte"`
+}
+
+func TestFixedSlicePad(t *testing.T) {
+       var buf bytes.Buffer
+       ref := []byte{0, 0, 0, 0}
+       s := &fixedSlicePad{}
+       if err := Pack(&buf, s); err != nil {
+               t.Fatal(err)
+       }
+       if !bytes.Equal(buf.Bytes(), ref) {
+               t.Fatal("implicit fixed slice pack failed")
+       }
+       if err := Unpack(&buf, s); err != nil {
+               t.Fatal(err)
+       }
+       if !bytes.Equal(s.Field, ref) {
+               t.Fatal("implicit fixed slice unpack failed")
+       }
+}
+
+type sliceCap struct {
+       Len   int `struc:"sizeof=Field"`
+       Field []byte
+}
+
+func TestSliceCap(t *testing.T) {
+       var buf bytes.Buffer
+       tmp := &sliceCap{0, []byte("1234")}
+       if err := Pack(&buf, tmp); err != nil {
+               t.Fatal(err)
+       }
+       tmp.Field = make([]byte, 0, 4)
+       if err := Unpack(&buf, tmp); err != nil {
+               t.Fatal(err)
+       }
+}
diff --git a/vendor/github.com/lunixbochs/struc/fields.go b/vendor/github.com/lunixbochs/struc/fields.go
new file mode 100644 (file)
index 0000000..80e2045
--- /dev/null
@@ -0,0 +1,169 @@
+package struc
+
+import (
+       "encoding/binary"
+       "fmt"
+       "io"
+       "reflect"
+       "strings"
+)
+
+type Fields []*Field
+
+func (f Fields) SetByteOrder(order binary.ByteOrder) {
+       for _, field := range f {
+               field.Order = order
+       }
+}
+
+func (f Fields) String() string {
+       fields := make([]string, len(f))
+       for i, field := range f {
+               fields[i] = field.String()
+       }
+       return "{" + strings.Join(fields, ", ") + "}"
+}
+
+func (f Fields) Sizeof(val reflect.Value, options *Options) int {
+       for val.Kind() == reflect.Ptr {
+               val = val.Elem()
+       }
+       size := 0
+       for i, field := range f {
+               v := val.Field(i)
+               if v.CanSet() {
+                       size += field.Size(v, options)
+               }
+       }
+       return size
+}
+
+func (f Fields) sizefrom(val reflect.Value, index []int) int {
+       field := val.FieldByIndex(index)
+       switch field.Kind() {
+       case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+               return int(field.Int())
+       case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+               n := int(field.Uint())
+               // all the builtin array length types are native int
+               // so this guards against weird truncation
+               if n < 0 {
+                       return 0
+               }
+               return n
+       default:
+               name := val.Type().FieldByIndex(index).Name
+               panic(fmt.Sprintf("sizeof field %T.%s not an integer type", val.Interface(), name))
+       }
+}
+
+func (f Fields) Pack(buf []byte, val reflect.Value, options *Options) (int, error) {
+       for val.Kind() == reflect.Ptr {
+               val = val.Elem()
+       }
+       pos := 0
+       for i, field := range f {
+               if !field.CanSet {
+                       continue
+               }
+               v := val.Field(i)
+               length := field.Len
+               if field.Sizefrom != nil {
+                       length = f.sizefrom(val, field.Sizefrom)
+               }
+               if length <= 0 && field.Slice {
+                       length = v.Len()
+               }
+               if field.Sizeof != nil {
+                       length := val.FieldByIndex(field.Sizeof).Len()
+                       switch field.kind {
+                       case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+                               // allocating a new int here has fewer side effects (doesn't update the original struct)
+                               // but it's a wasteful allocation
+                               // the old method might work if we just cast the temporary int/uint to the target type
+                               v = reflect.New(v.Type()).Elem()
+                               v.SetInt(int64(length))
+                       case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+                               v = reflect.New(v.Type()).Elem()
+                               v.SetUint(uint64(length))
+                       default:
+                               panic(fmt.Sprintf("sizeof field is not int or uint type: %s, %s", field.Name, v.Type()))
+                       }
+               }
+               if n, err := field.Pack(buf[pos:], v, length, options); err != nil {
+                       return n, err
+               } else {
+                       pos += n
+               }
+       }
+       return pos, nil
+}
+
+func (f Fields) Unpack(r io.Reader, val reflect.Value, options *Options) error {
+       for val.Kind() == reflect.Ptr {
+               val = val.Elem()
+       }
+       var tmp [8]byte
+       var buf []byte
+       for i, field := range f {
+               if !field.CanSet {
+                       continue
+               }
+               v := val.Field(i)
+               length := field.Len
+               if field.Sizefrom != nil {
+                       length = f.sizefrom(val, field.Sizefrom)
+               }
+               if v.Kind() == reflect.Ptr && !v.Elem().IsValid() {
+                       v.Set(reflect.New(v.Type().Elem()))
+               }
+               if field.Type == Struct {
+                       if field.Slice {
+                               vals := reflect.MakeSlice(v.Type(), length, length)
+                               for i := 0; i < length; i++ {
+                                       v := vals.Index(i)
+                                       fields, err := parseFields(v)
+                                       if err != nil {
+                                               return err
+                                       }
+                                       if err := fields.Unpack(r, v, options); err != nil {
+                                               return err
+                                       }
+                               }
+                               v.Set(vals)
+                       } else {
+                               // TODO: DRY (we repeat the inner loop above)
+                               fields, err := parseFields(v)
+                               if err != nil {
+                                       return err
+                               }
+                               if err := fields.Unpack(r, v, options); err != nil {
+                                       return err
+                               }
+                       }
+                       continue
+               } else {
+                       typ := field.Type.Resolve(options)
+                       if typ == CustomType {
+                               if err := v.Addr().Interface().(Custom).Unpack(r, length, options); err != nil {
+                                       return err
+                               }
+                       } else {
+                               size := length * field.Type.Resolve(options).Size()
+                               if size < 8 {
+                                       buf = tmp[:size]
+                               } else {
+                                       buf = make([]byte, size)
+                               }
+                               if _, err := io.ReadFull(r, buf); err != nil {
+                                       return err
+                               }
+                               err := field.Unpack(buf[:size], v, length, options)
+                               if err != nil {
+                                       return err
+                               }
+                       }
+               }
+       }
+       return nil
+}
diff --git a/vendor/github.com/lunixbochs/struc/fields_test.go b/vendor/github.com/lunixbochs/struc/fields_test.go
new file mode 100644 (file)
index 0000000..850e377
--- /dev/null
@@ -0,0 +1,59 @@
+package struc
+
+import (
+       "bytes"
+       "reflect"
+       "testing"
+)
+
+var refVal = reflect.ValueOf(reference)
+
+func TestFieldsParse(t *testing.T) {
+       if _, err := parseFields(refVal); err != nil {
+               t.Fatal(err)
+       }
+}
+
+func TestFieldsString(t *testing.T) {
+       fields, _ := parseFields(refVal)
+       fields.String()
+}
+
+type sizefromStruct struct {
+       Size1 uint `struc:"sizeof=Var1"`
+       Var1  []byte
+       Size2 int `struc:"sizeof=Var2"`
+       Var2  []byte
+}
+
+func TestFieldsSizefrom(t *testing.T) {
+       var test = sizefromStruct{
+               Var1: []byte{1, 2, 3},
+               Var2: []byte{4, 5, 6},
+       }
+       var buf bytes.Buffer
+       err := Pack(&buf, &test)
+       if err != nil {
+               t.Fatal(err)
+       }
+       err = Unpack(&buf, &test)
+       if err != nil {
+               t.Fatal(err)
+       }
+}
+
+type sizefromStructBad struct {
+       Size1 string `struc:"sizeof=Var1"`
+       Var1  []byte
+}
+
+func TestFieldsSizefromBad(t *testing.T) {
+       var test = &sizefromStructBad{Var1: []byte{1, 2, 3}}
+       var buf bytes.Buffer
+       defer func() {
+               if err := recover(); err == nil {
+                       t.Fatal("failed to panic on bad sizeof type")
+               }
+       }()
+       Pack(&buf, &test)
+}
diff --git a/vendor/github.com/lunixbochs/struc/legacy.go b/vendor/github.com/lunixbochs/struc/legacy.go
new file mode 100644 (file)
index 0000000..5baf70d
--- /dev/null
@@ -0,0 +1,16 @@
+package struc
+
+import (
+       "encoding/binary"
+       "io"
+)
+
+// Deprecated. Use PackWithOptions.
+func PackWithOrder(w io.Writer, data interface{}, order binary.ByteOrder) error {
+       return PackWithOptions(w, data, &Options{Order: order})
+}
+
+// Deprecated. Use UnpackWithOptions.
+func UnpackWithOrder(r io.Reader, data interface{}, order binary.ByteOrder) error {
+       return UnpackWithOptions(r, data, &Options{Order: order})
+}
diff --git a/vendor/github.com/lunixbochs/struc/packable_test.go b/vendor/github.com/lunixbochs/struc/packable_test.go
new file mode 100644 (file)
index 0000000..ec2bed9
--- /dev/null
@@ -0,0 +1,123 @@
+package struc
+
+import (
+       "bytes"
+       "fmt"
+       "testing"
+)
+
+var packableReference = []byte{
+       1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 8,
+       9, 10, 11, 12, 13, 14, 15, 16,
+       0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24,
+}
+
+func TestPackable(t *testing.T) {
+       var (
+               buf bytes.Buffer
+
+               i8  int8   = 1
+               i16 int16  = 2
+               i32 int32  = 3
+               i64 int64  = 4
+               u8  uint8  = 5
+               u16 uint16 = 6
+               u32 uint32 = 7
+               u64 uint64 = 8
+
+               u8a  = [8]uint8{9, 10, 11, 12, 13, 14, 15, 16}
+               u16a = [8]uint16{17, 18, 19, 20, 21, 22, 23, 24}
+       )
+       // pack tests
+       if err := Pack(&buf, i8); err != nil {
+               t.Fatal(err)
+       }
+       if err := Pack(&buf, i16); err != nil {
+               t.Fatal(err)
+       }
+       if err := Pack(&buf, i32); err != nil {
+               t.Fatal(err)
+       }
+       if err := Pack(&buf, i64); err != nil {
+               t.Fatal(err)
+       }
+       if err := Pack(&buf, u8); err != nil {
+               t.Fatal(err)
+       }
+       if err := Pack(&buf, u16); err != nil {
+               t.Fatal(err)
+       }
+       if err := Pack(&buf, u32); err != nil {
+               t.Fatal(err)
+       }
+       if err := Pack(&buf, u64); err != nil {
+               t.Fatal(err)
+       }
+       if err := Pack(&buf, u8a[:]); err != nil {
+               t.Fatal(err)
+       }
+       if err := Pack(&buf, u16a[:]); err != nil {
+               t.Fatal(err)
+       }
+       if !bytes.Equal(buf.Bytes(), packableReference) {
+               fmt.Println(buf.Bytes())
+               fmt.Println(packableReference)
+               t.Fatal("Packable Pack() did not match reference.")
+       }
+       // unpack tests
+       i8 = 0
+       i16 = 0
+       i32 = 0
+       i64 = 0
+       u8 = 0
+       u16 = 0
+       u32 = 0
+       u64 = 0
+       if err := Unpack(&buf, &i8); err != nil {
+               t.Fatal(err)
+       }
+       if err := Unpack(&buf, &i16); err != nil {
+               t.Fatal(err)
+       }
+       if err := Unpack(&buf, &i32); err != nil {
+               t.Fatal(err)
+       }
+       if err := Unpack(&buf, &i64); err != nil {
+               t.Fatal(err)
+       }
+       if err := Unpack(&buf, &u8); err != nil {
+               t.Fatal(err)
+       }
+       if err := Unpack(&buf, &u16); err != nil {
+               t.Fatal(err)
+       }
+       if err := Unpack(&buf, &u32); err != nil {
+               t.Fatal(err)
+       }
+       if err := Unpack(&buf, &u64); err != nil {
+               t.Fatal(err)
+       }
+       if err := Unpack(&buf, u8a[:]); err != nil {
+               t.Fatal(err)
+       }
+       if err := Unpack(&buf, u16a[:]); err != nil {
+               t.Fatal(err)
+       }
+       // unpack checks
+       if i8 != 1 || i16 != 2 || i32 != 3 || i64 != 4 {
+               t.Fatal("Signed integer unpack failed.")
+       }
+       if u8 != 5 || u16 != 6 || u32 != 7 || u64 != 8 {
+               t.Fatal("Unsigned integer unpack failed.")
+       }
+       for i := 0; i < 8; i++ {
+               if u8a[i] != uint8(i+9) {
+                       t.Fatal("uint8 array unpack failed.")
+               }
+       }
+       for i := 0; i < 8; i++ {
+               if u16a[i] != uint16(i+17) {
+                       t.Fatal("uint16 array unpack failed.")
+               }
+       }
+}
diff --git a/vendor/github.com/lunixbochs/struc/packer.go b/vendor/github.com/lunixbochs/struc/packer.go
new file mode 100644 (file)
index 0000000..a3a91a2
--- /dev/null
@@ -0,0 +1,13 @@
+package struc
+
+import (
+       "io"
+       "reflect"
+)
+
+type Packer interface {
+       Pack(buf []byte, val reflect.Value, options *Options) (int, error)
+       Unpack(r io.Reader, val reflect.Value, options *Options) error
+       Sizeof(val reflect.Value, options *Options) int
+       String() string
+}
diff --git a/vendor/github.com/lunixbochs/struc/parse.go b/vendor/github.com/lunixbochs/struc/parse.go
new file mode 100644 (file)
index 0000000..5a30d53
--- /dev/null
@@ -0,0 +1,217 @@
+package struc
+
+import (
+       "encoding/binary"
+       "errors"
+       "fmt"
+       "reflect"
+       "regexp"
+       "strconv"
+       "strings"
+       "sync"
+)
+
+// struc:"int32,big,sizeof=Data"
+
+var tagWordsRe = regexp.MustCompile(`(\[|\b)[^"]+\b+$`)
+
+type strucTag struct {
+       Type   string
+       Order  binary.ByteOrder
+       Sizeof string
+}
+
+func parseStrucTag(tag reflect.StructTag) *strucTag {
+       t := &strucTag{
+               Order: binary.BigEndian,
+       }
+       tagStr := tag.Get("struc")
+       if tagStr == "" {
+               // someone's going to typo this (I already did once)
+               // sorry if you made a module actually using this tag
+               // and you're mad at me now
+               tagStr = tag.Get("struct")
+       }
+       for _, s := range strings.Split(tagStr, ",") {
+               if strings.HasPrefix(s, "sizeof=") {
+                       tmp := strings.SplitN(s, "=", 2)
+                       t.Sizeof = tmp[1]
+               } else if s == "big" {
+                       t.Order = binary.BigEndian
+               } else if s == "little" {
+                       t.Order = binary.LittleEndian
+               } else {
+                       t.Type = s
+               }
+       }
+       return t
+}
+
+var typeLenRe = regexp.MustCompile(`^\[(\d*)\]`)
+
+func parseField(f reflect.StructField) (fd *Field, err error) {
+       tag := parseStrucTag(f.Tag)
+       var ok bool
+       fd = &Field{
+               Name:  f.Name,
+               Len:   1,
+               Order: tag.Order,
+               Slice: false,
+               kind:  f.Type.Kind(),
+       }
+       switch fd.kind {
+       case reflect.Array:
+               fd.Slice = true
+               fd.Array = true
+               fd.Len = f.Type.Len()
+               fd.kind = f.Type.Elem().Kind()
+       case reflect.Slice:
+               fd.Slice = true
+               fd.Len = -1
+               fd.kind = f.Type.Elem().Kind()
+       case reflect.Ptr:
+               fd.Ptr = true
+               fd.kind = f.Type.Elem().Kind()
+       }
+       // check for custom types
+       tmp := reflect.New(f.Type)
+       if _, ok := tmp.Interface().(Custom); ok {
+               fd.Type = CustomType
+               return
+       }
+       var defTypeOk bool
+       fd.defType, defTypeOk = reflectTypeMap[fd.kind]
+       // find a type in the struct tag
+       pureType := typeLenRe.ReplaceAllLiteralString(tag.Type, "")
+       if fd.Type, ok = typeLookup[pureType]; ok {
+               fd.Len = 1
+               match := typeLenRe.FindAllStringSubmatch(tag.Type, -1)
+               if len(match) > 0 && len(match[0]) > 1 {
+                       fd.Slice = true
+                       first := match[0][1]
+                       // Field.Len = -1 indicates a []slice
+                       if first == "" {
+                               fd.Len = -1
+                       } else {
+                               fd.Len, err = strconv.Atoi(first)
+                       }
+               }
+               return
+       }
+       // the user didn't specify a type
+       switch f.Type {
+       case reflect.TypeOf(Size_t(0)):
+               fd.Type = SizeType
+       case reflect.TypeOf(Off_t(0)):
+               fd.Type = OffType
+       default:
+               if defTypeOk {
+                       fd.Type = fd.defType
+               } else {
+                       err = errors.New("struc: Could not find field type.")
+               }
+       }
+       return
+}
+
+func parseFieldsLocked(v reflect.Value) (Fields, error) {
+       // we need to repeat this logic because parseFields() below can't be recursively called due to locking
+       for v.Kind() == reflect.Ptr {
+               v = v.Elem()
+       }
+       t := v.Type()
+       if v.NumField() < 1 {
+               return nil, errors.New("struc: Struct has no fields.")
+       }
+       sizeofMap := make(map[string][]int)
+       fields := make(Fields, 0, v.NumField())
+       for i := 0; i < t.NumField(); i++ {
+               field := t.Field(i)
+               f, err := parseField(field)
+               if err != nil {
+                       return nil, err
+               }
+               f.CanSet = v.Field(i).CanSet()
+               if !f.CanSet {
+                       continue
+               }
+               f.Index = i
+               tag := parseStrucTag(field.Tag)
+               if tag.Sizeof != "" {
+                       target, ok := t.FieldByName(tag.Sizeof)
+                       if !ok {
+                               return nil, fmt.Errorf("struc: `sizeof=%s` field does not exist", tag.Sizeof)
+                       }
+                       f.Sizeof = target.Index
+                       sizeofMap[tag.Sizeof] = field.Index
+               }
+               if sizefrom, ok := sizeofMap[field.Name]; ok {
+                       f.Sizefrom = sizefrom
+               }
+               if f.Len == -1 && f.Sizefrom == nil {
+                       return nil, fmt.Errorf("struc: field `%s` is a slice with no length or sizeof field", field.Name)
+               }
+               // recurse into nested structs
+               // TODO: handle loops (probably by indirecting the []Field and putting pointer in cache)
+               if f.Type == Struct {
+                       typ := field.Type
+                       if f.Ptr {
+                               typ = typ.Elem()
+                       }
+                       if f.Slice {
+                               typ = typ.Elem()
+                       }
+                       f.Fields, err = parseFieldsLocked(reflect.New(typ))
+                       if err != nil {
+                               return nil, err
+                       }
+               }
+               fields = append(fields, f)
+       }
+       return fields, nil
+}
+
+var fieldCache = make(map[reflect.Type]Fields)
+var fieldCacheLock sync.RWMutex
+var parseLock sync.Mutex
+
+func fieldCacheLookup(t reflect.Type) Fields {
+       fieldCacheLock.RLock()
+       defer fieldCacheLock.RUnlock()
+       if cached, ok := fieldCache[t]; ok {
+               return cached
+       }
+       return nil
+}
+
+func parseFields(v reflect.Value) (Fields, error) {
+       for v.Kind() == reflect.Ptr {
+               v = v.Elem()
+       }
+       t := v.Type()
+
+       // fast path: hopefully the field parsing is already cached
+       if cached := fieldCacheLookup(t); cached != nil {
+               return cached, nil
+       }
+
+       // hold a global lock so multiple goroutines can't parse (the same) fields at once
+       parseLock.Lock()
+       defer parseLock.Unlock()
+
+       // check cache a second time, in case parseLock was just released by
+       // another thread who filled the cache for us
+       if cached := fieldCacheLookup(t); cached != nil {
+               return cached, nil
+       }
+
+       // no luck, time to parse and fill the cache ourselves
+       fields, err := parseFieldsLocked(v)
+       if err != nil {
+               return nil, err
+       }
+       fieldCacheLock.Lock()
+       fieldCache[t] = fields
+       fieldCacheLock.Unlock()
+       return fields, nil
+}
diff --git a/vendor/github.com/lunixbochs/struc/parse_test.go b/vendor/github.com/lunixbochs/struc/parse_test.go
new file mode 100644 (file)
index 0000000..861fdd1
--- /dev/null
@@ -0,0 +1,62 @@
+package struc
+
+import (
+       "bytes"
+       "reflect"
+       "testing"
+)
+
+func parseTest(data interface{}) error {
+       _, err := parseFields(reflect.ValueOf(data))
+       return err
+}
+
+type empty struct{}
+
+func TestEmptyStruc(t *testing.T) {
+       if err := parseTest(&empty{}); err == nil {
+               t.Fatal("failed to error on empty struct")
+       }
+}
+
+type chanStruct struct {
+       Test chan int
+}
+
+func TestChanError(t *testing.T) {
+       if err := parseTest(&chanStruct{}); err == nil {
+               // TODO: should probably ignore channel fields
+               t.Fatal("failed to error on struct containing channel")
+       }
+}
+
+type badSizeof struct {
+       Size int `struc:"sizeof=Bad"`
+}
+
+func TestBadSizeof(t *testing.T) {
+       if err := parseTest(&badSizeof{}); err == nil {
+               t.Fatal("failed to error on missing Sizeof target")
+       }
+}
+
+type missingSize struct {
+       Test []byte
+}
+
+func TestMissingSize(t *testing.T) {
+       if err := parseTest(&missingSize{}); err == nil {
+               t.Fatal("failed to error on missing field size")
+       }
+}
+
+type badNested struct {
+       Empty empty
+}
+
+func TestNestedParseError(t *testing.T) {
+       var buf bytes.Buffer
+       if err := Pack(&buf, &badNested{}); err == nil {
+               t.Fatal("failed to error on bad nested struct")
+       }
+}
diff --git a/vendor/github.com/lunixbochs/struc/struc.go b/vendor/github.com/lunixbochs/struc/struc.go
new file mode 100644 (file)
index 0000000..3d85fe3
--- /dev/null
@@ -0,0 +1,117 @@
+package struc
+
+import (
+       "encoding/binary"
+       "fmt"
+       "io"
+       "reflect"
+)
+
+type Options struct {
+       ByteAlign int
+       PtrSize   int
+       Order     binary.ByteOrder
+}
+
+func (o *Options) Validate() error {
+       if o.PtrSize == 0 {
+               o.PtrSize = 32
+       } else {
+               switch o.PtrSize {
+               case 8, 16, 32, 64:
+               default:
+                       return fmt.Errorf("Invalid Options.PtrSize: %d. Must be in (8, 16, 32, 64)", o.PtrSize)
+               }
+       }
+       return nil
+}
+
+var emptyOptions = &Options{}
+
+func prep(data interface{}) (reflect.Value, Packer, error) {
+       value := reflect.ValueOf(data)
+       for value.Kind() == reflect.Ptr {
+               next := value.Elem().Kind()
+               if next == reflect.Struct || next == reflect.Ptr {
+                       value = value.Elem()
+               } else {
+                       break
+               }
+       }
+       switch value.Kind() {
+       case reflect.Struct:
+               fields, err := parseFields(value)
+               return value, fields, err
+       default:
+               if !value.IsValid() {
+                       return reflect.Value{}, nil, fmt.Errorf("Invalid reflect.Value for %+v", data)
+               }
+               if c, ok := data.(Custom); ok {
+                       return value, customFallback{c}, nil
+               }
+               return value, binaryFallback(value), nil
+       }
+}
+
+func Pack(w io.Writer, data interface{}) error {
+       return PackWithOptions(w, data, nil)
+}
+
+func PackWithOptions(w io.Writer, data interface{}, options *Options) error {
+       if options == nil {
+               options = emptyOptions
+       }
+       if err := options.Validate(); err != nil {
+               return err
+       }
+       val, packer, err := prep(data)
+       if err != nil {
+               return err
+       }
+       if val.Type().Kind() == reflect.String {
+               val = val.Convert(reflect.TypeOf([]byte{}))
+       }
+       size := packer.Sizeof(val, options)
+       buf := make([]byte, size)
+       if _, err := packer.Pack(buf, val, options); err != nil {
+               return err
+       }
+       _, err = w.Write(buf)
+       return err
+}
+
+func Unpack(r io.Reader, data interface{}) error {
+       return UnpackWithOptions(r, data, nil)
+}
+
+func UnpackWithOptions(r io.Reader, data interface{}, options *Options) error {
+       if options == nil {
+               options = emptyOptions
+       }
+       if err := options.Validate(); err != nil {
+               return err
+       }
+       val, packer, err := prep(data)
+       if err != nil {
+               return err
+       }
+       return packer.Unpack(r, val, options)
+}
+
+func Sizeof(data interface{}) (int, error) {
+       return SizeofWithOptions(data, nil)
+}
+
+func SizeofWithOptions(data interface{}, options *Options) (int, error) {
+       if options == nil {
+               options = emptyOptions
+       }
+       if err := options.Validate(); err != nil {
+               return 0, err
+       }
+       val, packer, err := prep(data)
+       if err != nil {
+               return 0, err
+       }
+       return packer.Sizeof(val, options), nil
+}
diff --git a/vendor/github.com/lunixbochs/struc/struc_test.go b/vendor/github.com/lunixbochs/struc/struc_test.go
new file mode 100644 (file)
index 0000000..939c3e3
--- /dev/null
@@ -0,0 +1,197 @@
+package struc
+
+import (
+       "bytes"
+       "encoding/binary"
+       "reflect"
+       "testing"
+)
+
+type Nested struct {
+       Test2 int `struc:"int8"`
+}
+
+type Example struct {
+       Pad    []byte `struc:"[5]pad"`        // 00 00 00 00 00
+       I8f    int    `struc:"int8"`          // 01
+       I16f   int    `struc:"int16"`         // 00 02
+       I32f   int    `struc:"int32"`         // 00 00 00 03
+       I64f   int    `struc:"int64"`         // 00 00 00 00 00 00 00 04
+       U8f    int    `struc:"uint8,little"`  // 05
+       U16f   int    `struc:"uint16,little"` // 06 00
+       U32f   int    `struc:"uint32,little"` // 07 00 00 00
+       U64f   int    `struc:"uint64,little"` // 08 00 00 00 00 00 00 00
+       Boolf  int    `struc:"bool"`          // 01
+       Byte4f []byte `struc:"[4]byte"`       // "abcd"
+
+       I8     int8    // 09
+       I16    int16   // 00 0a
+       I32    int32   // 00 00 00 0b
+       I64    int64   // 00 00 00 00 00 00 00 0c
+       U8     uint8   `struc:"little"` // 0d
+       U16    uint16  `struc:"little"` // 0e 00
+       U32    uint32  `struc:"little"` // 0f 00 00 00
+       U64    uint64  `struc:"little"` // 10 00 00 00 00 00 00 00
+       BoolT  bool    // 01
+       BoolF  bool    // 00
+       Byte4  [4]byte // "efgh"
+       Float1 float32 // 41 a0 00 00
+       Float2 float64 // 41 35 00 00 00 00 00 00
+
+       Size int    `struc:"sizeof=Str,little"` // 0a 00 00 00
+       Str  string `struc:"[]byte"`            // "ijklmnopqr"
+       Strb string `struc:"[4]byte"`           // "stuv"
+
+       Size2 int    `struc:"uint8,sizeof=Str2"` // 04
+       Str2  string // "1234"
+
+       Size3 int    `struc:"uint8,sizeof=Bstr"` // 04
+       Bstr  []byte // "5678"
+
+       Nested  Nested  // 00 00 00 01
+       NestedP *Nested // 00 00 00 02
+       TestP64 *int    `struc:"int64"` // 00 00 00 05
+
+       NestedSize int      `struc:"sizeof=NestedA"` // 00 00 00 02
+       NestedA    []Nested // [00 00 00 03, 00 00 00 04]
+
+       CustomTypeSize    Int3   `struc:"sizeof=CustomTypeSizeArr"` // 00 00 00 04
+       CustomTypeSizeArr []byte // "ABCD"
+}
+
+var five = 5
+
+var reference = &Example{
+       nil,
+       1, 2, 3, 4, 5, 6, 7, 8, 0, []byte{'a', 'b', 'c', 'd'},
+       9, 10, 11, 12, 13, 14, 15, 16, true, false, [4]byte{'e', 'f', 'g', 'h'},
+       20, 21,
+       10, "ijklmnopqr", "stuv",
+       4, "1234",
+       4, []byte("5678"),
+       Nested{1}, &Nested{2}, &five,
+       6, []Nested{{3}, {4}, {5}, {6}, {7}, {8}},
+       Int3(4), []byte("ABCD"),
+}
+
+var referenceBytes = []byte{
+       0, 0, 0, 0, 0, // pad(5)
+       1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, // fake int8-int64(1-4)
+       5, 6, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, // fake little-endian uint8-uint64(5-8)
+       0,                  // fake bool(0)
+       'a', 'b', 'c', 'd', // fake [4]byte
+
+       9, 0, 10, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, // real int8-int64(9-12)
+       13, 14, 0, 15, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, // real little-endian uint8-uint64(13-16)
+       1, 0, // real bool(1), bool(0)
+       'e', 'f', 'g', 'h', // real [4]byte
+       65, 160, 0, 0, // real float32(20)
+       64, 53, 0, 0, 0, 0, 0, 0, // real float64(21)
+
+       10, 0, 0, 0, // little-endian int32(10) sizeof=Str
+       'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', // Str
+       's', 't', 'u', 'v', // fake string([4]byte)
+       04, '1', '2', '3', '4', // real string
+       04, '5', '6', '7', '8', // fake []byte(string)
+
+       1, 2, // Nested{1}, Nested{2}
+       0, 0, 0, 0, 0, 0, 0, 5, // &five
+
+       0, 0, 0, 6, // int32(6)
+       3, 4, 5, 6, 7, 8, // [Nested{3}, ...Nested{8}]
+
+       0, 0, 4, 'A', 'B', 'C', 'D', // Int3(4), []byte("ABCD")
+}
+
+func TestCodec(t *testing.T) {
+       var buf bytes.Buffer
+       if err := Pack(&buf, reference); err != nil {
+               t.Fatal(err)
+       }
+       out := &Example{}
+       if err := Unpack(&buf, out); err != nil {
+               t.Fatal(err)
+       }
+       if !reflect.DeepEqual(reference, out) {
+               t.Fatal("encode/decode failed")
+       }
+}
+
+func TestEncode(t *testing.T) {
+       var buf bytes.Buffer
+       if err := Pack(&buf, reference); err != nil {
+               t.Fatal(err)
+       }
+       if !bytes.Equal(buf.Bytes(), referenceBytes) {
+               t.Fatal("encode failed")
+       }
+}
+
+func TestDecode(t *testing.T) {
+       buf := bytes.NewReader(referenceBytes)
+       out := &Example{}
+       if err := Unpack(buf, out); err != nil {
+               t.Fatal(err)
+       }
+       if !reflect.DeepEqual(reference, out) {
+               t.Fatal("decode failed")
+       }
+}
+
+func TestSizeof(t *testing.T) {
+       size, err := Sizeof(reference)
+       if err != nil {
+               t.Fatal(err)
+       }
+       if size != len(referenceBytes) {
+               t.Fatal("sizeof failed")
+       }
+}
+
+type ExampleEndian struct {
+       T int `struc:"int16,big"`
+}
+
+func TestEndianSwap(t *testing.T) {
+       var buf bytes.Buffer
+       big := &ExampleEndian{1}
+       if err := PackWithOrder(&buf, big, binary.BigEndian); err != nil {
+               t.Fatal(err)
+       }
+       little := &ExampleEndian{}
+       if err := UnpackWithOrder(&buf, little, binary.LittleEndian); err != nil {
+               t.Fatal(err)
+       }
+       if little.T != 256 {
+               t.Fatal("big -> little conversion failed")
+       }
+}
+
+func TestNilValue(t *testing.T) {
+       var buf bytes.Buffer
+       if err := Pack(&buf, nil); err == nil {
+               t.Fatal("failed throw error for bad struct value")
+       }
+       if err := Unpack(&buf, nil); err == nil {
+               t.Fatal("failed throw error for bad struct value")
+       }
+       if _, err := Sizeof(nil); err == nil {
+               t.Fatal("failed to throw error for bad struct value")
+       }
+}
+
+type sliceUnderrun struct {
+       Str string   `struc:"[10]byte"`
+       Arr []uint16 `struc:"[10]uint16"`
+}
+
+func TestSliceUnderrun(t *testing.T) {
+       var buf bytes.Buffer
+       v := sliceUnderrun{
+               Str: "foo",
+               Arr: []uint16{1, 2, 3},
+       }
+       if err := Pack(&buf, &v); err != nil {
+               t.Fatal(err)
+       }
+}
diff --git a/vendor/github.com/lunixbochs/struc/types.go b/vendor/github.com/lunixbochs/struc/types.go
new file mode 100644 (file)
index 0000000..6ca97f4
--- /dev/null
@@ -0,0 +1,136 @@
+package struc
+
+import (
+       "fmt"
+       "reflect"
+)
+
+type Type int
+
+const (
+       Invalid Type = iota
+       Pad
+       Bool
+       Int
+       Int8
+       Uint8
+       Int16
+       Uint16
+       Int32
+       Uint32
+       Int64
+       Uint64
+       Float32
+       Float64
+       String
+       Struct
+       Ptr
+
+       SizeType
+       OffType
+       CustomType
+)
+
+func (t Type) Resolve(options *Options) Type {
+       switch t {
+       case OffType:
+               switch options.PtrSize {
+               case 8:
+                       return Int8
+               case 16:
+                       return Int16
+               case 32:
+                       return Int32
+               case 64:
+                       return Int64
+               default:
+                       panic(fmt.Sprintf("unsupported ptr bits: %d", options.PtrSize))
+               }
+       case SizeType:
+               switch options.PtrSize {
+               case 8:
+                       return Uint8
+               case 16:
+                       return Uint16
+               case 32:
+                       return Uint32
+               case 64:
+                       return Uint64
+               default:
+                       panic(fmt.Sprintf("unsupported ptr bits: %d", options.PtrSize))
+               }
+       }
+       return t
+}
+
+func (t Type) String() string {
+       return typeNames[t]
+}
+
+func (t Type) Size() int {
+       switch t {
+       case SizeType, OffType:
+               panic("Size_t/Off_t types must be converted to another type using options.PtrSize")
+       case Pad, String, Int8, Uint8, Bool:
+               return 1
+       case Int16, Uint16:
+               return 2
+       case Int32, Uint32, Float32:
+               return 4
+       case Int64, Uint64, Float64:
+               return 8
+       default:
+               panic("Cannot resolve size of type:" + t.String())
+       }
+}
+
+var typeLookup = map[string]Type{
+       "pad":     Pad,
+       "bool":    Bool,
+       "byte":    Uint8,
+       "int8":    Int8,
+       "uint8":   Uint8,
+       "int16":   Int16,
+       "uint16":  Uint16,
+       "int32":   Int32,
+       "uint32":  Uint32,
+       "int64":   Int64,
+       "uint64":  Uint64,
+       "float32": Float32,
+       "float64": Float64,
+
+       "size_t": SizeType,
+       "off_t":  OffType,
+}
+
+var typeNames = map[Type]string{
+       CustomType: "Custom",
+}
+
+func init() {
+       for name, enum := range typeLookup {
+               typeNames[enum] = name
+       }
+}
+
+type Size_t uint64
+type Off_t int64
+
+var reflectTypeMap = map[reflect.Kind]Type{
+       reflect.Bool:    Bool,
+       reflect.Int8:    Int8,
+       reflect.Int16:   Int16,
+       reflect.Int:     Int32,
+       reflect.Int32:   Int32,
+       reflect.Int64:   Int64,
+       reflect.Uint8:   Uint8,
+       reflect.Uint16:  Uint16,
+       reflect.Uint:    Uint32,
+       reflect.Uint32:  Uint32,
+       reflect.Uint64:  Uint64,
+       reflect.Float32: Float32,
+       reflect.Float64: Float64,
+       reflect.String:  String,
+       reflect.Struct:  Struct,
+       reflect.Ptr:     Ptr,
+}
diff --git a/vendor/github.com/lunixbochs/struc/types_test.go b/vendor/github.com/lunixbochs/struc/types_test.go
new file mode 100644 (file)
index 0000000..3b33e8f
--- /dev/null
@@ -0,0 +1,53 @@
+package struc
+
+import (
+       "bytes"
+       "testing"
+)
+
+func TestBadType(t *testing.T) {
+       defer func() { recover() }()
+       Type(-1).Size()
+       t.Fatal("failed to panic for invalid Type.Size()")
+}
+
+func TestTypeString(t *testing.T) {
+       if Pad.String() != "pad" {
+               t.Fatal("type string representation failed")
+       }
+}
+
+type sizeOffTest struct {
+       Size Size_t
+       Off  Off_t
+}
+
+func TestSizeOffTypes(t *testing.T) {
+       bits := []int{8, 16, 32, 64}
+       var buf bytes.Buffer
+       test := &sizeOffTest{1, 2}
+       for _, b := range bits {
+               if err := PackWithOptions(&buf, test, &Options{PtrSize: b}); err != nil {
+                       t.Fatal(err)
+               }
+       }
+       reference := []byte{
+               1, 2,
+               0, 1, 0, 2,
+               0, 0, 0, 1, 0, 0, 0, 2,
+               0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2,
+       }
+       if !bytes.Equal(reference, buf.Bytes()) {
+               t.Errorf("reference != bytes: %v", reference, buf.Bytes())
+       }
+       reader := bytes.NewReader(buf.Bytes())
+       for _, b := range bits {
+               out := &sizeOffTest{}
+               if err := UnpackWithOptions(reader, out, &Options{PtrSize: b}); err != nil {
+                       t.Fatal(err)
+               }
+               if out.Size != 1 || out.Off != 2 {
+                       t.Errorf("Size_t/Off_t mismatch: {%d, %d}\n%v", out.Size, out.Off, buf.Bytes())
+               }
+       }
+}
diff --git a/vendor/github.com/onsi/gomega/.gitignore b/vendor/github.com/onsi/gomega/.gitignore
new file mode 100644 (file)
index 0000000..720c13c
--- /dev/null
@@ -0,0 +1,5 @@
+.DS_Store
+*.test
+.
+.idea
+gomega.iml
diff --git a/vendor/github.com/onsi/gomega/.travis.yml b/vendor/github.com/onsi/gomega/.travis.yml
new file mode 100644 (file)
index 0000000..9bc3fd0
--- /dev/null
@@ -0,0 +1,11 @@
+language: go
+go:
+  - 1.6
+  - 1.7
+
+install:
+  - go get -v ./...
+  - go get github.com/onsi/ginkgo
+  - go install github.com/onsi/ginkgo/ginkgo
+
+script: $HOME/gopath/bin/ginkgo -r --randomizeAllSpecs --failOnPending --randomizeSuites --race
diff --git a/vendor/github.com/onsi/gomega/CHANGELOG.md b/vendor/github.com/onsi/gomega/CHANGELOG.md
new file mode 100644 (file)
index 0000000..0c5ede5
--- /dev/null
@@ -0,0 +1,70 @@
+## HEAD
+
+Improvements:
+
+- Added `BeSent` which attempts to send a value down a channel and fails if the attempt blocks.  Can be paired with `Eventually` to safely send a value down a channel with a timeout.
+- `Ω`, `Expect`, `Eventually`, and `Consistently` now immediately `panic` if there is no registered fail handler.  This is always a mistake that can hide failing tests.
+- `Receive()` no longer errors when passed a closed channel, it's perfectly fine to attempt to read from a closed channel so Ω(c).Should(Receive()) always fails and Ω(c).ShoudlNot(Receive()) always passes with a closed channel.
+- Added `HavePrefix` and `HaveSuffix` matchers.
+- `ghttp` can now handle concurrent requests.
+- Added `Succeed` which allows one to write `Ω(MyFunction()).Should(Succeed())`.
+- Improved `ghttp`'s behavior around failing assertions and panics:
+    - If a registered handler makes a failing assertion `ghttp` will return `500`.
+    - If a registered handler panics, `ghttp` will return `500` *and* fail the test.  This is new behavior that may cause existing code to break.  This code is almost certainly incorrect and creating a false positive.
+- `ghttp` servers can take an `io.Writer`.  `ghttp` will write a line to the writer when each request arrives.
+- Added `WithTransform` matcher to allow munging input data before feeding into the relevant matcher
+- Added boolean `And`, `Or`, and `Not` matchers to allow creating composite matchers
+
+Bug Fixes:
+- gexec: `session.Wait` now uses `EventuallyWithOffset` to get the right line number in the failure.
+- `ContainElement` no longer bails if a passed-in matcher errors.
+
+## 1.0 (8/2/2014)
+
+No changes. Dropping "beta" from the version number.
+
+## 1.0.0-beta (7/8/2014)
+Breaking Changes:
+
+- Changed OmegaMatcher interface.  Instead of having `Match` return failure messages, two new methods `FailureMessage` and `NegatedFailureMessage` are called instead.
+- Moved and renamed OmegaFailHandler to types.GomegaFailHandler and OmegaMatcher to types.GomegaMatcher.  Any references to OmegaMatcher in any custom matchers will need to be changed to point to types.GomegaMatcher
+
+New Test-Support Features:
+
+- `ghttp`: supports testing http clients
+    - Provides a flexible fake http server
+    - Provides a collection of chainable http handlers that perform assertions.
+- `gbytes`: supports making ordered assertions against streams of data
+    - Provides a `gbytes.Buffer`
+    - Provides a `Say` matcher to perform ordered assertions against output data
+- `gexec`: supports testing external processes
+    - Provides support for building Go binaries
+    - Wraps and starts `exec.Cmd` commands
+    - Makes it easy to assert against stdout and stderr
+    - Makes it easy to send signals and wait for processes to exit
+    - Provides an `Exit` matcher to assert against exit code.
+
+DSL Changes:
+
+- `Eventually` and `Consistently` can accept `time.Duration` interval and polling inputs.
+- The default timeouts for `Eventually` and `Consistently` are now configurable.
+
+New Matchers:
+
+- `ConsistOf`: order-independent assertion against the elements of an array/slice or keys of a map.
+- `BeTemporally`: like `BeNumerically` but for `time.Time`
+- `HaveKeyWithValue`: asserts a map has a given key with the given value.
+
+Updated Matchers:
+
+- `Receive` matcher can take a matcher as an argument and passes only if the channel under test receives an objet that satisfies the passed-in matcher.
+- Matchers that implement `MatchMayChangeInTheFuture(actual interface{}) bool` can inform `Eventually` and/or `Consistently` when a match has no chance of changing status in the future.  For example, `Receive` returns `false` when a channel is closed.
+
+Misc:
+
+- Start using semantic versioning
+- Start maintaining changelog
+
+Major refactor:
+
+- Pull out Gomega's internal to `internal`
diff --git a/vendor/github.com/onsi/gomega/LICENSE b/vendor/github.com/onsi/gomega/LICENSE
new file mode 100644 (file)
index 0000000..9415ee7
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2013-2014 Onsi Fakhouri
+
+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/onsi/gomega/README.md b/vendor/github.com/onsi/gomega/README.md
new file mode 100644 (file)
index 0000000..9714f67
--- /dev/null
@@ -0,0 +1,21 @@
+![Gomega: Ginkgo's Preferred Matcher Library](http://onsi.github.io/gomega/images/gomega.png)
+
+[![Build Status](https://travis-ci.org/onsi/gomega.svg)](https://travis-ci.org/onsi/gomega)
+
+Jump straight to the [docs](http://onsi.github.io/gomega/) to learn about Gomega, including a list of [all available matchers](http://onsi.github.io/gomega/#provided-matchers).
+
+To discuss Gomega and get updates, join the [google group](https://groups.google.com/d/forum/ginkgo-and-gomega).
+
+## [Ginkgo](http://github.com/onsi/ginkgo): a BDD Testing Framework for Golang
+
+Learn more about Ginkgo [here](http://onsi.github.io/ginkgo/)
+
+## Community Matchers
+
+A collection of community matchers is available on the [wiki](https://github.com/onsi/gomega/wiki).
+
+## License
+
+Gomega is MIT-Licensed
+
+The `ConsistOf` matcher uses [goraph](https://github.com/amitkgupta/goraph) which is embedded in the source to simplify distribution.  goraph has an MIT license.
diff --git a/vendor/github.com/onsi/gomega/format/format.go b/vendor/github.com/onsi/gomega/format/format.go
new file mode 100644 (file)
index 0000000..a9d2651
--- /dev/null
@@ -0,0 +1,384 @@
+/*
+Gomega's format package pretty-prints objects.  It explores input objects recursively and generates formatted, indented output with type information.
+*/
+package format
+
+import (
+       "fmt"
+       "reflect"
+       "strconv"
+       "strings"
+       "time"
+)
+
+// Use MaxDepth to set the maximum recursion depth when printing deeply nested objects
+var MaxDepth = uint(10)
+
+/*
+By default, all objects (even those that implement fmt.Stringer and fmt.GoStringer) are recursively inspected to generate output.
+
+Set UseStringerRepresentation = true to use GoString (for fmt.GoStringers) or String (for fmt.Stringer) instead.
+
+Note that GoString and String don't always have all the information you need to understand why a test failed!
+*/
+var UseStringerRepresentation = false
+
+/*
+Print the content of context objects. By default it will be suppressed.
+
+Set PrintContextObjects = true to enable printing of the context internals.
+*/
+var PrintContextObjects = false
+
+// Ctx interface defined here to keep backwards compatability with go < 1.7
+// It matches the context.Context interface
+type Ctx interface {
+       Deadline() (deadline time.Time, ok bool)
+       Done() <-chan struct{}
+       Err() error
+       Value(key interface{}) interface{}
+}
+
+var contextType = reflect.TypeOf((*Ctx)(nil)).Elem()
+var timeType = reflect.TypeOf(time.Time{})
+
+//The default indentation string emitted by the format package
+var Indent = "    "
+
+var longFormThreshold = 20
+
+/*
+Generates a formatted matcher success/failure message of the form:
+
+       Expected
+               <pretty printed actual>
+       <message>
+               <pretty printed expected>
+
+If expected is omited, then the message looks like:
+
+       Expected
+               <pretty printed actual>
+       <message>
+*/
+func Message(actual interface{}, message string, expected ...interface{}) string {
+       if len(expected) == 0 {
+               return fmt.Sprintf("Expected\n%s\n%s", Object(actual, 1), message)
+       } else {
+               return fmt.Sprintf("Expected\n%s\n%s\n%s", Object(actual, 1), message, Object(expected[0], 1))
+       }
+}
+
+/*
+
+Generates a nicely formatted matcher success / failure message
+
+Much like Message(...), but it attempts to pretty print diffs in strings
+
+Expected
+    <string>: "...aaaaabaaaaa..."
+to equal               |
+    <string>: "...aaaaazaaaaa..."
+
+*/
+
+func MessageWithDiff(actual, message, expected string) string {
+       if len(actual) >= truncateThreshold && len(expected) >= truncateThreshold {
+               diffPoint := findFirstMismatch(actual, expected)
+               formattedActual := truncateAndFormat(actual, diffPoint)
+               formattedExpected := truncateAndFormat(expected, diffPoint)
+
+               spacesBeforeFormattedMismatch := findFirstMismatch(formattedActual, formattedExpected)
+
+               tabLength := 4
+               spaceFromMessageToActual := tabLength + len("<string>: ") - len(message)
+               padding := strings.Repeat(" ", spaceFromMessageToActual+spacesBeforeFormattedMismatch) + "|"
+               return Message(formattedActual, message+padding, formattedExpected)
+       }
+       return Message(actual, message, expected)
+}
+
+func truncateAndFormat(str string, index int) string {
+       leftPadding := `...`
+       rightPadding := `...`
+
+       start := index - charactersAroundMismatchToInclude
+       if start < 0 {
+               start = 0
+               leftPadding = ""
+       }
+
+       // slice index must include the mis-matched character
+       lengthOfMismatchedCharacter := 1
+       end := index + charactersAroundMismatchToInclude + lengthOfMismatchedCharacter
+       if end > len(str) {
+               end = len(str)
+               rightPadding = ""
+
+       }
+       return fmt.Sprintf("\"%s\"", leftPadding+str[start:end]+rightPadding)
+}
+
+func findFirstMismatch(a, b string) int {
+       aSlice := strings.Split(a, "")
+       bSlice := strings.Split(b, "")
+
+       for index, str := range aSlice {
+               if index > len(b) - 1 {
+                       return index
+               }
+               if str != bSlice[index] {
+                       return index
+               }
+       }
+
+       if len(b) > len(a) {
+               return len(a) + 1
+       }
+
+       return 0
+}
+
+const (
+       truncateThreshold                 = 50
+       charactersAroundMismatchToInclude = 5
+)
+
+/*
+Pretty prints the passed in object at the passed in indentation level.
+
+Object recurses into deeply nested objects emitting pretty-printed representations of their components.
+
+Modify format.MaxDepth to control how deep the recursion is allowed to go
+Set format.UseStringerRepresentation to true to return object.GoString() or object.String() when available instead of
+recursing into the object.
+
+Set PrintContextObjects to true to print the content of objects implementing context.Context
+*/
+func Object(object interface{}, indentation uint) string {
+       indent := strings.Repeat(Indent, int(indentation))
+       value := reflect.ValueOf(object)
+       return fmt.Sprintf("%s<%s>: %s", indent, formatType(object), formatValue(value, indentation))
+}
+
+/*
+IndentString takes a string and indents each line by the specified amount.
+*/
+func IndentString(s string, indentation uint) string {
+       components := strings.Split(s, "\n")
+       result := ""
+       indent := strings.Repeat(Indent, int(indentation))
+       for i, component := range components {
+               result += indent + component
+               if i < len(components)-1 {
+                       result += "\n"
+               }
+       }
+
+       return result
+}
+
+func formatType(object interface{}) string {
+       t := reflect.TypeOf(object)
+       if t == nil {
+               return "nil"
+       }
+       switch t.Kind() {
+       case reflect.Chan:
+               v := reflect.ValueOf(object)
+               return fmt.Sprintf("%T | len:%d, cap:%d", object, v.Len(), v.Cap())
+       case reflect.Ptr:
+               return fmt.Sprintf("%T | %p", object, object)
+       case reflect.Slice:
+               v := reflect.ValueOf(object)
+               return fmt.Sprintf("%T | len:%d, cap:%d", object, v.Len(), v.Cap())
+       case reflect.Map:
+               v := reflect.ValueOf(object)
+               return fmt.Sprintf("%T | len:%d", object, v.Len())
+       default:
+               return fmt.Sprintf("%T", object)
+       }
+}
+
+func formatValue(value reflect.Value, indentation uint) string {
+       if indentation > MaxDepth {
+               return "..."
+       }
+
+       if isNilValue(value) {
+               return "nil"
+       }
+
+       if UseStringerRepresentation {
+               if value.CanInterface() {
+                       obj := value.Interface()
+                       switch x := obj.(type) {
+                       case fmt.GoStringer:
+                               return x.GoString()
+                       case fmt.Stringer:
+                               return x.String()
+                       }
+               }
+       }
+
+       if !PrintContextObjects {
+               if value.Type().Implements(contextType) && indentation > 1 {
+                       return "<suppressed context>"
+               }
+       }
+
+       switch value.Kind() {
+       case reflect.Bool:
+               return fmt.Sprintf("%v", value.Bool())
+       case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+               return fmt.Sprintf("%v", value.Int())
+       case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+               return fmt.Sprintf("%v", value.Uint())
+       case reflect.Uintptr:
+               return fmt.Sprintf("0x%x", value.Uint())
+       case reflect.Float32, reflect.Float64:
+               return fmt.Sprintf("%v", value.Float())
+       case reflect.Complex64, reflect.Complex128:
+               return fmt.Sprintf("%v", value.Complex())
+       case reflect.Chan:
+               return fmt.Sprintf("0x%x", value.Pointer())
+       case reflect.Func:
+               return fmt.Sprintf("0x%x", value.Pointer())
+       case reflect.Ptr:
+               return formatValue(value.Elem(), indentation)
+       case reflect.Slice:
+               return formatSlice(value, indentation)
+       case reflect.String:
+               return formatString(value.String(), indentation)
+       case reflect.Array:
+               return formatSlice(value, indentation)
+       case reflect.Map:
+               return formatMap(value, indentation)
+       case reflect.Struct:
+               if value.Type() == timeType && value.CanInterface() {
+                       t, _ := value.Interface().(time.Time)
+                       return t.Format(time.RFC3339Nano)
+               }
+               return formatStruct(value, indentation)
+       case reflect.Interface:
+               return formatValue(value.Elem(), indentation)
+       default:
+               if value.CanInterface() {
+                       return fmt.Sprintf("%#v", value.Interface())
+               } else {
+                       return fmt.Sprintf("%#v", value)
+               }
+       }
+}
+
+func formatString(object interface{}, indentation uint) string {
+       if indentation == 1 {
+               s := fmt.Sprintf("%s", object)
+               components := strings.Split(s, "\n")
+               result := ""
+               for i, component := range components {
+                       if i == 0 {
+                               result += component
+                       } else {
+                               result += Indent + component
+                       }
+                       if i < len(components)-1 {
+                               result += "\n"
+                       }
+               }
+
+               return fmt.Sprintf("%s", result)
+       } else {
+               return fmt.Sprintf("%q", object)
+       }
+}
+
+func formatSlice(v reflect.Value, indentation uint) string {
+       if v.Kind() == reflect.Slice && v.Type().Elem().Kind() == reflect.Uint8 && isPrintableString(string(v.Bytes())) {
+               return formatString(v.Bytes(), indentation)
+       }
+
+       l := v.Len()
+       result := make([]string, l)
+       longest := 0
+       for i := 0; i < l; i++ {
+               result[i] = formatValue(v.Index(i), indentation+1)
+               if len(result[i]) > longest {
+                       longest = len(result[i])
+               }
+       }
+
+       if longest > longFormThreshold {
+               indenter := strings.Repeat(Indent, int(indentation))
+               return fmt.Sprintf("[\n%s%s,\n%s]", indenter+Indent, strings.Join(result, ",\n"+indenter+Indent), indenter)
+       } else {
+               return fmt.Sprintf("[%s]", strings.Join(result, ", "))
+       }
+}
+
+func formatMap(v reflect.Value, indentation uint) string {
+       l := v.Len()
+       result := make([]string, l)
+
+       longest := 0
+       for i, key := range v.MapKeys() {
+               value := v.MapIndex(key)
+               result[i] = fmt.Sprintf("%s: %s", formatValue(key, indentation+1), formatValue(value, indentation+1))
+               if len(result[i]) > longest {
+                       longest = len(result[i])
+               }
+       }
+
+       if longest > longFormThreshold {
+               indenter := strings.Repeat(Indent, int(indentation))
+               return fmt.Sprintf("{\n%s%s,\n%s}", indenter+Indent, strings.Join(result, ",\n"+indenter+Indent), indenter)
+       } else {
+               return fmt.Sprintf("{%s}", strings.Join(result, ", "))
+       }
+}
+
+func formatStruct(v reflect.Value, indentation uint) string {
+       t := v.Type()
+
+       l := v.NumField()
+       result := []string{}
+       longest := 0
+       for i := 0; i < l; i++ {
+               structField := t.Field(i)
+               fieldEntry := v.Field(i)
+               representation := fmt.Sprintf("%s: %s", structField.Name, formatValue(fieldEntry, indentation+1))
+               result = append(result, representation)
+               if len(representation) > longest {
+                       longest = len(representation)
+               }
+       }
+       if longest > longFormThreshold {
+               indenter := strings.Repeat(Indent, int(indentation))
+               return fmt.Sprintf("{\n%s%s,\n%s}", indenter+Indent, strings.Join(result, ",\n"+indenter+Indent), indenter)
+       } else {
+               return fmt.Sprintf("{%s}", strings.Join(result, ", "))
+       }
+}
+
+func isNilValue(a reflect.Value) bool {
+       switch a.Kind() {
+       case reflect.Invalid:
+               return true
+       case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
+               return a.IsNil()
+       }
+
+       return false
+}
+
+/*
+Returns true when the string is entirely made of printable runes, false otherwise.
+*/
+func isPrintableString(str string) bool {
+       for _, runeValue := range str {
+               if !strconv.IsPrint(runeValue) {
+                       return false
+               }
+       }
+       return true
+}
diff --git a/vendor/github.com/onsi/gomega/format/format_suite_test.go b/vendor/github.com/onsi/gomega/format/format_suite_test.go
new file mode 100644 (file)
index 0000000..8e65a95
--- /dev/null
@@ -0,0 +1,13 @@
+package format_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+
+       "testing"
+)
+
+func TestFormat(t *testing.T) {
+       RegisterFailHandler(Fail)
+       RunSpecs(t, "Format Suite")
+}
diff --git a/vendor/github.com/onsi/gomega/format/format_test.go b/vendor/github.com/onsi/gomega/format/format_test.go
new file mode 100644 (file)
index 0000000..a1a9031
--- /dev/null
@@ -0,0 +1,590 @@
+package format_test
+
+import (
+       "fmt"
+       "strings"
+       "time"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/format"
+       "github.com/onsi/gomega/types"
+)
+
+//recursive struct
+
+type StringAlias string
+type ByteAlias []byte
+type IntAlias int
+
+type AStruct struct {
+       Exported string
+}
+
+type SimpleStruct struct {
+       Name        string
+       Enumeration int
+       Veritas     bool
+       Data        []byte
+       secret      uint32
+}
+
+type ComplexStruct struct {
+       Strings      []string
+       SimpleThings []*SimpleStruct
+       DataMaps     map[int]ByteAlias
+}
+
+type SecretiveStruct struct {
+       boolValue      bool
+       intValue       int
+       uintValue      uint
+       uintptrValue   uintptr
+       floatValue     float32
+       complexValue   complex64
+       chanValue      chan bool
+       funcValue      func()
+       pointerValue   *int
+       sliceValue     []string
+       byteSliceValue []byte
+       stringValue    string
+       arrValue       [3]int
+       byteArrValue   [3]byte
+       mapValue       map[string]int
+       structValue    AStruct
+       interfaceValue interface{}
+}
+
+type GoStringer struct {
+}
+
+func (g GoStringer) GoString() string {
+       return "go-string"
+}
+
+func (g GoStringer) String() string {
+       return "string"
+}
+
+type Stringer struct {
+}
+
+func (g Stringer) String() string {
+       return "string"
+}
+
+type ctx struct {
+}
+
+func (c *ctx) Deadline() (deadline time.Time, ok bool) {
+       return time.Time{}, false
+}
+
+func (c *ctx) Done() <-chan struct{} {
+       return nil
+}
+
+func (c *ctx) Err() error {
+       return nil
+}
+
+func (c *ctx) Value(key interface{}) interface{} {
+       return nil
+}
+
+var _ = Describe("Format", func() {
+       match := func(typeRepresentation string, valueRepresentation string, args ...interface{}) types.GomegaMatcher {
+               if len(args) > 0 {
+                       valueRepresentation = fmt.Sprintf(valueRepresentation, args...)
+               }
+               return Equal(fmt.Sprintf("%s<%s>: %s", Indent, typeRepresentation, valueRepresentation))
+       }
+
+       matchRegexp := func(typeRepresentation string, valueRepresentation string, args ...interface{}) types.GomegaMatcher {
+               if len(args) > 0 {
+                       valueRepresentation = fmt.Sprintf(valueRepresentation, args...)
+               }
+               return MatchRegexp(fmt.Sprintf("%s<%s>: %s", Indent, typeRepresentation, valueRepresentation))
+       }
+
+       hashMatchingRegexp := func(entries ...string) string {
+               entriesSwitch := "(" + strings.Join(entries, "|") + ")"
+               arr := make([]string, len(entries))
+               for i := range arr {
+                       arr[i] = entriesSwitch
+               }
+               return "{" + strings.Join(arr, ", ") + "}"
+       }
+
+       Describe("Message", func() {
+               Context("with only an actual value", func() {
+                       It("should print out an indented formatted representation of the value and the message", func() {
+                               Ω(Message(3, "to be three.")).Should(Equal("Expected\n    <int>: 3\nto be three."))
+                       })
+               })
+
+               Context("with an actual and an expected value", func() {
+                       It("should print out an indented formatted representatino of both values, and the message", func() {
+                               Ω(Message(3, "to equal", 4)).Should(Equal("Expected\n    <int>: 3\nto equal\n    <int>: 4"))
+                       })
+               })
+       })
+
+       Describe("MessageWithDiff", func() {
+               It("shows the exact point where two long strings differ", func() {
+                       stringWithB := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+                       stringWithZ := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+                       Ω(MessageWithDiff(stringWithB, "to equal", stringWithZ)).Should(Equal(expectedLongStringFailureMessage))
+               })
+
+               It("truncates the start of long strings that differ only at their end", func() {
+                       stringWithB := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"
+                       stringWithZ := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz"
+
+                       Ω(MessageWithDiff(stringWithB, "to equal", stringWithZ)).Should(Equal(expectedTruncatedStartStringFailureMessage))
+               })
+
+               It("truncates the start of long strings that differ only in length", func() {
+                       smallString := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+                       largeString := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+                       Ω(MessageWithDiff(largeString, "to equal", smallString)).Should(Equal(expectedTruncatedStartSizeFailureMessage))
+                       Ω(MessageWithDiff(smallString, "to equal", largeString)).Should(Equal(expectedTruncatedStartSizeSwappedFailureMessage))
+               })
+
+               It("truncates the end of long strings that differ only at their start", func() {
+                       stringWithB := "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+                       stringWithZ := "zaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+                       Ω(MessageWithDiff(stringWithB, "to equal", stringWithZ)).Should(Equal(expectedTruncatedEndStringFailureMessage))
+               })
+       })
+
+       Describe("IndentString", func() {
+               It("should indent the string", func() {
+                       Ω(IndentString("foo\n  bar\nbaz", 2)).Should(Equal("        foo\n          bar\n        baz"))
+               })
+       })
+
+       Describe("Object", func() {
+               Describe("formatting boolean values", func() {
+                       It("should give the type and format values correctly", func() {
+                               Ω(Object(true, 1)).Should(match("bool", "true"))
+                               Ω(Object(false, 1)).Should(match("bool", "false"))
+                       })
+               })
+
+               Describe("formatting numbers", func() {
+                       It("should give the type and format values correctly", func() {
+                               Ω(Object(int(3), 1)).Should(match("int", "3"))
+                               Ω(Object(int8(3), 1)).Should(match("int8", "3"))
+                               Ω(Object(int16(3), 1)).Should(match("int16", "3"))
+                               Ω(Object(int32(3), 1)).Should(match("int32", "3"))
+                               Ω(Object(int64(3), 1)).Should(match("int64", "3"))
+
+                               Ω(Object(uint(3), 1)).Should(match("uint", "3"))
+                               Ω(Object(uint8(3), 1)).Should(match("uint8", "3"))
+                               Ω(Object(uint16(3), 1)).Should(match("uint16", "3"))
+                               Ω(Object(uint32(3), 1)).Should(match("uint32", "3"))
+                               Ω(Object(uint64(3), 1)).Should(match("uint64", "3"))
+                       })
+
+                       It("should handle uintptr differently", func() {
+                               Ω(Object(uintptr(3), 1)).Should(match("uintptr", "0x3"))
+                       })
+               })
+
+               Describe("formatting channels", func() {
+                       It("should give the type and format values correctly", func() {
+                               c := make(chan<- bool, 3)
+                               c <- true
+                               c <- false
+                               Ω(Object(c, 1)).Should(match("chan<- bool | len:2, cap:3", "%v", c))
+                       })
+               })
+
+               Describe("formatting strings", func() {
+                       It("should give the type and format values correctly", func() {
+                               s := "a\nb\nc"
+                               Ω(Object(s, 1)).Should(match("string", `a
+    b
+    c`))
+                       })
+               })
+
+               Describe("formatting []byte slices", func() {
+                       Context("when the slice is made of printable bytes", func() {
+                               It("should present it as string", func() {
+                                       b := []byte("a b c")
+                                       Ω(Object(b, 1)).Should(matchRegexp(`\[\]uint8 \| len:5, cap:\d+`, `a b c`))
+                               })
+                       })
+                       Context("when the slice contains non-printable bytes", func() {
+                               It("should present it as slice", func() {
+                                       b := []byte("a b c\n\x01\x02\x03\xff\x1bH")
+                                       Ω(Object(b, 1)).Should(matchRegexp(`\[\]uint8 \| len:12, cap:\d+`, `\[97, 32, 98, 32, 99, 10, 1, 2, 3, 255, 27, 72\]`))
+                               })
+                       })
+               })
+
+               Describe("formatting functions", func() {
+                       It("should give the type and format values correctly", func() {
+                               f := func(a string, b []int) ([]byte, error) {
+                                       return []byte("abc"), nil
+                               }
+                               Ω(Object(f, 1)).Should(match("func(string, []int) ([]uint8, error)", "%v", f))
+                       })
+               })
+
+               Describe("formatting pointers", func() {
+                       It("should give the type and dereference the value to format it correctly", func() {
+                               a := 3
+                               Ω(Object(&a, 1)).Should(match(fmt.Sprintf("*int | %p", &a), "3"))
+                       })
+
+                       Context("when there are pointers to pointers...", func() {
+                               It("should recursively deference the pointer until it gets to a value", func() {
+                                       a := 3
+                                       var b *int
+                                       var c **int
+                                       var d ***int
+                                       b = &a
+                                       c = &b
+                                       d = &c
+
+                                       Ω(Object(d, 1)).Should(match(fmt.Sprintf("***int | %p", d), "3"))
+                               })
+                       })
+
+                       Context("when the pointer points to nil", func() {
+                               It("should say nil and not explode", func() {
+                                       var a *AStruct
+                                       Ω(Object(a, 1)).Should(match("*format_test.AStruct | 0x0", "nil"))
+                               })
+                       })
+               })
+
+               Describe("formatting arrays", func() {
+                       It("should give the type and format values correctly", func() {
+                               w := [3]string{"Jed Bartlet", "Toby Ziegler", "CJ Cregg"}
+                               Ω(Object(w, 1)).Should(match("[3]string", `["Jed Bartlet", "Toby Ziegler", "CJ Cregg"]`))
+                       })
+
+                       Context("with byte arrays", func() {
+                               It("should give the type and format values correctly", func() {
+                                       w := [3]byte{17, 28, 19}
+                                       Ω(Object(w, 1)).Should(match("[3]uint8", `[17, 28, 19]`))
+                               })
+                       })
+               })
+
+               Describe("formatting slices", func() {
+                       It("should include the length and capacity in the type information", func() {
+                               s := make([]bool, 3, 4)
+                               Ω(Object(s, 1)).Should(match("[]bool | len:3, cap:4", "[false, false, false]"))
+                       })
+
+                       Context("when the slice contains long entries", func() {
+                               It("should format the entries with newlines", func() {
+                                       w := []string{"Josiah Edward Bartlet", "Toby Ziegler", "CJ Cregg"}
+                                       expected := `[
+        "Josiah Edward Bartlet",
+        "Toby Ziegler",
+        "CJ Cregg",
+    ]`
+                                       Ω(Object(w, 1)).Should(match("[]string | len:3, cap:3", expected))
+                               })
+                       })
+               })
+
+               Describe("formatting maps", func() {
+                       It("should include the length in the type information", func() {
+                               m := make(map[int]bool, 5)
+                               m[3] = true
+                               m[4] = false
+                               Ω(Object(m, 1)).Should(matchRegexp(`map\[int\]bool \| len:2`, hashMatchingRegexp("3: true", "4: false")))
+                       })
+
+                       Context("when the slice contains long entries", func() {
+                               It("should format the entries with newlines", func() {
+                                       m := map[string][]byte{}
+                                       m["Josiah Edward Bartlet"] = []byte("Martin Sheen")
+                                       m["Toby Ziegler"] = []byte("Richard Schiff")
+                                       m["CJ Cregg"] = []byte("Allison Janney")
+                                       expected := `{
+        ("Josiah Edward Bartlet": "Martin Sheen"|"Toby Ziegler": "Richard Schiff"|"CJ Cregg": "Allison Janney"),
+        ("Josiah Edward Bartlet": "Martin Sheen"|"Toby Ziegler": "Richard Schiff"|"CJ Cregg": "Allison Janney"),
+        ("Josiah Edward Bartlet": "Martin Sheen"|"Toby Ziegler": "Richard Schiff"|"CJ Cregg": "Allison Janney"),
+    }`
+                                       Ω(Object(m, 1)).Should(matchRegexp(`map\[string\]\[\]uint8 \| len:3`, expected))
+                               })
+                       })
+               })
+
+               Describe("formatting structs", func() {
+                       It("should include the struct name and the field names", func() {
+                               s := SimpleStruct{
+                                       Name:        "Oswald",
+                                       Enumeration: 17,
+                                       Veritas:     true,
+                                       Data:        []byte("datum"),
+                                       secret:      1983,
+                               }
+
+                               Ω(Object(s, 1)).Should(match("format_test.SimpleStruct", `{Name: "Oswald", Enumeration: 17, Veritas: true, Data: "datum", secret: 1983}`))
+                       })
+
+                       Context("when the struct contains long entries", func() {
+                               It("should format the entries with new lines", func() {
+                                       s := &SimpleStruct{
+                                               Name:        "Mithrandir Gandalf Greyhame",
+                                               Enumeration: 2021,
+                                               Veritas:     true,
+                                               Data:        []byte("wizard"),
+                                               secret:      3,
+                                       }
+
+                                       Ω(Object(s, 1)).Should(match(fmt.Sprintf("*format_test.SimpleStruct | %p", s), `{
+        Name: "Mithrandir Gandalf Greyhame",
+        Enumeration: 2021,
+        Veritas: true,
+        Data: "wizard",
+        secret: 3,
+    }`))
+                               })
+                       })
+               })
+
+               Describe("formatting nil values", func() {
+                       It("should print out nil", func() {
+                               Ω(Object(nil, 1)).Should(match("nil", "nil"))
+                               var typedNil *AStruct
+                               Ω(Object(typedNil, 1)).Should(match("*format_test.AStruct | 0x0", "nil"))
+                               var c chan<- bool
+                               Ω(Object(c, 1)).Should(match("chan<- bool | len:0, cap:0", "nil"))
+                               var s []string
+                               Ω(Object(s, 1)).Should(match("[]string | len:0, cap:0", "nil"))
+                               var m map[string]bool
+                               Ω(Object(m, 1)).Should(match("map[string]bool | len:0", "nil"))
+                       })
+               })
+
+               Describe("formatting aliased types", func() {
+                       It("should print out the correct alias type", func() {
+                               Ω(Object(StringAlias("alias"), 1)).Should(match("format_test.StringAlias", `alias`))
+                               Ω(Object(ByteAlias("alias"), 1)).Should(matchRegexp(`format_test\.ByteAlias \| len:5, cap:\d+`, `alias`))
+                               Ω(Object(IntAlias(3), 1)).Should(match("format_test.IntAlias", "3"))
+                       })
+               })
+
+               Describe("handling nested things", func() {
+                       It("should produce a correctly nested representation", func() {
+                               s := ComplexStruct{
+                                       Strings: []string{"lots", "of", "short", "strings"},
+                                       SimpleThings: []*SimpleStruct{
+                                               {"short", 7, true, []byte("succinct"), 17},
+                                               {"something longer", 427, true, []byte("designed to wrap around nicely"), 30},
+                                       },
+                                       DataMaps: map[int]ByteAlias{
+                                               17:   ByteAlias("some substantially longer chunks of data"),
+                                               1138: ByteAlias("that should make things wrap"),
+                                       },
+                               }
+                               expected := `{
+        Strings: \["lots", "of", "short", "strings"\],
+        SimpleThings: \[
+            {Name: "short", Enumeration: 7, Veritas: true, Data: "succinct", secret: 17},
+            {
+                Name: "something longer",
+                Enumeration: 427,
+                Veritas: true,
+                Data: "designed to wrap around nicely",
+                secret: 30,
+            },
+        \],
+        DataMaps: {
+            (17: "some substantially longer chunks of data"|1138: "that should make things wrap"),
+            (17: "some substantially longer chunks of data"|1138: "that should make things wrap"),
+        },
+    }`
+                               Ω(Object(s, 1)).Should(matchRegexp(`format_test\.ComplexStruct`, expected))
+                       })
+               })
+
+               Describe("formatting times", func() {
+                       It("should format time as RFC3339", func() {
+                               t := time.Date(2016, 10, 31, 9, 57, 23, 12345, time.UTC)
+                               Ω(Object(t, 1)).Should(match("time.Time", `2016-10-31T09:57:23.000012345Z`))
+                       })
+               })
+       })
+
+       Describe("Handling unexported fields in structs", func() {
+               It("should handle all the various types correctly", func() {
+                       a := int(5)
+                       s := SecretiveStruct{
+                               boolValue:      true,
+                               intValue:       3,
+                               uintValue:      4,
+                               uintptrValue:   5,
+                               floatValue:     6.0,
+                               complexValue:   complex(5.0, 3.0),
+                               chanValue:      make(chan bool, 2),
+                               funcValue:      func() {},
+                               pointerValue:   &a,
+                               sliceValue:     []string{"string", "slice"},
+                               byteSliceValue: []byte("bytes"),
+                               stringValue:    "a string",
+                               arrValue:       [3]int{11, 12, 13},
+                               byteArrValue:   [3]byte{17, 20, 32},
+                               mapValue:       map[string]int{"a key": 20, "b key": 30},
+                               structValue:    AStruct{"exported"},
+                               interfaceValue: map[string]int{"a key": 17},
+                       }
+
+                       expected := fmt.Sprintf(`{
+        boolValue: true,
+        intValue: 3,
+        uintValue: 4,
+        uintptrValue: 0x5,
+        floatValue: 6,
+        complexValue: \(5\+3i\),
+        chanValue: %p,
+        funcValue: %p,
+        pointerValue: 5,
+        sliceValue: \["string", "slice"\],
+        byteSliceValue: "bytes",
+        stringValue: "a string",
+        arrValue: \[11, 12, 13\],
+        byteArrValue: \[17, 20, 32\],
+        mapValue: %s,
+        structValue: {Exported: "exported"},
+        interfaceValue: {"a key": 17},
+    }`, s.chanValue, s.funcValue, hashMatchingRegexp(`"a key": 20`, `"b key": 30`))
+
+                       Ω(Object(s, 1)).Should(matchRegexp(`format_test\.SecretiveStruct`, expected))
+               })
+       })
+
+       Describe("Handling interfaces", func() {
+               It("should unpack the interface", func() {
+                       outerHash := map[string]interface{}{}
+                       innerHash := map[string]int{}
+
+                       innerHash["inner"] = 3
+                       outerHash["integer"] = 2
+                       outerHash["map"] = innerHash
+
+                       expected := hashMatchingRegexp(`"integer": 2`, `"map": {"inner": 3}`)
+                       Ω(Object(outerHash, 1)).Should(matchRegexp(`map\[string\]interface {} \| len:2`, expected))
+               })
+       })
+
+       Describe("Handling recursive things", func() {
+               It("should not go crazy...", func() {
+                       m := map[string]interface{}{}
+                       m["integer"] = 2
+                       m["map"] = m
+                       Ω(Object(m, 1)).Should(ContainSubstring("..."))
+               })
+
+               It("really should not go crazy...", func() {
+                       type complexKey struct {
+                               Value map[interface{}]int
+                       }
+
+                       complexObject := complexKey{}
+                       complexObject.Value = make(map[interface{}]int)
+
+                       complexObject.Value[&complexObject] = 2
+                       Ω(Object(complexObject, 1)).Should(ContainSubstring("..."))
+               })
+       })
+
+       Describe("When instructed to use the Stringer representation", func() {
+               BeforeEach(func() {
+                       UseStringerRepresentation = true
+               })
+
+               AfterEach(func() {
+                       UseStringerRepresentation = false
+               })
+
+               Context("when passed a GoStringer", func() {
+                       It("should use what GoString() returns", func() {
+                               Ω(Object(GoStringer{}, 1)).Should(ContainSubstring("<format_test.GoStringer>: go-string"))
+                       })
+               })
+
+               Context("when passed a stringer", func() {
+                       It("should use what String() returns", func() {
+                               Ω(Object(Stringer{}, 1)).Should(ContainSubstring("<format_test.Stringer>: string"))
+                       })
+               })
+       })
+
+       Describe("Printing a context.Context field", func() {
+
+               type structWithContext struct {
+                       Context Ctx
+                       Value   string
+               }
+
+               context := ctx{}
+               objWithContext := structWithContext{Value: "some-value", Context: &context}
+
+               It("Suppresses the content by default", func() {
+                       Ω(Object(objWithContext, 1)).Should(ContainSubstring("<suppressed context>"))
+               })
+
+               It("Doesn't supress the context if it's the object being printed", func() {
+                       Ω(Object(context, 1)).ShouldNot(MatchRegexp("^.*<suppressed context>$"))
+               })
+
+               Context("PrintContextObjects is set", func() {
+                       BeforeEach(func() {
+                               PrintContextObjects = true
+                       })
+
+                       AfterEach(func() {
+                               PrintContextObjects = false
+                       })
+
+                       It("Prints the context", func() {
+                               Ω(Object(objWithContext, 1)).ShouldNot(ContainSubstring("<suppressed context>"))
+                       })
+               })
+       })
+})
+
+var expectedLongStringFailureMessage = strings.TrimSpace(`
+Expected
+    <string>: "...aaaaabaaaaa..."
+to equal               |
+    <string>: "...aaaaazaaaaa..."
+`)
+var expectedTruncatedEndStringFailureMessage = strings.TrimSpace(`
+Expected
+    <string>: "baaaaa..."
+to equal       |
+    <string>: "zaaaaa..."
+`)
+var expectedTruncatedStartStringFailureMessage = strings.TrimSpace(`
+Expected
+    <string>: "...aaaaab"
+to equal               |
+    <string>: "...aaaaaz"
+`)
+var expectedTruncatedStartSizeFailureMessage = strings.TrimSpace(`
+Expected
+    <string>: "...aaaaaa"
+to equal               |
+    <string>: "...aaaaa"
+`)
+var expectedTruncatedStartSizeSwappedFailureMessage = strings.TrimSpace(`
+Expected
+    <string>: "...aaaa"
+to equal              |
+    <string>: "...aaaaa"
+`)
diff --git a/vendor/github.com/onsi/gomega/gbytes/buffer.go b/vendor/github.com/onsi/gomega/gbytes/buffer.go
new file mode 100644 (file)
index 0000000..8775b86
--- /dev/null
@@ -0,0 +1,229 @@
+/*
+Package gbytes provides a buffer that supports incrementally detecting input.
+
+You use gbytes.Buffer with the gbytes.Say matcher.  When Say finds a match, it fastforwards the buffer's read cursor to the end of that match.
+
+Subsequent matches against the buffer will only operate against data that appears *after* the read cursor.
+
+The read cursor is an opaque implementation detail that you cannot access.  You should use the Say matcher to sift through the buffer.  You can always
+access the entire buffer's contents with Contents().
+
+*/
+package gbytes
+
+import (
+       "errors"
+       "fmt"
+       "io"
+       "regexp"
+       "sync"
+       "time"
+)
+
+/*
+gbytes.Buffer implements an io.Writer and can be used with the gbytes.Say matcher.
+
+You should only use a gbytes.Buffer in test code.  It stores all writes in an in-memory buffer - behavior that is inappropriate for production code!
+*/
+type Buffer struct {
+       contents     []byte
+       readCursor   uint64
+       lock         *sync.Mutex
+       detectCloser chan interface{}
+       closed       bool
+}
+
+/*
+NewBuffer returns a new gbytes.Buffer
+*/
+func NewBuffer() *Buffer {
+       return &Buffer{
+               lock: &sync.Mutex{},
+       }
+}
+
+/*
+BufferWithBytes returns a new gbytes.Buffer seeded with the passed in bytes
+*/
+func BufferWithBytes(bytes []byte) *Buffer {
+       return &Buffer{
+               lock:     &sync.Mutex{},
+               contents: bytes,
+       }
+}
+
+/*
+Write implements the io.Writer interface
+*/
+func (b *Buffer) Write(p []byte) (n int, err error) {
+       b.lock.Lock()
+       defer b.lock.Unlock()
+
+       if b.closed {
+               return 0, errors.New("attempt to write to closed buffer")
+       }
+
+       b.contents = append(b.contents, p...)
+       return len(p), nil
+}
+
+/*
+Read implements the io.Reader interface. It advances the
+cursor as it reads.
+
+Returns an error if called after Close.
+*/
+func (b *Buffer) Read(d []byte) (int, error) {
+       b.lock.Lock()
+       defer b.lock.Unlock()
+
+       if b.closed {
+               return 0, errors.New("attempt to read from closed buffer")
+       }
+
+       if uint64(len(b.contents)) <= b.readCursor {
+               return 0, io.EOF
+       }
+
+       n := copy(d, b.contents[b.readCursor:])
+       b.readCursor += uint64(n)
+
+       return n, nil
+}
+
+/*
+Close signifies that the buffer will no longer be written to
+*/
+func (b *Buffer) Close() error {
+       b.lock.Lock()
+       defer b.lock.Unlock()
+
+       b.closed = true
+
+       return nil
+}
+
+/*
+Closed returns true if the buffer has been closed
+*/
+func (b *Buffer) Closed() bool {
+       b.lock.Lock()
+       defer b.lock.Unlock()
+
+       return b.closed
+}
+
+/*
+Contents returns all data ever written to the buffer.
+*/
+func (b *Buffer) Contents() []byte {
+       b.lock.Lock()
+       defer b.lock.Unlock()
+
+       contents := make([]byte, len(b.contents))
+       copy(contents, b.contents)
+       return contents
+}
+
+/*
+Detect takes a regular expression and returns a channel.
+
+The channel will receive true the first time data matching the regular expression is written to the buffer.
+The channel is subsequently closed and the buffer's read-cursor is fast-forwarded to just after the matching region.
+
+You typically don't need to use Detect and should use the ghttp.Say matcher instead.  Detect is useful, however, in cases where your code must
+be branch and handle different outputs written to the buffer.
+
+For example, consider a buffer hooked up to the stdout of a client library.  You may (or may not, depending on state outside of your control) need to authenticate the client library.
+
+You could do something like:
+
+select {
+case <-buffer.Detect("You are not logged in"):
+       //log in
+case <-buffer.Detect("Success"):
+       //carry on
+case <-time.After(time.Second):
+       //welp
+}
+buffer.CancelDetects()
+
+You should always call CancelDetects after using Detect.  This will close any channels that have not detected and clean up the goroutines that were spawned to support them.
+
+Finally, you can pass detect a format string followed by variadic arguments.  This will construct the regexp using fmt.Sprintf.
+*/
+func (b *Buffer) Detect(desired string, args ...interface{}) chan bool {
+       formattedRegexp := desired
+       if len(args) > 0 {
+               formattedRegexp = fmt.Sprintf(desired, args...)
+       }
+       re := regexp.MustCompile(formattedRegexp)
+
+       b.lock.Lock()
+       defer b.lock.Unlock()
+
+       if b.detectCloser == nil {
+               b.detectCloser = make(chan interface{})
+       }
+
+       closer := b.detectCloser
+       response := make(chan bool)
+       go func() {
+               ticker := time.NewTicker(10 * time.Millisecond)
+               defer ticker.Stop()
+               defer close(response)
+               for {
+                       select {
+                       case <-ticker.C:
+                               b.lock.Lock()
+                               data, cursor := b.contents[b.readCursor:], b.readCursor
+                               loc := re.FindIndex(data)
+                               b.lock.Unlock()
+
+                               if loc != nil {
+                                       response <- true
+                                       b.lock.Lock()
+                                       newCursorPosition := cursor + uint64(loc[1])
+                                       if newCursorPosition >= b.readCursor {
+                                               b.readCursor = newCursorPosition
+                                       }
+                                       b.lock.Unlock()
+                                       return
+                               }
+                       case <-closer:
+                               return
+                       }
+               }
+       }()
+
+       return response
+}
+
+/*
+CancelDetects cancels any pending detects and cleans up their goroutines.  You should always call this when you're done with a set of Detect channels.
+*/
+func (b *Buffer) CancelDetects() {
+       b.lock.Lock()
+       defer b.lock.Unlock()
+
+       close(b.detectCloser)
+       b.detectCloser = nil
+}
+
+func (b *Buffer) didSay(re *regexp.Regexp) (bool, []byte) {
+       b.lock.Lock()
+       defer b.lock.Unlock()
+
+       unreadBytes := b.contents[b.readCursor:]
+       copyOfUnreadBytes := make([]byte, len(unreadBytes))
+       copy(copyOfUnreadBytes, unreadBytes)
+
+       loc := re.FindIndex(unreadBytes)
+
+       if loc != nil {
+               b.readCursor += uint64(loc[1])
+               return true, copyOfUnreadBytes
+       } else {
+               return false, copyOfUnreadBytes
+       }
+}
diff --git a/vendor/github.com/onsi/gomega/gbytes/buffer_test.go b/vendor/github.com/onsi/gomega/gbytes/buffer_test.go
new file mode 100644 (file)
index 0000000..b111138
--- /dev/null
@@ -0,0 +1,158 @@
+package gbytes_test
+
+import (
+       "io"
+       "time"
+
+       . "github.com/onsi/gomega/gbytes"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+var _ = Describe("Buffer", func() {
+       var buffer *Buffer
+
+       BeforeEach(func() {
+               buffer = NewBuffer()
+       })
+
+       Describe("dumping the entire contents of the buffer", func() {
+               It("should return everything that's been written", func() {
+                       buffer.Write([]byte("abc"))
+                       buffer.Write([]byte("def"))
+                       Ω(buffer.Contents()).Should(Equal([]byte("abcdef")))
+
+                       Ω(buffer).Should(Say("bcd"))
+                       Ω(buffer.Contents()).Should(Equal([]byte("abcdef")))
+               })
+       })
+
+       Describe("creating a buffer with bytes", func() {
+               It("should create the buffer with the cursor set to the beginning", func() {
+                       buffer := BufferWithBytes([]byte("abcdef"))
+                       Ω(buffer.Contents()).Should(Equal([]byte("abcdef")))
+                       Ω(buffer).Should(Say("abc"))
+                       Ω(buffer).ShouldNot(Say("abc"))
+                       Ω(buffer).Should(Say("def"))
+               })
+       })
+
+       Describe("reading from a buffer", func() {
+               It("should read the current contents of the buffer", func() {
+                       buffer := BufferWithBytes([]byte("abcde"))
+
+                       dest := make([]byte, 3)
+                       n, err := buffer.Read(dest)
+                       Ω(err).ShouldNot(HaveOccurred())
+                       Ω(n).Should(Equal(3))
+                       Ω(string(dest)).Should(Equal("abc"))
+
+                       dest = make([]byte, 3)
+                       n, err = buffer.Read(dest)
+                       Ω(err).ShouldNot(HaveOccurred())
+                       Ω(n).Should(Equal(2))
+                       Ω(string(dest[:n])).Should(Equal("de"))
+
+                       n, err = buffer.Read(dest)
+                       Ω(err).Should(Equal(io.EOF))
+                       Ω(n).Should(Equal(0))
+               })
+
+               Context("after the buffer has been closed", func() {
+                       It("returns an error", func() {
+                               buffer := BufferWithBytes([]byte("abcde"))
+
+                               buffer.Close()
+
+                               dest := make([]byte, 3)
+                               n, err := buffer.Read(dest)
+                               Ω(err).Should(HaveOccurred())
+                               Ω(n).Should(Equal(0))
+                       })
+               })
+       })
+
+       Describe("detecting regular expressions", func() {
+               It("should fire the appropriate channel when the passed in pattern matches, then close it", func(done Done) {
+                       go func() {
+                               time.Sleep(10 * time.Millisecond)
+                               buffer.Write([]byte("abcde"))
+                       }()
+
+                       A := buffer.Detect("%s", "a.c")
+                       B := buffer.Detect("def")
+
+                       var gotIt bool
+                       select {
+                       case gotIt = <-A:
+                       case <-B:
+                               Fail("should not have gotten here")
+                       }
+
+                       Ω(gotIt).Should(BeTrue())
+                       Eventually(A).Should(BeClosed())
+
+                       buffer.Write([]byte("f"))
+                       Eventually(B).Should(Receive())
+                       Eventually(B).Should(BeClosed())
+
+                       close(done)
+               })
+
+               It("should fast-forward the buffer upon detection", func(done Done) {
+                       buffer.Write([]byte("abcde"))
+                       <-buffer.Detect("abc")
+                       Ω(buffer).ShouldNot(Say("abc"))
+                       Ω(buffer).Should(Say("de"))
+                       close(done)
+               })
+
+               It("should only fast-forward the buffer when the channel is read, and only if doing so would not rewind it", func(done Done) {
+                       buffer.Write([]byte("abcde"))
+                       A := buffer.Detect("abc")
+                       time.Sleep(20 * time.Millisecond) //give the goroutine a chance to detect and write to the channel
+                       Ω(buffer).Should(Say("abcd"))
+                       <-A
+                       Ω(buffer).ShouldNot(Say("d"))
+                       Ω(buffer).Should(Say("e"))
+                       Eventually(A).Should(BeClosed())
+                       close(done)
+               })
+
+               It("should be possible to cancel a detection", func(done Done) {
+                       A := buffer.Detect("abc")
+                       B := buffer.Detect("def")
+                       buffer.CancelDetects()
+                       buffer.Write([]byte("abcdef"))
+                       Eventually(A).Should(BeClosed())
+                       Eventually(B).Should(BeClosed())
+
+                       Ω(buffer).Should(Say("bcde"))
+                       <-buffer.Detect("f")
+                       close(done)
+               })
+       })
+
+       Describe("closing the buffer", func() {
+               It("should error when further write attempts are made", func() {
+                       _, err := buffer.Write([]byte("abc"))
+                       Ω(err).ShouldNot(HaveOccurred())
+
+                       buffer.Close()
+
+                       _, err = buffer.Write([]byte("def"))
+                       Ω(err).Should(HaveOccurred())
+
+                       Ω(buffer.Contents()).Should(Equal([]byte("abc")))
+               })
+
+               It("should be closed", func() {
+                       Ω(buffer.Closed()).Should(BeFalse())
+
+                       buffer.Close()
+
+                       Ω(buffer.Closed()).Should(BeTrue())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go b/vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go
new file mode 100644 (file)
index 0000000..3a7dc06
--- /dev/null
@@ -0,0 +1,13 @@
+package gbytes_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+
+       "testing"
+)
+
+func TestGbytes(t *testing.T) {
+       RegisterFailHandler(Fail)
+       RunSpecs(t, "Gbytes Suite")
+}
diff --git a/vendor/github.com/onsi/gomega/gbytes/say_matcher.go b/vendor/github.com/onsi/gomega/gbytes/say_matcher.go
new file mode 100644 (file)
index 0000000..cbc266c
--- /dev/null
@@ -0,0 +1,105 @@
+package gbytes
+
+import (
+       "fmt"
+       "regexp"
+
+       "github.com/onsi/gomega/format"
+)
+
+//Objects satisfying the BufferProvider can be used with the Say matcher.
+type BufferProvider interface {
+       Buffer() *Buffer
+}
+
+/*
+Say is a Gomega matcher that operates on gbytes.Buffers:
+
+       Ω(buffer).Should(Say("something"))
+
+will succeed if the unread portion of the buffer matches the regular expression "something".
+
+When Say succeeds, it fast forwards the gbytes.Buffer's read cursor to just after the succesful match.
+Thus, subsequent calls to Say will only match against the unread portion of the buffer
+
+Say pairs very well with Eventually.  To assert that a buffer eventually receives data matching "[123]-star" within 3 seconds you can:
+
+       Eventually(buffer, 3).Should(Say("[123]-star"))
+
+Ditto with consistently.  To assert that a buffer does not receive data matching "never-see-this" for 1 second you can:
+
+       Consistently(buffer, 1).ShouldNot(Say("never-see-this"))
+
+In addition to bytes.Buffers, Say can operate on objects that implement the gbytes.BufferProvider interface.
+In such cases, Say simply operates on the *gbytes.Buffer returned by Buffer()
+
+If the buffer is closed, the Say matcher will tell Eventually to abort.
+*/
+func Say(expected string, args ...interface{}) *sayMatcher {
+       formattedRegexp := expected
+       if len(args) > 0 {
+               formattedRegexp = fmt.Sprintf(expected, args...)
+       }
+       return &sayMatcher{
+               re: regexp.MustCompile(formattedRegexp),
+       }
+}
+
+type sayMatcher struct {
+       re              *regexp.Regexp
+       receivedSayings []byte
+}
+
+func (m *sayMatcher) buffer(actual interface{}) (*Buffer, bool) {
+       var buffer *Buffer
+
+       switch x := actual.(type) {
+       case *Buffer:
+               buffer = x
+       case BufferProvider:
+               buffer = x.Buffer()
+       default:
+               return nil, false
+       }
+
+       return buffer, true
+}
+
+func (m *sayMatcher) Match(actual interface{}) (success bool, err error) {
+       buffer, ok := m.buffer(actual)
+       if !ok {
+               return false, fmt.Errorf("Say must be passed a *gbytes.Buffer or BufferProvider.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       didSay, sayings := buffer.didSay(m.re)
+       m.receivedSayings = sayings
+
+       return didSay, nil
+}
+
+func (m *sayMatcher) FailureMessage(actual interface{}) (message string) {
+       return fmt.Sprintf(
+               "Got stuck at:\n%s\nWaiting for:\n%s",
+               format.IndentString(string(m.receivedSayings), 1),
+               format.IndentString(m.re.String(), 1),
+       )
+}
+
+func (m *sayMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return fmt.Sprintf(
+               "Saw:\n%s\nWhich matches the unexpected:\n%s",
+               format.IndentString(string(m.receivedSayings), 1),
+               format.IndentString(m.re.String(), 1),
+       )
+}
+
+func (m *sayMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
+       switch x := actual.(type) {
+       case *Buffer:
+               return !x.Closed()
+       case BufferProvider:
+               return !x.Buffer().Closed()
+       default:
+               return true
+       }
+}
diff --git a/vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go b/vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go
new file mode 100644 (file)
index 0000000..63fb3b3
--- /dev/null
@@ -0,0 +1,163 @@
+package gbytes_test
+
+import (
+       . "github.com/onsi/gomega/gbytes"
+       "time"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+type speaker struct {
+       buffer *Buffer
+}
+
+func (s *speaker) Buffer() *Buffer {
+       return s.buffer
+}
+
+var _ = Describe("SayMatcher", func() {
+       var buffer *Buffer
+
+       BeforeEach(func() {
+               buffer = NewBuffer()
+               buffer.Write([]byte("abc"))
+       })
+
+       Context("when actual is not a gexec Buffer, or a BufferProvider", func() {
+               It("should error", func() {
+                       failures := InterceptGomegaFailures(func() {
+                               Ω("foo").Should(Say("foo"))
+                       })
+                       Ω(failures[0]).Should(ContainSubstring("*gbytes.Buffer"))
+               })
+       })
+
+       Context("when a match is found", func() {
+               It("should succeed", func() {
+                       Ω(buffer).Should(Say("abc"))
+               })
+
+               It("should support printf-like formatting", func() {
+                       Ω(buffer).Should(Say("a%sc", "b"))
+               })
+
+               It("should use a regular expression", func() {
+                       Ω(buffer).Should(Say("a.c"))
+               })
+
+               It("should fastforward the buffer", func() {
+                       buffer.Write([]byte("def"))
+                       Ω(buffer).Should(Say("abcd"))
+                       Ω(buffer).Should(Say("ef"))
+                       Ω(buffer).ShouldNot(Say("[a-z]"))
+               })
+       })
+
+       Context("when no match is found", func() {
+               It("should not error", func() {
+                       Ω(buffer).ShouldNot(Say("def"))
+               })
+
+               Context("when the buffer is closed", func() {
+                       BeforeEach(func() {
+                               buffer.Close()
+                       })
+
+                       It("should abort an eventually", func() {
+                               t := time.Now()
+                               failures := InterceptGomegaFailures(func() {
+                                       Eventually(buffer).Should(Say("def"))
+                               })
+                               Eventually(buffer).ShouldNot(Say("def"))
+                               Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
+                               Ω(failures).Should(HaveLen(1))
+
+                               t = time.Now()
+                               Eventually(buffer).Should(Say("abc"))
+                               Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
+                       })
+
+                       It("should abort a consistently", func() {
+                               t := time.Now()
+                               Consistently(buffer, 2.0).ShouldNot(Say("def"))
+                               Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
+                       })
+
+                       It("should not error with a synchronous matcher", func() {
+                               Ω(buffer).ShouldNot(Say("def"))
+                               Ω(buffer).Should(Say("abc"))
+                       })
+               })
+       })
+
+       Context("when a positive match fails", func() {
+               It("should report where it got stuck", func() {
+                       Ω(buffer).Should(Say("abc"))
+                       buffer.Write([]byte("def"))
+                       failures := InterceptGomegaFailures(func() {
+                               Ω(buffer).Should(Say("abc"))
+                       })
+                       Ω(failures[0]).Should(ContainSubstring("Got stuck at:"))
+                       Ω(failures[0]).Should(ContainSubstring("def"))
+               })
+       })
+
+       Context("when a negative match fails", func() {
+               It("should report where it got stuck", func() {
+                       failures := InterceptGomegaFailures(func() {
+                               Ω(buffer).ShouldNot(Say("abc"))
+                       })
+                       Ω(failures[0]).Should(ContainSubstring("Saw:"))
+                       Ω(failures[0]).Should(ContainSubstring("Which matches the unexpected:"))
+                       Ω(failures[0]).Should(ContainSubstring("abc"))
+               })
+       })
+
+       Context("when a match is not found", func() {
+               It("should not fastforward the buffer", func() {
+                       Ω(buffer).ShouldNot(Say("def"))
+                       Ω(buffer).Should(Say("abc"))
+               })
+       })
+
+       Context("a nice real-life example", func() {
+               It("should behave well", func() {
+                       Ω(buffer).Should(Say("abc"))
+                       go func() {
+                               time.Sleep(10 * time.Millisecond)
+                               buffer.Write([]byte("def"))
+                       }()
+                       Ω(buffer).ShouldNot(Say("def"))
+                       Eventually(buffer).Should(Say("def"))
+               })
+       })
+
+       Context("when actual is a BufferProvider", func() {
+               It("should use actual's buffer", func() {
+                       s := &speaker{
+                               buffer: NewBuffer(),
+                       }
+
+                       Ω(s).ShouldNot(Say("abc"))
+
+                       s.Buffer().Write([]byte("abc"))
+                       Ω(s).Should(Say("abc"))
+               })
+
+               It("should abort an eventually", func() {
+                       s := &speaker{
+                               buffer: NewBuffer(),
+                       }
+
+                       s.buffer.Close()
+
+                       t := time.Now()
+                       failures := InterceptGomegaFailures(func() {
+                               Eventually(s).Should(Say("def"))
+                       })
+                       Ω(failures).Should(HaveLen(1))
+                       Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go b/vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go
new file mode 100644 (file)
index 0000000..16091c2
--- /dev/null
@@ -0,0 +1,36 @@
+package main
+
+import (
+       "fmt"
+       "math/rand"
+       "os"
+       "strconv"
+       "time"
+)
+
+var outQuote = "We've done the impossible, and that makes us mighty."
+var errQuote = "Ah, curse your sudden but inevitable betrayal!"
+
+var randomQuotes = []string{
+       "Can we maybe vote on the whole murdering people issue?",
+       "I swear by my pretty floral bonnet, I will end you.",
+       "My work's illegal, but at least it's honest.",
+}
+
+func main() {
+       fmt.Fprintln(os.Stdout, outQuote)
+       fmt.Fprintln(os.Stderr, errQuote)
+
+       randomIndex := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(randomQuotes))
+
+       time.Sleep(100 * time.Millisecond)
+
+       fmt.Fprintln(os.Stdout, randomQuotes[randomIndex])
+
+       if len(os.Args) == 2 {
+               exitCode, _ := strconv.Atoi(os.Args[1])
+               os.Exit(exitCode)
+       } else {
+               os.Exit(randomIndex)
+       }
+}
diff --git a/vendor/github.com/onsi/gomega/gexec/build.go b/vendor/github.com/onsi/gomega/gexec/build.go
new file mode 100644 (file)
index 0000000..d11b2fd
--- /dev/null
@@ -0,0 +1,99 @@
+package gexec
+
+import (
+       "errors"
+       "fmt"
+       "io/ioutil"
+       "os"
+       "os/exec"
+       "path"
+       "path/filepath"
+       "runtime"
+       "sync"
+)
+
+var (
+       mu     sync.Mutex
+       tmpDir string
+)
+
+/*
+Build uses go build to compile the package at packagePath.  The resulting binary is saved off in a temporary directory.
+A path pointing to this binary is returned.
+
+Build uses the $GOPATH set in your environment.  It passes the variadic args on to `go build`.
+*/
+func Build(packagePath string, args ...string) (compiledPath string, err error) {
+       return doBuild(os.Getenv("GOPATH"), packagePath, nil, args...)
+}
+
+/*
+BuildWithEnvironment is identical to Build but allows you to specify env vars to be set at build time.
+*/
+func BuildWithEnvironment(packagePath string, env []string, args ...string) (compiledPath string, err error) {
+       return doBuild(os.Getenv("GOPATH"), packagePath, env, args...)
+}
+
+/*
+BuildIn is identical to Build but allows you to specify a custom $GOPATH (the first argument).
+*/
+func BuildIn(gopath string, packagePath string, args ...string) (compiledPath string, err error) {
+       return doBuild(gopath, packagePath, nil, args...)
+}
+
+func doBuild(gopath, packagePath string, env []string, args ...string) (compiledPath string, err error) {
+       tmpDir, err := temporaryDirectory()
+       if err != nil {
+               return "", err
+       }
+
+       if len(gopath) == 0 {
+               return "", errors.New("$GOPATH not provided when building " + packagePath)
+       }
+
+       executable := filepath.Join(tmpDir, path.Base(packagePath))
+       if runtime.GOOS == "windows" {
+               executable = executable + ".exe"
+       }
+
+       cmdArgs := append([]string{"build"}, args...)
+       cmdArgs = append(cmdArgs, "-o", executable, packagePath)
+
+       build := exec.Command("go", cmdArgs...)
+       build.Env = append([]string{"GOPATH=" + gopath}, os.Environ()...)
+       build.Env = append(build.Env, env...)
+
+       output, err := build.CombinedOutput()
+       if err != nil {
+               return "", fmt.Errorf("Failed to build %s:\n\nError:\n%s\n\nOutput:\n%s", packagePath, err, string(output))
+       }
+
+       return executable, nil
+}
+
+/*
+You should call CleanupBuildArtifacts before your test ends to clean up any temporary artifacts generated by
+gexec. In Ginkgo this is typically done in an AfterSuite callback.
+*/
+func CleanupBuildArtifacts() {
+       mu.Lock()
+       defer mu.Unlock()
+       if tmpDir != "" {
+               os.RemoveAll(tmpDir)
+               tmpDir = ""
+       }
+}
+
+func temporaryDirectory() (string, error) {
+       var err error
+       mu.Lock()
+       defer mu.Unlock()
+       if tmpDir == "" {
+               tmpDir, err = ioutil.TempDir("", "gexec_artifacts")
+               if err != nil {
+                       return "", err
+               }
+       }
+
+       return ioutil.TempDir(tmpDir, "g")
+}
diff --git a/vendor/github.com/onsi/gomega/gexec/build_test.go b/vendor/github.com/onsi/gomega/gexec/build_test.go
new file mode 100644 (file)
index 0000000..8df0790
--- /dev/null
@@ -0,0 +1,59 @@
+package gexec_test
+
+import (
+       "os"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       "github.com/onsi/gomega/gexec"
+)
+
+var packagePath = "./_fixture/firefly"
+
+var _ = Describe(".Build", func() {
+       Context("when there have been previous calls to Build", func() {
+               BeforeEach(func() {
+                       _, err := gexec.Build(packagePath)
+                       Ω(err).ShouldNot(HaveOccurred())
+               })
+
+               It("compiles the specified package", func() {
+                       compiledPath, err := gexec.Build(packagePath)
+                       Ω(err).ShouldNot(HaveOccurred())
+                       Ω(compiledPath).Should(BeAnExistingFile())
+               })
+
+               Context("and CleanupBuildArtifacts has been called", func() {
+                       BeforeEach(func() {
+                               gexec.CleanupBuildArtifacts()
+                       })
+
+                       It("compiles the specified package", func() {
+                               var err error
+                               fireflyPath, err = gexec.Build(packagePath)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               Ω(fireflyPath).Should(BeAnExistingFile())
+                       })
+               })
+       })
+})
+
+var _ = Describe(".BuildWithEnvironment", func() {
+       var err error
+       env := []string{
+               "GOOS=linux",
+               "GOARCH=amd64",
+       }
+
+       It("compiles the specified package with the specified env vars", func() {
+               compiledPath, err := gexec.BuildWithEnvironment(packagePath, env)
+               Ω(err).ShouldNot(HaveOccurred())
+               Ω(compiledPath).Should(BeAnExistingFile())
+       })
+
+       It("returns the environment to a good state", func() {
+               _, err = gexec.BuildWithEnvironment(packagePath, env)
+               Ω(err).ShouldNot(HaveOccurred())
+               Ω(os.Environ()).ShouldNot(ContainElement("GOOS=linux"))
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/gexec/exit_matcher.go b/vendor/github.com/onsi/gomega/gexec/exit_matcher.go
new file mode 100644 (file)
index 0000000..e6f4329
--- /dev/null
@@ -0,0 +1,88 @@
+package gexec
+
+import (
+       "fmt"
+
+       "github.com/onsi/gomega/format"
+)
+
+/*
+The Exit matcher operates on a session:
+
+       Ω(session).Should(Exit(<optional status code>))
+
+Exit passes if the session has already exited.
+
+If no status code is provided, then Exit will succeed if the session has exited regardless of exit code.
+Otherwise, Exit will only succeed if the process has exited with the provided status code.
+
+Note that the process must have already exited.  To wait for a process to exit, use Eventually:
+
+       Eventually(session, 3).Should(Exit(0))
+*/
+func Exit(optionalExitCode ...int) *exitMatcher {
+       exitCode := -1
+       if len(optionalExitCode) > 0 {
+               exitCode = optionalExitCode[0]
+       }
+
+       return &exitMatcher{
+               exitCode: exitCode,
+       }
+}
+
+type exitMatcher struct {
+       exitCode       int
+       didExit        bool
+       actualExitCode int
+}
+
+type Exiter interface {
+       ExitCode() int
+}
+
+func (m *exitMatcher) Match(actual interface{}) (success bool, err error) {
+       exiter, ok := actual.(Exiter)
+       if !ok {
+               return false, fmt.Errorf("Exit must be passed a gexec.Exiter (Missing method ExitCode() int) Got:\n%s", format.Object(actual, 1))
+       }
+
+       m.actualExitCode = exiter.ExitCode()
+
+       if m.actualExitCode == -1 {
+               return false, nil
+       }
+
+       if m.exitCode == -1 {
+               return true, nil
+       }
+       return m.exitCode == m.actualExitCode, nil
+}
+
+func (m *exitMatcher) FailureMessage(actual interface{}) (message string) {
+       if m.actualExitCode == -1 {
+               return "Expected process to exit.  It did not."
+       } else {
+               return format.Message(m.actualExitCode, "to match exit code:", m.exitCode)
+       }
+}
+
+func (m *exitMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       if m.actualExitCode == -1 {
+               return "you really shouldn't be able to see this!"
+       } else {
+               if m.exitCode == -1 {
+                       return "Expected process not to exit.  It did."
+               } else {
+                       return format.Message(m.actualExitCode, "not to match exit code:", m.exitCode)
+               }
+       }
+}
+
+func (m *exitMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
+       session, ok := actual.(*Session)
+       if ok {
+               return session.ExitCode() == -1
+       }
+       return true
+}
diff --git a/vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go b/vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go
new file mode 100644 (file)
index 0000000..79615dd
--- /dev/null
@@ -0,0 +1,113 @@
+package gexec_test
+
+import (
+       . "github.com/onsi/gomega/gexec"
+       "os/exec"
+       "time"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+type NeverExits struct{}
+
+func (e NeverExits) ExitCode() int {
+       return -1
+}
+
+var _ = Describe("ExitMatcher", func() {
+       var command *exec.Cmd
+       var session *Session
+
+       BeforeEach(func() {
+               var err error
+               command = exec.Command(fireflyPath, "0")
+               session, err = Start(command, nil, nil)
+               Ω(err).ShouldNot(HaveOccurred())
+       })
+
+       Describe("when passed something that is an Exiter", func() {
+               It("should act normally", func() {
+                       failures := InterceptGomegaFailures(func() {
+                               Ω(NeverExits{}).Should(Exit())
+                       })
+
+                       Ω(failures[0]).Should(ContainSubstring("Expected process to exit.  It did not."))
+               })
+       })
+
+       Describe("when passed something that is not an Exiter", func() {
+               It("should error", func() {
+                       failures := InterceptGomegaFailures(func() {
+                               Ω("aardvark").Should(Exit())
+                       })
+
+                       Ω(failures[0]).Should(ContainSubstring("Exit must be passed a gexec.Exiter"))
+               })
+       })
+
+       Context("with no exit code", func() {
+               It("should say the right things when it fails", func() {
+                       Ω(session).ShouldNot(Exit())
+
+                       failures := InterceptGomegaFailures(func() {
+                               Ω(session).Should(Exit())
+                       })
+
+                       Ω(failures[0]).Should(ContainSubstring("Expected process to exit.  It did not."))
+
+                       Eventually(session).Should(Exit())
+
+                       Ω(session).Should(Exit())
+
+                       failures = InterceptGomegaFailures(func() {
+                               Ω(session).ShouldNot(Exit())
+                       })
+
+                       Ω(failures[0]).Should(ContainSubstring("Expected process not to exit.  It did."))
+               })
+       })
+
+       Context("with an exit code", func() {
+               It("should say the right things when it fails", func() {
+                       Ω(session).ShouldNot(Exit(0))
+                       Ω(session).ShouldNot(Exit(1))
+
+                       failures := InterceptGomegaFailures(func() {
+                               Ω(session).Should(Exit(0))
+                       })
+
+                       Ω(failures[0]).Should(ContainSubstring("Expected process to exit.  It did not."))
+
+                       Eventually(session).Should(Exit(0))
+
+                       Ω(session).Should(Exit(0))
+
+                       failures = InterceptGomegaFailures(func() {
+                               Ω(session).Should(Exit(1))
+                       })
+
+                       Ω(failures[0]).Should(ContainSubstring("to match exit code:"))
+
+                       Ω(session).ShouldNot(Exit(1))
+
+                       failures = InterceptGomegaFailures(func() {
+                               Ω(session).ShouldNot(Exit(0))
+                       })
+
+                       Ω(failures[0]).Should(ContainSubstring("not to match exit code:"))
+               })
+       })
+
+       Describe("bailing out early", func() {
+               It("should bail out early once the process exits", func() {
+                       t := time.Now()
+
+                       failures := InterceptGomegaFailures(func() {
+                               Eventually(session).Should(Exit(1))
+                       })
+                       Ω(time.Since(t)).Should(BeNumerically("<=", 500*time.Millisecond))
+                       Ω(failures).Should(HaveLen(1))
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go b/vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go
new file mode 100644 (file)
index 0000000..87672aa
--- /dev/null
@@ -0,0 +1,26 @@
+package gexec_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       "github.com/onsi/gomega/gexec"
+
+       "testing"
+)
+
+var fireflyPath string
+
+func TestGexec(t *testing.T) {
+       BeforeSuite(func() {
+               var err error
+               fireflyPath, err = gexec.Build("./_fixture/firefly")
+               Ω(err).ShouldNot(HaveOccurred())
+       })
+
+       AfterSuite(func() {
+               gexec.CleanupBuildArtifacts()
+       })
+
+       RegisterFailHandler(Fail)
+       RunSpecs(t, "Gexec Suite")
+}
diff --git a/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go b/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go
new file mode 100644 (file)
index 0000000..05e695a
--- /dev/null
@@ -0,0 +1,53 @@
+package gexec
+
+import (
+       "io"
+       "sync"
+)
+
+/*
+PrefixedWriter wraps an io.Writer, emiting the passed in prefix at the beginning of each new line.
+This can be useful when running multiple gexec.Sessions concurrently - you can prefix the log output of each
+session by passing in a PrefixedWriter:
+
+gexec.Start(cmd, NewPrefixedWriter("[my-cmd] ", GinkgoWriter), NewPrefixedWriter("[my-cmd] ", GinkgoWriter))
+*/
+type PrefixedWriter struct {
+       prefix        []byte
+       writer        io.Writer
+       lock          *sync.Mutex
+       atStartOfLine bool
+}
+
+func NewPrefixedWriter(prefix string, writer io.Writer) *PrefixedWriter {
+       return &PrefixedWriter{
+               prefix:        []byte(prefix),
+               writer:        writer,
+               lock:          &sync.Mutex{},
+               atStartOfLine: true,
+       }
+}
+
+func (w *PrefixedWriter) Write(b []byte) (int, error) {
+       w.lock.Lock()
+       defer w.lock.Unlock()
+
+       toWrite := []byte{}
+
+       for _, c := range b {
+               if w.atStartOfLine {
+                       toWrite = append(toWrite, w.prefix...)
+               }
+
+               toWrite = append(toWrite, c)
+
+               w.atStartOfLine = c == '\n'
+       }
+
+       _, err := w.writer.Write(toWrite)
+       if err != nil {
+               return 0, err
+       }
+
+       return len(b), nil
+}
diff --git a/vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go b/vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go
new file mode 100644 (file)
index 0000000..8657d0c
--- /dev/null
@@ -0,0 +1,43 @@
+package gexec_test
+
+import (
+       "bytes"
+
+       . "github.com/onsi/gomega/gexec"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+var _ = Describe("PrefixedWriter", func() {
+       var buffer *bytes.Buffer
+       var writer *PrefixedWriter
+       BeforeEach(func() {
+               buffer = &bytes.Buffer{}
+               writer = NewPrefixedWriter("[p]", buffer)
+       })
+
+       It("should emit the prefix on newlines", func() {
+               writer.Write([]byte("abc"))
+               writer.Write([]byte("def\n"))
+               writer.Write([]byte("hij\n"))
+               writer.Write([]byte("\n\n"))
+               writer.Write([]byte("klm\n\nnop"))
+               writer.Write([]byte(""))
+               writer.Write([]byte("qrs"))
+               writer.Write([]byte("\ntuv\nwx"))
+               writer.Write([]byte("yz\n\n"))
+
+               Ω(buffer.String()).Should(Equal(`[p]abcdef
+[p]hij
+[p]
+[p]
+[p]klm
+[p]
+[p]nopqrs
+[p]tuv
+[p]wxyz
+[p]
+`))
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/gexec/session.go b/vendor/github.com/onsi/gomega/gexec/session.go
new file mode 100644 (file)
index 0000000..387a72c
--- /dev/null
@@ -0,0 +1,305 @@
+/*
+Package gexec provides support for testing external processes.
+*/
+package gexec
+
+import (
+       "io"
+       "os"
+       "os/exec"
+       "reflect"
+       "sync"
+       "syscall"
+
+       . "github.com/onsi/gomega"
+       "github.com/onsi/gomega/gbytes"
+)
+
+const INVALID_EXIT_CODE = 254
+
+type Session struct {
+       //The wrapped command
+       Command *exec.Cmd
+
+       //A *gbytes.Buffer connected to the command's stdout
+       Out *gbytes.Buffer
+
+       //A *gbytes.Buffer connected to the command's stderr
+       Err *gbytes.Buffer
+
+       //A channel that will close when the command exits
+       Exited <-chan struct{}
+
+       lock     *sync.Mutex
+       exitCode int
+}
+
+/*
+Start starts the passed-in *exec.Cmd command.  It wraps the command in a *gexec.Session.
+
+The session pipes the command's stdout and stderr to two *gbytes.Buffers available as properties on the session: session.Out and session.Err.
+These buffers can be used with the gbytes.Say matcher to match against unread output:
+
+       Ω(session.Out).Should(gbytes.Say("foo-out"))
+       Ω(session.Err).Should(gbytes.Say("foo-err"))
+
+In addition, Session satisfies the gbytes.BufferProvider interface and provides the stdout *gbytes.Buffer.  This allows you to replace the first line, above, with:
+
+       Ω(session).Should(gbytes.Say("foo-out"))
+
+When outWriter and/or errWriter are non-nil, the session will pipe stdout and/or stderr output both into the session *gybtes.Buffers and to the passed-in outWriter/errWriter.
+This is useful for capturing the process's output or logging it to screen.  In particular, when using Ginkgo it can be convenient to direct output to the GinkgoWriter:
+
+       session, err := Start(command, GinkgoWriter, GinkgoWriter)
+
+This will log output when running tests in verbose mode, but - otherwise - will only log output when a test fails.
+
+The session wrapper is responsible for waiting on the *exec.Cmd command.  You *should not* call command.Wait() yourself.
+Instead, to assert that the command has exited you can use the gexec.Exit matcher:
+
+       Ω(session).Should(gexec.Exit())
+
+When the session exits it closes the stdout and stderr gbytes buffers.  This will short circuit any
+Eventuallys waiting for the buffers to Say something.
+*/
+func Start(command *exec.Cmd, outWriter io.Writer, errWriter io.Writer) (*Session, error) {
+       exited := make(chan struct{})
+
+       session := &Session{
+               Command:  command,
+               Out:      gbytes.NewBuffer(),
+               Err:      gbytes.NewBuffer(),
+               Exited:   exited,
+               lock:     &sync.Mutex{},
+               exitCode: -1,
+       }
+
+       var commandOut, commandErr io.Writer
+
+       commandOut, commandErr = session.Out, session.Err
+
+       if outWriter != nil && !reflect.ValueOf(outWriter).IsNil() {
+               commandOut = io.MultiWriter(commandOut, outWriter)
+       }
+
+       if errWriter != nil && !reflect.ValueOf(errWriter).IsNil() {
+               commandErr = io.MultiWriter(commandErr, errWriter)
+       }
+
+       command.Stdout = commandOut
+       command.Stderr = commandErr
+
+       err := command.Start()
+       if err == nil {
+               go session.monitorForExit(exited)
+               trackedSessionsMutex.Lock()
+               defer trackedSessionsMutex.Unlock()
+               trackedSessions = append(trackedSessions, session)
+       }
+
+       return session, err
+}
+
+/*
+Buffer implements the gbytes.BufferProvider interface and returns s.Out
+This allows you to make gbytes.Say matcher assertions against stdout without having to reference .Out:
+
+       Eventually(session).Should(gbytes.Say("foo"))
+*/
+func (s *Session) Buffer() *gbytes.Buffer {
+       return s.Out
+}
+
+/*
+ExitCode returns the wrapped command's exit code.  If the command hasn't exited yet, ExitCode returns -1.
+
+To assert that the command has exited it is more convenient to use the Exit matcher:
+
+       Eventually(s).Should(gexec.Exit())
+
+When the process exits because it has received a particular signal, the exit code will be 128+signal-value
+(See http://www.tldp.org/LDP/abs/html/exitcodes.html and http://man7.org/linux/man-pages/man7/signal.7.html)
+
+*/
+func (s *Session) ExitCode() int {
+       s.lock.Lock()
+       defer s.lock.Unlock()
+       return s.exitCode
+}
+
+/*
+Wait waits until the wrapped command exits.  It can be passed an optional timeout.
+If the command does not exit within the timeout, Wait will trigger a test failure.
+
+Wait returns the session, making it possible to chain:
+
+       session.Wait().Out.Contents()
+
+will wait for the command to exit then return the entirety of Out's contents.
+
+Wait uses eventually under the hood and accepts the same timeout/polling intervals that eventually does.
+*/
+func (s *Session) Wait(timeout ...interface{}) *Session {
+       EventuallyWithOffset(1, s, timeout...).Should(Exit())
+       return s
+}
+
+/*
+Kill sends the running command a SIGKILL signal.  It does not wait for the process to exit.
+
+If the command has already exited, Kill returns silently.
+
+The session is returned to enable chaining.
+*/
+func (s *Session) Kill() *Session {
+       if s.ExitCode() != -1 {
+               return s
+       }
+       s.Command.Process.Kill()
+       return s
+}
+
+/*
+Interrupt sends the running command a SIGINT signal.  It does not wait for the process to exit.
+
+If the command has already exited, Interrupt returns silently.
+
+The session is returned to enable chaining.
+*/
+func (s *Session) Interrupt() *Session {
+       return s.Signal(syscall.SIGINT)
+}
+
+/*
+Terminate sends the running command a SIGTERM signal.  It does not wait for the process to exit.
+
+If the command has already exited, Terminate returns silently.
+
+The session is returned to enable chaining.
+*/
+func (s *Session) Terminate() *Session {
+       return s.Signal(syscall.SIGTERM)
+}
+
+/*
+Signal sends the running command the passed in signal.  It does not wait for the process to exit.
+
+If the command has already exited, Signal returns silently.
+
+The session is returned to enable chaining.
+*/
+func (s *Session) Signal(signal os.Signal) *Session {
+       if s.ExitCode() != -1 {
+               return s
+       }
+       s.Command.Process.Signal(signal)
+       return s
+}
+
+func (s *Session) monitorForExit(exited chan<- struct{}) {
+       err := s.Command.Wait()
+       s.lock.Lock()
+       s.Out.Close()
+       s.Err.Close()
+       status := s.Command.ProcessState.Sys().(syscall.WaitStatus)
+       if status.Signaled() {
+               s.exitCode = 128 + int(status.Signal())
+       } else {
+               exitStatus := status.ExitStatus()
+               if exitStatus == -1 && err != nil {
+                       s.exitCode = INVALID_EXIT_CODE
+               }
+               s.exitCode = exitStatus
+       }
+       s.lock.Unlock()
+
+       close(exited)
+}
+
+var trackedSessions = []*Session{}
+var trackedSessionsMutex = &sync.Mutex{}
+
+/*
+Kill sends a SIGKILL signal to all the processes started by Run, and waits for them to exit.
+The timeout specified is applied to each process killed.
+
+If any of the processes already exited, KillAndWait returns silently.
+*/
+func KillAndWait(timeout ...interface{}) {
+       trackedSessionsMutex.Lock()
+       defer trackedSessionsMutex.Unlock()
+       for _, session := range trackedSessions {
+               session.Kill().Wait(timeout...)
+       }
+       trackedSessions = []*Session{}
+}
+
+/*
+Kill sends a SIGTERM signal to all the processes started by Run, and waits for them to exit.
+The timeout specified is applied to each process killed.
+
+If any of the processes already exited, TerminateAndWait returns silently.
+*/
+func TerminateAndWait(timeout ...interface{}) {
+       trackedSessionsMutex.Lock()
+       defer trackedSessionsMutex.Unlock()
+       for _, session := range trackedSessions {
+               session.Terminate().Wait(timeout...)
+       }
+}
+
+/*
+Kill sends a SIGKILL signal to all the processes started by Run.
+It does not wait for the processes to exit.
+
+If any of the processes already exited, Kill returns silently.
+*/
+func Kill() {
+       trackedSessionsMutex.Lock()
+       defer trackedSessionsMutex.Unlock()
+       for _, session := range trackedSessions {
+               session.Kill()
+       }
+}
+
+/*
+Terminate sends a SIGTERM signal to all the processes started by Run.
+It does not wait for the processes to exit.
+
+If any of the processes already exited, Terminate returns silently.
+*/
+func Terminate() {
+       trackedSessionsMutex.Lock()
+       defer trackedSessionsMutex.Unlock()
+       for _, session := range trackedSessions {
+               session.Terminate()
+       }
+}
+
+/*
+Signal sends the passed in signal to all the processes started by Run.
+It does not wait for the processes to exit.
+
+If any of the processes already exited, Signal returns silently.
+*/
+func Signal(signal os.Signal) {
+       trackedSessionsMutex.Lock()
+       defer trackedSessionsMutex.Unlock()
+       for _, session := range trackedSessions {
+               session.Signal(signal)
+       }
+}
+
+/*
+Interrupt sends the SIGINT signal to all the processes started by Run.
+It does not wait for the processes to exit.
+
+If any of the processes already exited, Interrupt returns silently.
+*/
+func Interrupt() {
+       trackedSessionsMutex.Lock()
+       defer trackedSessionsMutex.Unlock()
+       for _, session := range trackedSessions {
+               session.Interrupt()
+       }
+}
diff --git a/vendor/github.com/onsi/gomega/gexec/session_test.go b/vendor/github.com/onsi/gomega/gexec/session_test.go
new file mode 100644 (file)
index 0000000..b7841a0
--- /dev/null
@@ -0,0 +1,351 @@
+package gexec_test
+
+import (
+       "os/exec"
+       "syscall"
+       "time"
+
+       . "github.com/onsi/gomega/gbytes"
+       . "github.com/onsi/gomega/gexec"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+var _ = Describe("Session", func() {
+       var command *exec.Cmd
+       var session *Session
+
+       var outWriter, errWriter *Buffer
+
+       BeforeEach(func() {
+               outWriter = nil
+               errWriter = nil
+       })
+
+       JustBeforeEach(func() {
+               command = exec.Command(fireflyPath)
+               var err error
+               session, err = Start(command, outWriter, errWriter)
+               Ω(err).ShouldNot(HaveOccurred())
+       })
+
+       Context("running a command", func() {
+               It("should start the process", func() {
+                       Ω(command.Process).ShouldNot(BeNil())
+               })
+
+               It("should wrap the process's stdout and stderr with gbytes buffers", func(done Done) {
+                       Eventually(session.Out).Should(Say("We've done the impossible, and that makes us mighty"))
+                       Eventually(session.Err).Should(Say("Ah, curse your sudden but inevitable betrayal!"))
+                       defer session.Out.CancelDetects()
+
+                       select {
+                       case <-session.Out.Detect("Can we maybe vote on the whole murdering people issue"):
+                               Eventually(session).Should(Exit(0))
+                       case <-session.Out.Detect("I swear by my pretty floral bonnet, I will end you."):
+                               Eventually(session).Should(Exit(1))
+                       case <-session.Out.Detect("My work's illegal, but at least it's honest."):
+                               Eventually(session).Should(Exit(2))
+                       }
+
+                       close(done)
+               })
+
+               It("should satisfy the gbytes.BufferProvider interface, passing Stdout", func() {
+                       Eventually(session).Should(Say("We've done the impossible, and that makes us mighty"))
+                       Eventually(session).Should(Exit())
+               })
+       })
+
+       Describe("providing the exit code", func() {
+               It("should provide the app's exit code", func() {
+                       Ω(session.ExitCode()).Should(Equal(-1))
+
+                       Eventually(session).Should(Exit())
+                       Ω(session.ExitCode()).Should(BeNumerically(">=", 0))
+                       Ω(session.ExitCode()).Should(BeNumerically("<", 3))
+               })
+       })
+
+       Describe("wait", func() {
+               It("should wait till the command exits", func() {
+                       Ω(session.ExitCode()).Should(Equal(-1))
+                       Ω(session.Wait().ExitCode()).Should(BeNumerically(">=", 0))
+                       Ω(session.Wait().ExitCode()).Should(BeNumerically("<", 3))
+               })
+       })
+
+       Describe("exited", func() {
+               It("should close when the command exits", func() {
+                       Eventually(session.Exited).Should(BeClosed())
+                       Ω(session.ExitCode()).ShouldNot(Equal(-1))
+               })
+       })
+
+       Describe("kill", func() {
+               It("should kill the command and don't wait for it to exit", func() {
+                       session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                       Ω(err).ShouldNot(HaveOccurred())
+
+                       session.Kill()
+                       Ω(session).ShouldNot(Exit(), "Should not exit immediately...")
+                       Eventually(session).Should(Exit(128 + 9))
+               })
+       })
+
+       Describe("interrupt", func() {
+               It("should interrupt the command", func() {
+                       session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                       Ω(err).ShouldNot(HaveOccurred())
+
+                       session.Interrupt()
+                       Ω(session).ShouldNot(Exit(), "Should not exit immediately...")
+                       Eventually(session).Should(Exit(128 + 2))
+               })
+       })
+
+       Describe("terminate", func() {
+               It("should terminate the command", func() {
+                       session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                       Ω(err).ShouldNot(HaveOccurred())
+
+                       session.Terminate()
+                       Ω(session).ShouldNot(Exit(), "Should not exit immediately...")
+                       Eventually(session).Should(Exit(128 + 15))
+               })
+       })
+
+       Describe("signal", func() {
+               It("should send the signal to the command", func() {
+                       session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                       Ω(err).ShouldNot(HaveOccurred())
+
+                       session.Signal(syscall.SIGABRT)
+                       Ω(session).ShouldNot(Exit(), "Should not exit immediately...")
+                       Eventually(session).Should(Exit(128 + 6))
+               })
+       })
+
+       Context("tracking sessions", func() {
+               BeforeEach(func() {
+                       KillAndWait()
+               })
+
+               Describe("kill", func() {
+                       It("should kill all the started sessions", func() {
+                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Kill()
+
+                               Eventually(session1).Should(Exit(128 + 9))
+                               Eventually(session2).Should(Exit(128 + 9))
+                               Eventually(session3).Should(Exit(128 + 9))
+                       })
+
+                       It("should not wait for exit", func() {
+                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Kill()
+                               Ω(session1).ShouldNot(Exit(), "Should not exit immediately...")
+
+                               Eventually(session1).Should(Exit(128 + 9))
+                       })
+
+                       It("should not track unstarted sessions", func() {
+                               _, err := Start(exec.Command("does not exist", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).Should(HaveOccurred())
+
+                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Kill()
+
+                               Eventually(session2).Should(Exit(128 + 9))
+                               Eventually(session3).Should(Exit(128 + 9))
+                       })
+
+               })
+
+               Describe("killAndWait", func() {
+                       It("should kill all the started sessions and wait for them to finish", func() {
+                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               KillAndWait()
+                               Ω(session1).Should(Exit(128+9), "Should have exited")
+                               Ω(session2).Should(Exit(128+9), "Should have exited")
+                               Ω(session3).Should(Exit(128+9), "Should have exited")
+                       })
+               })
+
+               Describe("terminate", func() {
+                       It("should terminate all the started sessions", func() {
+                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Terminate()
+
+                               Eventually(session1).Should(Exit(128 + 15))
+                               Eventually(session2).Should(Exit(128 + 15))
+                               Eventually(session3).Should(Exit(128 + 15))
+                       })
+
+                       It("should not wait for exit", func() {
+                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Terminate()
+
+                               Ω(session1).ShouldNot(Exit(), "Should not exit immediately...")
+                       })
+               })
+
+               Describe("terminateAndWait", func() {
+                       It("should terminate all the started sessions, and wait for them to exit", func() {
+                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               TerminateAndWait()
+
+                               Ω(session1).Should(Exit(128+15), "Should have exited")
+                               Ω(session2).Should(Exit(128+15), "Should have exited")
+                               Ω(session3).Should(Exit(128+15), "Should have exited")
+                       })
+               })
+
+               Describe("signal", func() {
+                       It("should signal all the started sessions", func() {
+                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Signal(syscall.SIGABRT)
+
+                               Eventually(session1).Should(Exit(128 + 6))
+                               Eventually(session2).Should(Exit(128 + 6))
+                               Eventually(session3).Should(Exit(128 + 6))
+                       })
+
+                       It("should not wait", func() {
+                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Signal(syscall.SIGABRT)
+
+                               Ω(session1).ShouldNot(Exit(), "Should not exit immediately...")
+                       })
+               })
+
+               Describe("interrupt", func() {
+                       It("should interrupt all the started sessions, and not wait", func() {
+                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Interrupt()
+
+                               Eventually(session1).Should(Exit(128 + 2))
+                               Eventually(session2).Should(Exit(128 + 2))
+                               Eventually(session3).Should(Exit(128 + 2))
+                       })
+
+                       It("should not wait", func() {
+                               session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Interrupt()
+
+                               Ω(session1).ShouldNot(Exit(), "Should not exit immediately...")
+                       })
+               })
+       })
+
+       Context("when the command exits", func() {
+               It("should close the buffers", func() {
+                       Eventually(session).Should(Exit())
+
+                       Ω(session.Out.Closed()).Should(BeTrue())
+                       Ω(session.Err.Closed()).Should(BeTrue())
+
+                       Ω(session.Out).Should(Say("We've done the impossible, and that makes us mighty"))
+               })
+
+               var So = It
+
+               So("this means that eventually should short circuit", func() {
+                       t := time.Now()
+                       failures := InterceptGomegaFailures(func() {
+                               Eventually(session).Should(Say("blah blah blah blah blah"))
+                       })
+                       Ω(time.Since(t)).Should(BeNumerically("<=", 500*time.Millisecond))
+                       Ω(failures).Should(HaveLen(1))
+               })
+       })
+
+       Context("when wrapping out and err", func() {
+               BeforeEach(func() {
+                       outWriter = NewBuffer()
+                       errWriter = NewBuffer()
+               })
+
+               It("should route to both the provided writers and the gbytes buffers", func() {
+                       Eventually(session.Out).Should(Say("We've done the impossible, and that makes us mighty"))
+                       Eventually(session.Err).Should(Say("Ah, curse your sudden but inevitable betrayal!"))
+
+                       Ω(outWriter.Contents()).Should(ContainSubstring("We've done the impossible, and that makes us mighty"))
+                       Ω(errWriter.Contents()).Should(ContainSubstring("Ah, curse your sudden but inevitable betrayal!"))
+
+                       Eventually(session).Should(Exit())
+
+                       Ω(outWriter.Contents()).Should(Equal(session.Out.Contents()))
+                       Ω(errWriter.Contents()).Should(Equal(session.Err.Contents()))
+               })
+       })
+
+       Describe("when the command fails to start", func() {
+               It("should return an error", func() {
+                       _, err := Start(exec.Command("agklsjdfas"), nil, nil)
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/ghttp/handlers.go b/vendor/github.com/onsi/gomega/ghttp/handlers.go
new file mode 100644 (file)
index 0000000..63ff691
--- /dev/null
@@ -0,0 +1,313 @@
+package ghttp
+
+import (
+       "encoding/base64"
+       "encoding/json"
+       "fmt"
+       "io/ioutil"
+       "net/http"
+       "net/url"
+       "reflect"
+
+       "github.com/golang/protobuf/proto"
+       . "github.com/onsi/gomega"
+       "github.com/onsi/gomega/types"
+)
+
+//CombineHandler takes variadic list of handlers and produces one handler
+//that calls each handler in order.
+func CombineHandlers(handlers ...http.HandlerFunc) http.HandlerFunc {
+       return func(w http.ResponseWriter, req *http.Request) {
+               for _, handler := range handlers {
+                       handler(w, req)
+               }
+       }
+}
+
+//VerifyRequest returns a handler that verifies that a request uses the specified method to connect to the specified path
+//You may also pass in an optional rawQuery string which is tested against the request's `req.URL.RawQuery`
+//
+//For path, you may pass in a string, in which case strict equality will be applied
+//Alternatively you can pass in a matcher (ContainSubstring("/foo") and MatchRegexp("/foo/[a-f0-9]+") for example)
+func VerifyRequest(method string, path interface{}, rawQuery ...string) http.HandlerFunc {
+       return func(w http.ResponseWriter, req *http.Request) {
+               Ω(req.Method).Should(Equal(method), "Method mismatch")
+               switch p := path.(type) {
+               case types.GomegaMatcher:
+                       Ω(req.URL.Path).Should(p, "Path mismatch")
+               default:
+                       Ω(req.URL.Path).Should(Equal(path), "Path mismatch")
+               }
+               if len(rawQuery) > 0 {
+                       values, err := url.ParseQuery(rawQuery[0])
+                       Ω(err).ShouldNot(HaveOccurred(), "Expected RawQuery is malformed")
+
+                       Ω(req.URL.Query()).Should(Equal(values), "RawQuery mismatch")
+               }
+       }
+}
+
+//VerifyContentType returns a handler that verifies that a request has a Content-Type header set to the
+//specified value
+func VerifyContentType(contentType string) http.HandlerFunc {
+       return func(w http.ResponseWriter, req *http.Request) {
+               Ω(req.Header.Get("Content-Type")).Should(Equal(contentType))
+       }
+}
+
+//VerifyBasicAuth returns a handler that verifies the request contains a BasicAuth Authorization header
+//matching the passed in username and password
+func VerifyBasicAuth(username string, password string) http.HandlerFunc {
+       return func(w http.ResponseWriter, req *http.Request) {
+               auth := req.Header.Get("Authorization")
+               Ω(auth).ShouldNot(Equal(""), "Authorization header must be specified")
+
+               decoded, err := base64.StdEncoding.DecodeString(auth[6:])
+               Ω(err).ShouldNot(HaveOccurred())
+
+               Ω(string(decoded)).Should(Equal(fmt.Sprintf("%s:%s", username, password)), "Authorization mismatch")
+       }
+}
+
+//VerifyHeader returns a handler that verifies the request contains the passed in headers.
+//The passed in header keys are first canonicalized via http.CanonicalHeaderKey.
+//
+//The request must contain *all* the passed in headers, but it is allowed to have additional headers
+//beyond the passed in set.
+func VerifyHeader(header http.Header) http.HandlerFunc {
+       return func(w http.ResponseWriter, req *http.Request) {
+               for key, values := range header {
+                       key = http.CanonicalHeaderKey(key)
+                       Ω(req.Header[key]).Should(Equal(values), "Header mismatch for key: %s", key)
+               }
+       }
+}
+
+//VerifyHeaderKV returns a handler that verifies the request contains a header matching the passed in key and values
+//(recall that a `http.Header` is a mapping from string (key) to []string (values))
+//It is a convenience wrapper around `VerifyHeader` that allows you to avoid having to create an `http.Header` object.
+func VerifyHeaderKV(key string, values ...string) http.HandlerFunc {
+       return VerifyHeader(http.Header{key: values})
+}
+
+//VerifyBody returns a handler that verifies that the body of the request matches the passed in byte array.
+//It does this using Equal().
+func VerifyBody(expectedBody []byte) http.HandlerFunc {
+       return CombineHandlers(
+               func(w http.ResponseWriter, req *http.Request) {
+                       body, err := ioutil.ReadAll(req.Body)
+                       req.Body.Close()
+                       Ω(err).ShouldNot(HaveOccurred())
+                       Ω(body).Should(Equal(expectedBody), "Body Mismatch")
+               },
+       )
+}
+
+//VerifyJSON returns a handler that verifies that the body of the request is a valid JSON representation
+//matching the passed in JSON string.  It does this using Gomega's MatchJSON method
+//
+//VerifyJSON also verifies that the request's content type is application/json
+func VerifyJSON(expectedJSON string) http.HandlerFunc {
+       return CombineHandlers(
+               VerifyContentType("application/json"),
+               func(w http.ResponseWriter, req *http.Request) {
+                       body, err := ioutil.ReadAll(req.Body)
+                       req.Body.Close()
+                       Ω(err).ShouldNot(HaveOccurred())
+                       Ω(body).Should(MatchJSON(expectedJSON), "JSON Mismatch")
+               },
+       )
+}
+
+//VerifyJSONRepresenting is similar to VerifyJSON.  Instead of taking a JSON string, however, it
+//takes an arbitrary JSON-encodable object and verifies that the requests's body is a JSON representation
+//that matches the object
+func VerifyJSONRepresenting(object interface{}) http.HandlerFunc {
+       data, err := json.Marshal(object)
+       Ω(err).ShouldNot(HaveOccurred())
+       return CombineHandlers(
+               VerifyContentType("application/json"),
+               VerifyJSON(string(data)),
+       )
+}
+
+//VerifyForm returns a handler that verifies a request contains the specified form values.
+//
+//The request must contain *all* of the specified values, but it is allowed to have additional
+//form values beyond the passed in set.
+func VerifyForm(values url.Values) http.HandlerFunc {
+       return func(w http.ResponseWriter, r *http.Request) {
+               err := r.ParseForm()
+               Ω(err).ShouldNot(HaveOccurred())
+               for key, vals := range values {
+                       Ω(r.Form[key]).Should(Equal(vals), "Form mismatch for key: %s", key)
+               }
+       }
+}
+
+//VerifyFormKV returns a handler that verifies a request contains a form key with the specified values.
+//
+//It is a convenience wrapper around `VerifyForm` that lets you avoid having to create a `url.Values` object.
+func VerifyFormKV(key string, values ...string) http.HandlerFunc {
+       return VerifyForm(url.Values{key: values})
+}
+
+//VerifyProtoRepresenting returns a handler that verifies that the body of the request is a valid protobuf
+//representation of the passed message.
+//
+//VerifyProtoRepresenting also verifies that the request's content type is application/x-protobuf
+func VerifyProtoRepresenting(expected proto.Message) http.HandlerFunc {
+       return CombineHandlers(
+               VerifyContentType("application/x-protobuf"),
+               func(w http.ResponseWriter, req *http.Request) {
+                       body, err := ioutil.ReadAll(req.Body)
+                       Ω(err).ShouldNot(HaveOccurred())
+                       req.Body.Close()
+
+                       expectedType := reflect.TypeOf(expected)
+                       actualValuePtr := reflect.New(expectedType.Elem())
+
+                       actual, ok := actualValuePtr.Interface().(proto.Message)
+                       Ω(ok).Should(BeTrue(), "Message value is not a proto.Message")
+
+                       err = proto.Unmarshal(body, actual)
+                       Ω(err).ShouldNot(HaveOccurred(), "Failed to unmarshal protobuf")
+
+                       Ω(actual).Should(Equal(expected), "ProtoBuf Mismatch")
+               },
+       )
+}
+
+func copyHeader(src http.Header, dst http.Header) {
+       for key, value := range src {
+               dst[key] = value
+       }
+}
+
+/*
+RespondWith returns a handler that responds to a request with the specified status code and body
+
+Body may be a string or []byte
+
+Also, RespondWith can be given an optional http.Header.  The headers defined therein will be added to the response headers.
+*/
+func RespondWith(statusCode int, body interface{}, optionalHeader ...http.Header) http.HandlerFunc {
+       return func(w http.ResponseWriter, req *http.Request) {
+               if len(optionalHeader) == 1 {
+                       copyHeader(optionalHeader[0], w.Header())
+               }
+               w.WriteHeader(statusCode)
+               switch x := body.(type) {
+               case string:
+                       w.Write([]byte(x))
+               case []byte:
+                       w.Write(x)
+               default:
+                       Ω(body).Should(BeNil(), "Invalid type for body.  Should be string or []byte.")
+               }
+       }
+}
+
+/*
+RespondWithPtr returns a handler that responds to a request with the specified status code and body
+
+Unlike RespondWith, you pass RepondWithPtr a pointer to the status code and body allowing different tests
+to share the same setup but specify different status codes and bodies.
+
+Also, RespondWithPtr can be given an optional http.Header.  The headers defined therein will be added to the response headers.
+Since the http.Header can be mutated after the fact you don't need to pass in a pointer.
+*/
+func RespondWithPtr(statusCode *int, body interface{}, optionalHeader ...http.Header) http.HandlerFunc {
+       return func(w http.ResponseWriter, req *http.Request) {
+               if len(optionalHeader) == 1 {
+                       copyHeader(optionalHeader[0], w.Header())
+               }
+               w.WriteHeader(*statusCode)
+               if body != nil {
+                       switch x := (body).(type) {
+                       case *string:
+                               w.Write([]byte(*x))
+                       case *[]byte:
+                               w.Write(*x)
+                       default:
+                               Ω(body).Should(BeNil(), "Invalid type for body.  Should be string or []byte.")
+                       }
+               }
+       }
+}
+
+/*
+RespondWithJSONEncoded returns a handler that responds to a request with the specified status code and a body
+containing the JSON-encoding of the passed in object
+
+Also, RespondWithJSONEncoded can be given an optional http.Header.  The headers defined therein will be added to the response headers.
+*/
+func RespondWithJSONEncoded(statusCode int, object interface{}, optionalHeader ...http.Header) http.HandlerFunc {
+       data, err := json.Marshal(object)
+       Ω(err).ShouldNot(HaveOccurred())
+
+       var headers http.Header
+       if len(optionalHeader) == 1 {
+               headers = optionalHeader[0]
+       } else {
+               headers = make(http.Header)
+       }
+       if _, found := headers["Content-Type"]; !found {
+               headers["Content-Type"] = []string{"application/json"}
+       }
+       return RespondWith(statusCode, string(data), headers)
+}
+
+/*
+RespondWithJSONEncodedPtr behaves like RespondWithJSONEncoded but takes a pointer
+to a status code and object.
+
+This allows different tests to share the same setup but specify different status codes and JSON-encoded
+objects.
+
+Also, RespondWithJSONEncodedPtr can be given an optional http.Header.  The headers defined therein will be added to the response headers.
+Since the http.Header can be mutated after the fact you don't need to pass in a pointer.
+*/
+func RespondWithJSONEncodedPtr(statusCode *int, object interface{}, optionalHeader ...http.Header) http.HandlerFunc {
+       return func(w http.ResponseWriter, req *http.Request) {
+               data, err := json.Marshal(object)
+               Ω(err).ShouldNot(HaveOccurred())
+               var headers http.Header
+               if len(optionalHeader) == 1 {
+                       headers = optionalHeader[0]
+               } else {
+                       headers = make(http.Header)
+               }
+               if _, found := headers["Content-Type"]; !found {
+                       headers["Content-Type"] = []string{"application/json"}
+               }
+               copyHeader(headers, w.Header())
+               w.WriteHeader(*statusCode)
+               w.Write(data)
+       }
+}
+
+//RespondWithProto returns a handler that responds to a request with the specified status code and a body
+//containing the protobuf serialization of the provided message.
+//
+//Also, RespondWithProto can be given an optional http.Header.  The headers defined therein will be added to the response headers.
+func RespondWithProto(statusCode int, message proto.Message, optionalHeader ...http.Header) http.HandlerFunc {
+       return func(w http.ResponseWriter, req *http.Request) {
+               data, err := proto.Marshal(message)
+               Ω(err).ShouldNot(HaveOccurred())
+
+               var headers http.Header
+               if len(optionalHeader) == 1 {
+                       headers = optionalHeader[0]
+               } else {
+                       headers = make(http.Header)
+               }
+               if _, found := headers["Content-Type"]; !found {
+                       headers["Content-Type"] = []string{"application/x-protobuf"}
+               }
+               copyHeader(headers, w.Header())
+
+               w.WriteHeader(statusCode)
+               w.Write(data)
+       }
+}
diff --git a/vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go b/vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go
new file mode 100644 (file)
index 0000000..b2972bc
--- /dev/null
@@ -0,0 +1,3 @@
+package protobuf
+
+//go:generate protoc --go_out=. simple_message.proto
diff --git a/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go b/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go
new file mode 100644 (file)
index 0000000..c55a484
--- /dev/null
@@ -0,0 +1,55 @@
+// Code generated by protoc-gen-go.
+// source: simple_message.proto
+// DO NOT EDIT!
+
+/*
+Package protobuf is a generated protocol buffer package.
+
+It is generated from these files:
+       simple_message.proto
+
+It has these top-level messages:
+       SimpleMessage
+*/
+package protobuf
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+type SimpleMessage struct {
+       Description      *string `protobuf:"bytes,1,req,name=description" json:"description,omitempty"`
+       Id               *int32  `protobuf:"varint,2,req,name=id" json:"id,omitempty"`
+       Metadata         *string `protobuf:"bytes,3,opt,name=metadata" json:"metadata,omitempty"`
+       XXX_unrecognized []byte  `json:"-"`
+}
+
+func (m *SimpleMessage) Reset()         { *m = SimpleMessage{} }
+func (m *SimpleMessage) String() string { return proto.CompactTextString(m) }
+func (*SimpleMessage) ProtoMessage()    {}
+
+func (m *SimpleMessage) GetDescription() string {
+       if m != nil && m.Description != nil {
+               return *m.Description
+       }
+       return ""
+}
+
+func (m *SimpleMessage) GetId() int32 {
+       if m != nil && m.Id != nil {
+               return *m.Id
+       }
+       return 0
+}
+
+func (m *SimpleMessage) GetMetadata() string {
+       if m != nil && m.Metadata != nil {
+               return *m.Metadata
+       }
+       return ""
+}
diff --git a/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto b/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto
new file mode 100644 (file)
index 0000000..35b7145
--- /dev/null
@@ -0,0 +1,9 @@
+syntax = "proto2";
+
+package protobuf;
+
+message SimpleMessage {
+    required string description = 1;
+    required int32 id = 2;
+    optional string metadata = 3;
+}
diff --git a/vendor/github.com/onsi/gomega/ghttp/test_server.go b/vendor/github.com/onsi/gomega/ghttp/test_server.go
new file mode 100644 (file)
index 0000000..40d92de
--- /dev/null
@@ -0,0 +1,381 @@
+/*
+Package ghttp supports testing HTTP clients by providing a test server (simply a thin wrapper around httptest's server) that supports
+registering multiple handlers.  Incoming requests are not routed between the different handlers
+- rather it is merely the order of the handlers that matters.  The first request is handled by the first
+registered handler, the second request by the second handler, etc.
+
+The intent here is to have each handler *verify* that the incoming request is valid.  To accomplish, ghttp
+also provides a collection of bite-size handlers that each perform one aspect of request verification.  These can
+be composed together and registered with a ghttp server.  The result is an expressive language for describing
+the requests generated by the client under test.
+
+Here's a simple example, note that the server handler is only defined in one BeforeEach and then modified, as required, by the nested BeforeEaches.
+A more comprehensive example is available at https://onsi.github.io/gomega/#_testing_http_clients
+
+       var _ = Describe("A Sprockets Client", func() {
+               var server *ghttp.Server
+               var client *SprocketClient
+               BeforeEach(func() {
+                       server = ghttp.NewServer()
+                       client = NewSprocketClient(server.URL(), "skywalker", "tk427")
+               })
+
+               AfterEach(func() {
+                       server.Close()
+               })
+
+               Describe("fetching sprockets", func() {
+                       var statusCode int
+                       var sprockets []Sprocket
+                       BeforeEach(func() {
+                               statusCode = http.StatusOK
+                               sprockets = []Sprocket{}
+                               server.AppendHandlers(ghttp.CombineHandlers(
+                                       ghttp.VerifyRequest("GET", "/sprockets"),
+                                       ghttp.VerifyBasicAuth("skywalker", "tk427"),
+                                       ghttp.RespondWithJSONEncodedPtr(&statusCode, &sprockets),
+                               ))
+                       })
+
+                       Context("when requesting all sprockets", func() {
+                               Context("when the response is succesful", func() {
+                                       BeforeEach(func() {
+                                               sprockets = []Sprocket{
+                                                       NewSprocket("Alfalfa"),
+                                                       NewSprocket("Banana"),
+                                               }
+                                       })
+
+                                       It("should return the returned sprockets", func() {
+                                               Ω(client.Sprockets()).Should(Equal(sprockets))
+                                       })
+                               })
+
+                               Context("when the response is missing", func() {
+                                       BeforeEach(func() {
+                                               statusCode = http.StatusNotFound
+                                       })
+
+                                       It("should return an empty list of sprockets", func() {
+                                               Ω(client.Sprockets()).Should(BeEmpty())
+                                       })
+                               })
+
+                               Context("when the response fails to authenticate", func() {
+                                       BeforeEach(func() {
+                                               statusCode = http.StatusUnauthorized
+                                       })
+
+                                       It("should return an AuthenticationError error", func() {
+                                               sprockets, err := client.Sprockets()
+                                               Ω(sprockets).Should(BeEmpty())
+                                               Ω(err).Should(MatchError(AuthenticationError))
+                                       })
+                               })
+
+                               Context("when the response is a server failure", func() {
+                                       BeforeEach(func() {
+                                               statusCode = http.StatusInternalServerError
+                                       })
+
+                                       It("should return an InternalError error", func() {
+                                               sprockets, err := client.Sprockets()
+                                               Ω(sprockets).Should(BeEmpty())
+                                               Ω(err).Should(MatchError(InternalError))
+                                       })
+                               })
+                       })
+
+                       Context("when requesting some sprockets", func() {
+                               BeforeEach(func() {
+                                       sprockets = []Sprocket{
+                                               NewSprocket("Alfalfa"),
+                                               NewSprocket("Banana"),
+                                       }
+
+                                       server.WrapHandler(0, ghttp.VerifyRequest("GET", "/sprockets", "filter=FOOD"))
+                               })
+
+                               It("should make the request with a filter", func() {
+                                       Ω(client.Sprockets("food")).Should(Equal(sprockets))
+                               })
+                       })
+               })
+       })
+*/
+package ghttp
+
+import (
+       "fmt"
+       "io"
+       "io/ioutil"
+       "net/http"
+       "net/http/httptest"
+       "reflect"
+       "regexp"
+       "strings"
+       "sync"
+
+       . "github.com/onsi/gomega"
+)
+
+func new() *Server {
+       return &Server{
+               AllowUnhandledRequests:     false,
+               UnhandledRequestStatusCode: http.StatusInternalServerError,
+               writeLock:                  &sync.Mutex{},
+       }
+}
+
+type routedHandler struct {
+       method     string
+       pathRegexp *regexp.Regexp
+       path       string
+       handler    http.HandlerFunc
+}
+
+// NewServer returns a new `*ghttp.Server` that wraps an `httptest` server.  The server is started automatically.
+func NewServer() *Server {
+       s := new()
+       s.HTTPTestServer = httptest.NewServer(s)
+       return s
+}
+
+// NewUnstartedServer return a new, unstarted, `*ghttp.Server`.  Useful for specifying a custom listener on `server.HTTPTestServer`.
+func NewUnstartedServer() *Server {
+       s := new()
+       s.HTTPTestServer = httptest.NewUnstartedServer(s)
+       return s
+}
+
+// NewTLSServer returns a new `*ghttp.Server` that wraps an `httptest` TLS server.  The server is started automatically.
+func NewTLSServer() *Server {
+       s := new()
+       s.HTTPTestServer = httptest.NewTLSServer(s)
+       return s
+}
+
+type Server struct {
+       //The underlying httptest server
+       HTTPTestServer *httptest.Server
+
+       //Defaults to false.  If set to true, the Server will allow more requests than there are registered handlers.
+       AllowUnhandledRequests bool
+
+       //The status code returned when receiving an unhandled request.
+       //Defaults to http.StatusInternalServerError.
+       //Only applies if AllowUnhandledRequests is true
+       UnhandledRequestStatusCode int
+
+       //If provided, ghttp will log about each request received to the provided io.Writer
+       //Defaults to nil
+       //If you're using Ginkgo, set this to GinkgoWriter to get improved output during failures
+       Writer io.Writer
+
+       receivedRequests []*http.Request
+       requestHandlers  []http.HandlerFunc
+       routedHandlers   []routedHandler
+
+       writeLock *sync.Mutex
+       calls     int
+}
+
+//Start() starts an unstarted ghttp server.  It is a catastrophic error to call Start more than once (thanks, httptest).
+func (s *Server) Start() {
+       s.HTTPTestServer.Start()
+}
+
+//URL() returns a url that will hit the server
+func (s *Server) URL() string {
+       return s.HTTPTestServer.URL
+}
+
+//Addr() returns the address on which the server is listening.
+func (s *Server) Addr() string {
+       return s.HTTPTestServer.Listener.Addr().String()
+}
+
+//Close() should be called at the end of each test.  It spins down and cleans up the test server.
+func (s *Server) Close() {
+       s.writeLock.Lock()
+       server := s.HTTPTestServer
+       s.HTTPTestServer = nil
+       s.writeLock.Unlock()
+
+       if server != nil {
+               server.Close()
+       }
+}
+
+//ServeHTTP() makes Server an http.Handler
+//When the server receives a request it handles the request in the following order:
+//
+//1. If the request matches a handler registered with RouteToHandler, that handler is called.
+//2. Otherwise, if there are handlers registered via AppendHandlers, those handlers are called in order.
+//3. If all registered handlers have been called then:
+//   a) If AllowUnhandledRequests is true, the request will be handled with response code of UnhandledRequestStatusCode
+//   b) If AllowUnhandledRequests is false, the request will not be handled and the current test will be marked as failed.
+func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request) {
+       s.writeLock.Lock()
+       defer func() {
+               e := recover()
+               if e != nil {
+                       w.WriteHeader(http.StatusInternalServerError)
+               }
+
+               //If the handler panics GHTTP will silently succeed.  This is bad™.
+               //To catch this case we need to fail the test if the handler has panicked.
+               //However, if the handler is panicking because Ginkgo's causing it to panic (i.e. an assertion failed)
+               //then we shouldn't double-report the error as this will confuse people.
+
+               //So: step 1, if this is a Ginkgo panic - do nothing, Ginkgo's aware of the failure
+               eAsString, ok := e.(string)
+               if ok && strings.Contains(eAsString, "defer GinkgoRecover()") {
+                       return
+               }
+
+               //If we're here, we have to do step 2: assert that the error is nil.  This assertion will
+               //allow us to fail the test suite (note: we can't call Fail since Gomega is not allowed to import Ginkgo).
+               //Since a failed assertion throws a panic, and we are likely in a goroutine, we need to defer within our defer!
+               defer func() {
+                       recover()
+               }()
+               Ω(e).Should(BeNil(), "Handler Panicked")
+       }()
+
+       if s.Writer != nil {
+               s.Writer.Write([]byte(fmt.Sprintf("GHTTP Received Request: %s - %s\n", req.Method, req.URL)))
+       }
+
+       s.receivedRequests = append(s.receivedRequests, req)
+       if routedHandler, ok := s.handlerForRoute(req.Method, req.URL.Path); ok {
+               s.writeLock.Unlock()
+               routedHandler(w, req)
+       } else if s.calls < len(s.requestHandlers) {
+               h := s.requestHandlers[s.calls]
+               s.calls++
+               s.writeLock.Unlock()
+               h(w, req)
+       } else {
+               s.writeLock.Unlock()
+               if s.AllowUnhandledRequests {
+                       ioutil.ReadAll(req.Body)
+                       req.Body.Close()
+                       w.WriteHeader(s.UnhandledRequestStatusCode)
+               } else {
+                       Ω(req).Should(BeNil(), "Received Unhandled Request")
+               }
+       }
+}
+
+//ReceivedRequests is an array containing all requests received by the server (both handled and unhandled requests)
+func (s *Server) ReceivedRequests() []*http.Request {
+       s.writeLock.Lock()
+       defer s.writeLock.Unlock()
+
+       return s.receivedRequests
+}
+
+//RouteToHandler can be used to register handlers that will always handle requests that match
+//the passed in method and path.
+//
+//The path may be either a string object or a *regexp.Regexp.
+func (s *Server) RouteToHandler(method string, path interface{}, handler http.HandlerFunc) {
+       s.writeLock.Lock()
+       defer s.writeLock.Unlock()
+
+       rh := routedHandler{
+               method:  method,
+               handler: handler,
+       }
+
+       switch p := path.(type) {
+       case *regexp.Regexp:
+               rh.pathRegexp = p
+       case string:
+               rh.path = p
+       default:
+               panic("path must be a string or a regular expression")
+       }
+
+       for i, existingRH := range s.routedHandlers {
+               if existingRH.method == method &&
+                       reflect.DeepEqual(existingRH.pathRegexp, rh.pathRegexp) &&
+                       existingRH.path == rh.path {
+                       s.routedHandlers[i] = rh
+                       return
+               }
+       }
+       s.routedHandlers = append(s.routedHandlers, rh)
+}
+
+func (s *Server) handlerForRoute(method string, path string) (http.HandlerFunc, bool) {
+       for _, rh := range s.routedHandlers {
+               if rh.method == method {
+                       if rh.pathRegexp != nil {
+                               if rh.pathRegexp.Match([]byte(path)) {
+                                       return rh.handler, true
+                               }
+                       } else if rh.path == path {
+                               return rh.handler, true
+                       }
+               }
+       }
+
+       return nil, false
+}
+
+//AppendHandlers will appends http.HandlerFuncs to the server's list of registered handlers.  The first incoming request is handled by the first handler, the second by the second, etc...
+func (s *Server) AppendHandlers(handlers ...http.HandlerFunc) {
+       s.writeLock.Lock()
+       defer s.writeLock.Unlock()
+
+       s.requestHandlers = append(s.requestHandlers, handlers...)
+}
+
+//SetHandler overrides the registered handler at the passed in index with the passed in handler
+//This is useful, for example, when a server has been set up in a shared context, but must be tweaked
+//for a particular test.
+func (s *Server) SetHandler(index int, handler http.HandlerFunc) {
+       s.writeLock.Lock()
+       defer s.writeLock.Unlock()
+
+       s.requestHandlers[index] = handler
+}
+
+//GetHandler returns the handler registered at the passed in index.
+func (s *Server) GetHandler(index int) http.HandlerFunc {
+       s.writeLock.Lock()
+       defer s.writeLock.Unlock()
+
+       return s.requestHandlers[index]
+}
+
+func (s *Server) Reset() {
+       s.writeLock.Lock()
+       defer s.writeLock.Unlock()
+
+       s.HTTPTestServer.CloseClientConnections()
+       s.calls = 0
+       s.receivedRequests = nil
+       s.requestHandlers = nil
+       s.routedHandlers = nil
+}
+
+//WrapHandler combines the passed in handler with the handler registered at the passed in index.
+//This is useful, for example, when a server has been set up in a shared context but must be tweaked
+//for a particular test.
+//
+//If the currently registered handler is A, and the new passed in handler is B then
+//WrapHandler will generate a new handler that first calls A, then calls B, and assign it to index
+func (s *Server) WrapHandler(index int, handler http.HandlerFunc) {
+       existingHandler := s.GetHandler(index)
+       s.SetHandler(index, CombineHandlers(existingHandler, handler))
+}
+
+func (s *Server) CloseClientConnections() {
+       s.writeLock.Lock()
+       defer s.writeLock.Unlock()
+
+       s.HTTPTestServer.CloseClientConnections()
+}
diff --git a/vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go b/vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go
new file mode 100644 (file)
index 0000000..7c12360
--- /dev/null
@@ -0,0 +1,13 @@
+package ghttp_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+
+       "testing"
+)
+
+func TestGHTTP(t *testing.T) {
+       RegisterFailHandler(Fail)
+       RunSpecs(t, "GHTTP Suite")
+}
diff --git a/vendor/github.com/onsi/gomega/ghttp/test_server_test.go b/vendor/github.com/onsi/gomega/ghttp/test_server_test.go
new file mode 100644 (file)
index 0000000..88b3246
--- /dev/null
@@ -0,0 +1,1089 @@
+package ghttp_test
+
+import (
+       "bytes"
+       "io"
+       "io/ioutil"
+       "net/http"
+       "net/url"
+       "regexp"
+
+       "github.com/golang/protobuf/proto"
+       "github.com/onsi/gomega/gbytes"
+       "github.com/onsi/gomega/ghttp/protobuf"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/ghttp"
+)
+
+var _ = Describe("TestServer", func() {
+       var (
+               resp *http.Response
+               err  error
+               s    *Server
+       )
+
+       BeforeEach(func() {
+               s = NewServer()
+       })
+
+       AfterEach(func() {
+               s.Close()
+       })
+
+       Describe("Resetting the server", func() {
+               BeforeEach(func() {
+                       s.RouteToHandler("GET", "/", func(w http.ResponseWriter, req *http.Request) {})
+                       s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {})
+                       http.Get(s.URL() + "/")
+
+                       Ω(s.ReceivedRequests()).Should(HaveLen(1))
+               })
+
+               It("clears all handlers and call counts", func() {
+                       s.Reset()
+                       Ω(s.ReceivedRequests()).Should(HaveLen(0))
+                       Ω(func() { s.GetHandler(0) }).Should(Panic())
+               })
+       })
+
+       Describe("closing client connections", func() {
+               It("closes", func() {
+                       s.RouteToHandler("GET", "/",
+                               func(w http.ResponseWriter, req *http.Request) {
+                                       io.WriteString(w, req.RemoteAddr)
+                               },
+                       )
+                       client := http.Client{Transport: &http.Transport{DisableKeepAlives: true}}
+                       resp, err := client.Get(s.URL())
+                       Ω(err).ShouldNot(HaveOccurred())
+                       Ω(resp.StatusCode).Should(Equal(200))
+
+                       body, err := ioutil.ReadAll(resp.Body)
+                       resp.Body.Close()
+                       Ω(err).ShouldNot(HaveOccurred())
+
+                       s.CloseClientConnections()
+
+                       resp, err = client.Get(s.URL())
+                       Ω(err).ShouldNot(HaveOccurred())
+                       Ω(resp.StatusCode).Should(Equal(200))
+
+                       body2, err := ioutil.ReadAll(resp.Body)
+                       resp.Body.Close()
+                       Ω(err).ShouldNot(HaveOccurred())
+
+                       Ω(body2).ShouldNot(Equal(body))
+               })
+       })
+
+       Describe("closing server mulitple times", func() {
+               It("should not fail", func() {
+                       s.Close()
+                       Ω(s.Close).ShouldNot(Panic())
+               })
+       })
+
+       Describe("allowing unhandled requests", func() {
+               Context("when true", func() {
+                       BeforeEach(func() {
+                               s.AllowUnhandledRequests = true
+                               s.UnhandledRequestStatusCode = http.StatusForbidden
+                               resp, err = http.Get(s.URL() + "/foo")
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+
+                       It("should allow unhandled requests and respond with the passed in status code", func() {
+                               Ω(err).ShouldNot(HaveOccurred())
+                               Ω(resp.StatusCode).Should(Equal(http.StatusForbidden))
+
+                               data, err := ioutil.ReadAll(resp.Body)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               Ω(data).Should(BeEmpty())
+                       })
+
+                       It("should record the requests", func() {
+                               Ω(s.ReceivedRequests()).Should(HaveLen(1))
+                               Ω(s.ReceivedRequests()[0].URL.Path).Should(Equal("/foo"))
+                       })
+               })
+
+               Context("when false", func() {
+                       It("should fail when attempting a request", func() {
+                               failures := InterceptGomegaFailures(func() {
+                                       http.Get(s.URL() + "/foo")
+                               })
+
+                               Ω(failures[0]).Should(ContainSubstring("Received Unhandled Request"))
+                       })
+               })
+       })
+
+       Describe("Managing Handlers", func() {
+               var called []string
+               BeforeEach(func() {
+                       called = []string{}
+                       s.RouteToHandler("GET", "/routed", func(w http.ResponseWriter, req *http.Request) {
+                               called = append(called, "r1")
+                       })
+                       s.RouteToHandler("POST", regexp.MustCompile(`/routed\d`), func(w http.ResponseWriter, req *http.Request) {
+                               called = append(called, "r2")
+                       })
+                       s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {
+                               called = append(called, "A")
+                       }, func(w http.ResponseWriter, req *http.Request) {
+                               called = append(called, "B")
+                       })
+               })
+
+               It("should prefer routed handlers if there is a match", func() {
+                       http.Get(s.URL() + "/routed")
+                       http.Post(s.URL()+"/routed7", "application/json", nil)
+                       http.Get(s.URL() + "/foo")
+                       http.Get(s.URL() + "/routed")
+                       http.Post(s.URL()+"/routed9", "application/json", nil)
+                       http.Get(s.URL() + "/bar")
+
+                       failures := InterceptGomegaFailures(func() {
+                               http.Get(s.URL() + "/foo")
+                               http.Get(s.URL() + "/routed/not/a/match")
+                               http.Get(s.URL() + "/routed7")
+                               http.Post(s.URL()+"/routed", "application/json", nil)
+                       })
+
+                       Ω(failures[0]).Should(ContainSubstring("Received Unhandled Request"))
+                       Ω(failures).Should(HaveLen(4))
+
+                       http.Post(s.URL()+"/routed3", "application/json", nil)
+
+                       Ω(called).Should(Equal([]string{"r1", "r2", "A", "r1", "r2", "B", "r2"}))
+               })
+
+               It("should override routed handlers when reregistered", func() {
+                       s.RouteToHandler("GET", "/routed", func(w http.ResponseWriter, req *http.Request) {
+                               called = append(called, "r3")
+                       })
+                       s.RouteToHandler("POST", regexp.MustCompile(`/routed\d`), func(w http.ResponseWriter, req *http.Request) {
+                               called = append(called, "r4")
+                       })
+
+                       http.Get(s.URL() + "/routed")
+                       http.Post(s.URL()+"/routed7", "application/json", nil)
+
+                       Ω(called).Should(Equal([]string{"r3", "r4"}))
+               })
+
+               It("should call the appended handlers, in order, as requests come in", func() {
+                       http.Get(s.URL() + "/foo")
+                       Ω(called).Should(Equal([]string{"A"}))
+
+                       http.Get(s.URL() + "/foo")
+                       Ω(called).Should(Equal([]string{"A", "B"}))
+
+                       failures := InterceptGomegaFailures(func() {
+                               http.Get(s.URL() + "/foo")
+                       })
+
+                       Ω(failures[0]).Should(ContainSubstring("Received Unhandled Request"))
+               })
+
+               Describe("Overwriting an existing handler", func() {
+                       BeforeEach(func() {
+                               s.SetHandler(0, func(w http.ResponseWriter, req *http.Request) {
+                                       called = append(called, "C")
+                               })
+                       })
+
+                       It("should override the specified handler", func() {
+                               http.Get(s.URL() + "/foo")
+                               http.Get(s.URL() + "/foo")
+                               Ω(called).Should(Equal([]string{"C", "B"}))
+                       })
+               })
+
+               Describe("Getting an existing handler", func() {
+                       It("should return the handler func", func() {
+                               s.GetHandler(1)(nil, nil)
+                               Ω(called).Should(Equal([]string{"B"}))
+                       })
+               })
+
+               Describe("Wrapping an existing handler", func() {
+                       BeforeEach(func() {
+                               s.WrapHandler(0, func(w http.ResponseWriter, req *http.Request) {
+                                       called = append(called, "C")
+                               })
+                       })
+
+                       It("should wrap the existing handler in a new handler", func() {
+                               http.Get(s.URL() + "/foo")
+                               http.Get(s.URL() + "/foo")
+                               Ω(called).Should(Equal([]string{"A", "C", "B"}))
+                       })
+               })
+       })
+
+       Describe("When a handler fails", func() {
+               BeforeEach(func() {
+                       s.UnhandledRequestStatusCode = http.StatusForbidden //just to be clear that 500s aren't coming from unhandled requests
+               })
+
+               Context("because the handler has panicked", func() {
+                       BeforeEach(func() {
+                               s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {
+                                       panic("bam")
+                               })
+                       })
+
+                       It("should respond with a 500 and make a failing assertion", func() {
+                               var resp *http.Response
+                               var err error
+
+                               failures := InterceptGomegaFailures(func() {
+                                       resp, err = http.Get(s.URL())
+                               })
+
+                               Ω(err).ShouldNot(HaveOccurred())
+                               Ω(resp.StatusCode).Should(Equal(http.StatusInternalServerError))
+                               Ω(failures).Should(ConsistOf(ContainSubstring("Handler Panicked")))
+                       })
+               })
+
+               Context("because an assertion has failed", func() {
+                       BeforeEach(func() {
+                               s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {
+                                       // Ω(true).Should(BeFalse()) <-- would be nice to do it this way, but the test just can't be written this way
+
+                                       By("We're cheating a bit here -- we're throwing a GINKGO_PANIC which simulates a failed assertion")
+                                       panic(GINKGO_PANIC)
+                               })
+                       })
+
+                       It("should respond with a 500 and *not* make a failing assertion, instead relying on Ginkgo to have already been notified of the error", func() {
+                               resp, err := http.Get(s.URL())
+
+                               Ω(err).ShouldNot(HaveOccurred())
+                               Ω(resp.StatusCode).Should(Equal(http.StatusInternalServerError))
+                       })
+               })
+       })
+
+       Describe("Logging to the Writer", func() {
+               var buf *gbytes.Buffer
+               BeforeEach(func() {
+                       buf = gbytes.NewBuffer()
+                       s.Writer = buf
+                       s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {})
+                       s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {})
+               })
+
+               It("should write to the buffer when a request comes in", func() {
+                       http.Get(s.URL() + "/foo")
+                       Ω(buf).Should(gbytes.Say("GHTTP Received Request: GET - /foo\n"))
+
+                       http.Post(s.URL()+"/bar", "", nil)
+                       Ω(buf).Should(gbytes.Say("GHTTP Received Request: POST - /bar\n"))
+               })
+       })
+
+       Describe("Request Handlers", func() {
+               Describe("VerifyRequest", func() {
+                       BeforeEach(func() {
+                               s.AppendHandlers(VerifyRequest("GET", "/foo"))
+                       })
+
+                       It("should verify the method, path", func() {
+                               resp, err = http.Get(s.URL() + "/foo?baz=bar")
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+
+                       It("should verify the method, path", func() {
+                               failures := InterceptGomegaFailures(func() {
+                                       http.Get(s.URL() + "/foo2")
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+
+                       It("should verify the method, path", func() {
+                               failures := InterceptGomegaFailures(func() {
+                                       http.Post(s.URL()+"/foo", "application/json", nil)
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+
+                       Context("when passed a rawQuery", func() {
+                               It("should also be possible to verify the rawQuery", func() {
+                                       s.SetHandler(0, VerifyRequest("GET", "/foo", "baz=bar"))
+                                       resp, err = http.Get(s.URL() + "/foo?baz=bar")
+                                       Ω(err).ShouldNot(HaveOccurred())
+                               })
+
+                               It("should match irregardless of query parameter ordering", func() {
+                                       s.SetHandler(0, VerifyRequest("GET", "/foo", "type=get&name=money"))
+                                       u, _ := url.Parse(s.URL() + "/foo")
+                                       u.RawQuery = url.Values{
+                                               "type": []string{"get"},
+                                               "name": []string{"money"},
+                                       }.Encode()
+
+                                       resp, err = http.Get(u.String())
+                                       Ω(err).ShouldNot(HaveOccurred())
+                               })
+                       })
+
+                       Context("when passed a matcher for path", func() {
+                               It("should apply the matcher", func() {
+                                       s.SetHandler(0, VerifyRequest("GET", MatchRegexp(`/foo/[a-f]*/3`)))
+                                       resp, err = http.Get(s.URL() + "/foo/abcdefa/3")
+                                       Ω(err).ShouldNot(HaveOccurred())
+                               })
+                       })
+               })
+
+               Describe("VerifyContentType", func() {
+                       BeforeEach(func() {
+                               s.AppendHandlers(CombineHandlers(
+                                       VerifyRequest("GET", "/foo"),
+                                       VerifyContentType("application/octet-stream"),
+                               ))
+                       })
+
+                       It("should verify the content type", func() {
+                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               req.Header.Set("Content-Type", "application/octet-stream")
+
+                               resp, err = http.DefaultClient.Do(req)
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+
+                       It("should verify the content type", func() {
+                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               req.Header.Set("Content-Type", "application/json")
+
+                               failures := InterceptGomegaFailures(func() {
+                                       http.DefaultClient.Do(req)
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+               })
+
+               Describe("Verify BasicAuth", func() {
+                       BeforeEach(func() {
+                               s.AppendHandlers(CombineHandlers(
+                                       VerifyRequest("GET", "/foo"),
+                                       VerifyBasicAuth("bob", "password"),
+                               ))
+                       })
+
+                       It("should verify basic auth", func() {
+                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               req.SetBasicAuth("bob", "password")
+
+                               resp, err = http.DefaultClient.Do(req)
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+
+                       It("should verify basic auth", func() {
+                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               req.SetBasicAuth("bob", "bassword")
+
+                               failures := InterceptGomegaFailures(func() {
+                                       http.DefaultClient.Do(req)
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+
+                       It("should require basic auth header", func() {
+                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               failures := InterceptGomegaFailures(func() {
+                                       http.DefaultClient.Do(req)
+                               })
+                               Ω(failures).Should(ContainElement(ContainSubstring("Authorization header must be specified")))
+                       })
+               })
+
+               Describe("VerifyHeader", func() {
+                       BeforeEach(func() {
+                               s.AppendHandlers(CombineHandlers(
+                                       VerifyRequest("GET", "/foo"),
+                                       VerifyHeader(http.Header{
+                                               "accept":        []string{"jpeg", "png"},
+                                               "cache-control": []string{"omicron"},
+                                               "Return-Path":   []string{"hobbiton"},
+                                       }),
+                               ))
+                       })
+
+                       It("should verify the headers", func() {
+                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               req.Header.Add("Accept", "jpeg")
+                               req.Header.Add("Accept", "png")
+                               req.Header.Add("Cache-Control", "omicron")
+                               req.Header.Add("return-path", "hobbiton")
+
+                               resp, err = http.DefaultClient.Do(req)
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+
+                       It("should verify the headers", func() {
+                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               req.Header.Add("Schmaccept", "jpeg")
+                               req.Header.Add("Schmaccept", "png")
+                               req.Header.Add("Cache-Control", "omicron")
+                               req.Header.Add("return-path", "hobbiton")
+
+                               failures := InterceptGomegaFailures(func() {
+                                       http.DefaultClient.Do(req)
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+               })
+
+               Describe("VerifyHeaderKV", func() {
+                       BeforeEach(func() {
+                               s.AppendHandlers(CombineHandlers(
+                                       VerifyRequest("GET", "/foo"),
+                                       VerifyHeaderKV("accept", "jpeg", "png"),
+                                       VerifyHeaderKV("cache-control", "omicron"),
+                                       VerifyHeaderKV("Return-Path", "hobbiton"),
+                               ))
+                       })
+
+                       It("should verify the headers", func() {
+                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               req.Header.Add("Accept", "jpeg")
+                               req.Header.Add("Accept", "png")
+                               req.Header.Add("Cache-Control", "omicron")
+                               req.Header.Add("return-path", "hobbiton")
+
+                               resp, err = http.DefaultClient.Do(req)
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+
+                       It("should verify the headers", func() {
+                               req, err := http.NewRequest("GET", s.URL()+"/foo", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               req.Header.Add("Accept", "jpeg")
+                               req.Header.Add("Cache-Control", "omicron")
+                               req.Header.Add("return-path", "hobbiton")
+
+                               failures := InterceptGomegaFailures(func() {
+                                       http.DefaultClient.Do(req)
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+               })
+
+               Describe("VerifyBody", func() {
+                       BeforeEach(func() {
+                               s.AppendHandlers(CombineHandlers(
+                                       VerifyRequest("POST", "/foo"),
+                                       VerifyBody([]byte("some body")),
+                               ))
+                       })
+
+                       It("should verify the body", func() {
+                               resp, err = http.Post(s.URL()+"/foo", "", bytes.NewReader([]byte("some body")))
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+
+                       It("should verify the body", func() {
+                               failures := InterceptGomegaFailures(func() {
+                                       http.Post(s.URL()+"/foo", "", bytes.NewReader([]byte("wrong body")))
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+               })
+
+               Describe("VerifyJSON", func() {
+                       BeforeEach(func() {
+                               s.AppendHandlers(CombineHandlers(
+                                       VerifyRequest("POST", "/foo"),
+                                       VerifyJSON(`{"a":3, "b":2}`),
+                               ))
+                       })
+
+                       It("should verify the json body and the content type", func() {
+                               resp, err = http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`{"b":2, "a":3}`)))
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+
+                       It("should verify the json body and the content type", func() {
+                               failures := InterceptGomegaFailures(func() {
+                                       http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`{"b":2, "a":4}`)))
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+
+                       It("should verify the json body and the content type", func() {
+                               failures := InterceptGomegaFailures(func() {
+                                       http.Post(s.URL()+"/foo", "application/not-json", bytes.NewReader([]byte(`{"b":2, "a":3}`)))
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+               })
+
+               Describe("VerifyJSONRepresenting", func() {
+                       BeforeEach(func() {
+                               s.AppendHandlers(CombineHandlers(
+                                       VerifyRequest("POST", "/foo"),
+                                       VerifyJSONRepresenting([]int{1, 3, 5}),
+                               ))
+                       })
+
+                       It("should verify the json body and the content type", func() {
+                               resp, err = http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`[1,3,5]`)))
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+
+                       It("should verify the json body and the content type", func() {
+                               failures := InterceptGomegaFailures(func() {
+                                       http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`[1,3]`)))
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+               })
+
+               Describe("VerifyForm", func() {
+                       var formValues url.Values
+
+                       BeforeEach(func() {
+                               formValues = make(url.Values)
+                               formValues.Add("users", "user1")
+                               formValues.Add("users", "user2")
+                               formValues.Add("group", "users")
+                       })
+
+                       Context("when encoded in the URL", func() {
+                               BeforeEach(func() {
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("GET", "/foo"),
+                                               VerifyForm(url.Values{
+                                                       "users": []string{"user1", "user2"},
+                                                       "group": []string{"users"},
+                                               }),
+                                       ))
+                               })
+
+                               It("should verify form values", func() {
+                                       resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode())
+                                       Ω(err).ShouldNot(HaveOccurred())
+                               })
+
+                               It("should ignore extra values", func() {
+                                       formValues.Add("extra", "value")
+                                       resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode())
+                                       Ω(err).ShouldNot(HaveOccurred())
+                               })
+
+                               It("fail on missing values", func() {
+                                       formValues.Del("group")
+                                       failures := InterceptGomegaFailures(func() {
+                                               resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode())
+                                       })
+                                       Ω(failures).Should(HaveLen(1))
+                               })
+
+                               It("fail on incorrect values", func() {
+                                       formValues.Set("group", "wheel")
+                                       failures := InterceptGomegaFailures(func() {
+                                               resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode())
+                                       })
+                                       Ω(failures).Should(HaveLen(1))
+                               })
+                       })
+
+                       Context("when present in the body", func() {
+                               BeforeEach(func() {
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("POST", "/foo"),
+                                               VerifyForm(url.Values{
+                                                       "users": []string{"user1", "user2"},
+                                                       "group": []string{"users"},
+                                               }),
+                                       ))
+                               })
+
+                               It("should verify form values", func() {
+                                       resp, err = http.PostForm(s.URL()+"/foo", formValues)
+                                       Ω(err).ShouldNot(HaveOccurred())
+                               })
+
+                               It("should ignore extra values", func() {
+                                       formValues.Add("extra", "value")
+                                       resp, err = http.PostForm(s.URL()+"/foo", formValues)
+                                       Ω(err).ShouldNot(HaveOccurred())
+                               })
+
+                               It("fail on missing values", func() {
+                                       formValues.Del("group")
+                                       failures := InterceptGomegaFailures(func() {
+                                               resp, err = http.PostForm(s.URL()+"/foo", formValues)
+                                       })
+                                       Ω(failures).Should(HaveLen(1))
+                               })
+
+                               It("fail on incorrect values", func() {
+                                       formValues.Set("group", "wheel")
+                                       failures := InterceptGomegaFailures(func() {
+                                               resp, err = http.PostForm(s.URL()+"/foo", formValues)
+                                       })
+                                       Ω(failures).Should(HaveLen(1))
+                               })
+                       })
+               })
+
+               Describe("VerifyFormKV", func() {
+                       Context("when encoded in the URL", func() {
+                               BeforeEach(func() {
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("GET", "/foo"),
+                                               VerifyFormKV("users", "user1", "user2"),
+                                       ))
+                               })
+
+                               It("verifies the form value", func() {
+                                       resp, err = http.Get(s.URL() + "/foo?users=user1&users=user2")
+                                       Ω(err).ShouldNot(HaveOccurred())
+                               })
+
+                               It("verifies the form value", func() {
+                                       failures := InterceptGomegaFailures(func() {
+                                               resp, err = http.Get(s.URL() + "/foo?users=user1")
+                                       })
+                                       Ω(failures).Should(HaveLen(1))
+                               })
+                       })
+
+                       Context("when present in the body", func() {
+                               BeforeEach(func() {
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("POST", "/foo"),
+                                               VerifyFormKV("users", "user1", "user2"),
+                                       ))
+                               })
+
+                               It("verifies the form value", func() {
+                                       resp, err = http.PostForm(s.URL()+"/foo", url.Values{"users": []string{"user1", "user2"}})
+                                       Ω(err).ShouldNot(HaveOccurred())
+                               })
+
+                               It("verifies the form value", func() {
+                                       failures := InterceptGomegaFailures(func() {
+                                               resp, err = http.PostForm(s.URL()+"/foo", url.Values{"users": []string{"user1"}})
+                                       })
+                                       Ω(failures).Should(HaveLen(1))
+                               })
+                       })
+               })
+
+               Describe("VerifyProtoRepresenting", func() {
+                       var message *protobuf.SimpleMessage
+
+                       BeforeEach(func() {
+                               message = new(protobuf.SimpleMessage)
+                               message.Description = proto.String("A description")
+                               message.Id = proto.Int32(0)
+
+                               s.AppendHandlers(CombineHandlers(
+                                       VerifyRequest("POST", "/proto"),
+                                       VerifyProtoRepresenting(message),
+                               ))
+                       })
+
+                       It("verifies the proto body and the content type", func() {
+                               serialized, err := proto.Marshal(message)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", bytes.NewReader(serialized))
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+
+                       It("should verify the proto body and the content type", func() {
+                               serialized, err := proto.Marshal(&protobuf.SimpleMessage{
+                                       Description: proto.String("A description"),
+                                       Id:          proto.Int32(0),
+                                       Metadata:    proto.String("some metadata"),
+                               })
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               failures := InterceptGomegaFailures(func() {
+                                       http.Post(s.URL()+"/proto", "application/x-protobuf", bytes.NewReader(serialized))
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+
+                       It("should verify the proto body and the content type", func() {
+                               serialized, err := proto.Marshal(message)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               failures := InterceptGomegaFailures(func() {
+                                       http.Post(s.URL()+"/proto", "application/not-x-protobuf", bytes.NewReader(serialized))
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                       })
+               })
+
+               Describe("RespondWith", func() {
+                       Context("without headers", func() {
+                               BeforeEach(func() {
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("POST", "/foo"),
+                                               RespondWith(http.StatusCreated, "sweet"),
+                                       ), CombineHandlers(
+                                               VerifyRequest("POST", "/foo"),
+                                               RespondWith(http.StatusOK, []byte("sour")),
+                                       ))
+                               })
+
+                               It("should return the response", func() {
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
+
+                                       body, err := ioutil.ReadAll(resp.Body)
+                                       Ω(err).ShouldNot(HaveOccurred())
+                                       Ω(body).Should(Equal([]byte("sweet")))
+
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.StatusCode).Should(Equal(http.StatusOK))
+
+                                       body, err = ioutil.ReadAll(resp.Body)
+                                       Ω(err).ShouldNot(HaveOccurred())
+                                       Ω(body).Should(Equal([]byte("sour")))
+                               })
+                       })
+
+                       Context("with headers", func() {
+                               BeforeEach(func() {
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("POST", "/foo"),
+                                               RespondWith(http.StatusCreated, "sweet", http.Header{"X-Custom-Header": []string{"my header"}}),
+                                       ))
+                               })
+
+                               It("should return the headers too", func() {
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
+                                       Ω(ioutil.ReadAll(resp.Body)).Should(Equal([]byte("sweet")))
+                                       Ω(resp.Header.Get("X-Custom-Header")).Should(Equal("my header"))
+                               })
+                       })
+               })
+
+               Describe("RespondWithPtr", func() {
+                       var code int
+                       var byteBody []byte
+                       var stringBody string
+                       BeforeEach(func() {
+                               code = http.StatusOK
+                               byteBody = []byte("sweet")
+                               stringBody = "sour"
+
+                               s.AppendHandlers(CombineHandlers(
+                                       VerifyRequest("POST", "/foo"),
+                                       RespondWithPtr(&code, &byteBody),
+                               ), CombineHandlers(
+                                       VerifyRequest("POST", "/foo"),
+                                       RespondWithPtr(&code, &stringBody),
+                               ))
+                       })
+
+                       It("should return the response", func() {
+                               code = http.StatusCreated
+                               byteBody = []byte("tasty")
+                               stringBody = "treat"
+
+                               resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
+
+                               body, err := ioutil.ReadAll(resp.Body)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               Ω(body).Should(Equal([]byte("tasty")))
+
+                               resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                               Ω(err).ShouldNot(HaveOccurred())
+
+                               Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
+
+                               body, err = ioutil.ReadAll(resp.Body)
+                               Ω(err).ShouldNot(HaveOccurred())
+                               Ω(body).Should(Equal([]byte("treat")))
+                       })
+
+                       Context("when passed a nil body", func() {
+                               BeforeEach(func() {
+                                       s.SetHandler(0, CombineHandlers(
+                                               VerifyRequest("POST", "/foo"),
+                                               RespondWithPtr(&code, nil),
+                                       ))
+                               })
+
+                               It("should return an empty body and not explode", func() {
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+
+                                       Ω(err).ShouldNot(HaveOccurred())
+                                       Ω(resp.StatusCode).Should(Equal(http.StatusOK))
+                                       body, err := ioutil.ReadAll(resp.Body)
+                                       Ω(err).ShouldNot(HaveOccurred())
+                                       Ω(body).Should(BeEmpty())
+
+                                       Ω(s.ReceivedRequests()).Should(HaveLen(1))
+                               })
+                       })
+               })
+
+               Describe("RespondWithJSON", func() {
+                       Context("when no optional headers are set", func() {
+                               BeforeEach(func() {
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("POST", "/foo"),
+                                               RespondWithJSONEncoded(http.StatusCreated, []int{1, 2, 3}),
+                                       ))
+                               })
+
+                               It("should return the response", func() {
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
+
+                                       body, err := ioutil.ReadAll(resp.Body)
+                                       Ω(err).ShouldNot(HaveOccurred())
+                                       Ω(body).Should(MatchJSON("[1,2,3]"))
+                               })
+
+                               It("should set the Content-Type header to application/json", func() {
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"}))
+                               })
+                       })
+
+                       Context("when optional headers are set", func() {
+                               var headers http.Header
+                               BeforeEach(func() {
+                                       headers = http.Header{"Stuff": []string{"things"}}
+                               })
+
+                               JustBeforeEach(func() {
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("POST", "/foo"),
+                                               RespondWithJSONEncoded(http.StatusCreated, []int{1, 2, 3}, headers),
+                                       ))
+                               })
+
+                               It("should preserve those headers", func() {
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.Header["Stuff"]).Should(Equal([]string{"things"}))
+                               })
+
+                               It("should set the Content-Type header to application/json", func() {
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"}))
+                               })
+
+                               Context("when setting the Content-Type explicitly", func() {
+                                       BeforeEach(func() {
+                                               headers["Content-Type"] = []string{"not-json"}
+                                       })
+
+                                       It("should use the Content-Type header that was explicitly set", func() {
+                                               resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                               Ω(err).ShouldNot(HaveOccurred())
+
+                                               Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-json"}))
+                                       })
+                               })
+                       })
+               })
+
+               Describe("RespondWithJSONPtr", func() {
+                       type testObject struct {
+                               Key   string
+                               Value string
+                       }
+
+                       var code int
+                       var object testObject
+
+                       Context("when no optional headers are set", func() {
+                               BeforeEach(func() {
+                                       code = http.StatusOK
+                                       object = testObject{}
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("POST", "/foo"),
+                                               RespondWithJSONEncodedPtr(&code, &object),
+                                       ))
+                               })
+
+                               It("should return the response", func() {
+                                       code = http.StatusCreated
+                                       object = testObject{
+                                               Key:   "Jim",
+                                               Value: "Codes",
+                                       }
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
+
+                                       body, err := ioutil.ReadAll(resp.Body)
+                                       Ω(err).ShouldNot(HaveOccurred())
+                                       Ω(body).Should(MatchJSON(`{"Key": "Jim", "Value": "Codes"}`))
+                               })
+
+                               It("should set the Content-Type header to application/json", func() {
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"}))
+                               })
+                       })
+
+                       Context("when optional headers are set", func() {
+                               var headers http.Header
+                               BeforeEach(func() {
+                                       headers = http.Header{"Stuff": []string{"things"}}
+                               })
+
+                               JustBeforeEach(func() {
+                                       code = http.StatusOK
+                                       object = testObject{}
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("POST", "/foo"),
+                                               RespondWithJSONEncodedPtr(&code, &object, headers),
+                                       ))
+                               })
+
+                               It("should preserve those headers", func() {
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.Header["Stuff"]).Should(Equal([]string{"things"}))
+                               })
+
+                               It("should set the Content-Type header to application/json", func() {
+                                       resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"}))
+                               })
+
+                               Context("when setting the Content-Type explicitly", func() {
+                                       BeforeEach(func() {
+                                               headers["Content-Type"] = []string{"not-json"}
+                                       })
+
+                                       It("should use the Content-Type header that was explicitly set", func() {
+                                               resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+                                               Ω(err).ShouldNot(HaveOccurred())
+
+                                               Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-json"}))
+                                       })
+                               })
+                       })
+               })
+
+               Describe("RespondWithProto", func() {
+                       var message *protobuf.SimpleMessage
+
+                       BeforeEach(func() {
+                               message = new(protobuf.SimpleMessage)
+                               message.Description = proto.String("A description")
+                               message.Id = proto.Int32(99)
+                       })
+
+                       Context("when no optional headers are set", func() {
+                               BeforeEach(func() {
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("POST", "/proto"),
+                                               RespondWithProto(http.StatusCreated, message),
+                                       ))
+                               })
+
+                               It("should return the response", func() {
+                                       resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.StatusCode).Should(Equal(http.StatusCreated))
+
+                                       var received protobuf.SimpleMessage
+                                       body, err := ioutil.ReadAll(resp.Body)
+                                       err = proto.Unmarshal(body, &received)
+                                       Ω(err).ShouldNot(HaveOccurred())
+                               })
+
+                               It("should set the Content-Type header to application/x-protobuf", func() {
+                                       resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/x-protobuf"}))
+                               })
+                       })
+
+                       Context("when optional headers are set", func() {
+                               var headers http.Header
+                               BeforeEach(func() {
+                                       headers = http.Header{"Stuff": []string{"things"}}
+                               })
+
+                               JustBeforeEach(func() {
+                                       s.AppendHandlers(CombineHandlers(
+                                               VerifyRequest("POST", "/proto"),
+                                               RespondWithProto(http.StatusCreated, message, headers),
+                                       ))
+                               })
+
+                               It("should preserve those headers", func() {
+                                       resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.Header["Stuff"]).Should(Equal([]string{"things"}))
+                               })
+
+                               It("should set the Content-Type header to application/x-protobuf", func() {
+                                       resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil)
+                                       Ω(err).ShouldNot(HaveOccurred())
+
+                                       Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/x-protobuf"}))
+                               })
+
+                               Context("when setting the Content-Type explicitly", func() {
+                                       BeforeEach(func() {
+                                               headers["Content-Type"] = []string{"not-x-protobuf"}
+                                       })
+
+                                       It("should use the Content-Type header that was explicitly set", func() {
+                                               resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil)
+                                               Ω(err).ShouldNot(HaveOccurred())
+
+                                               Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-x-protobuf"}))
+                                       })
+                               })
+                       })
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/gomega_dsl.go b/vendor/github.com/onsi/gomega/gomega_dsl.go
new file mode 100644 (file)
index 0000000..78bd188
--- /dev/null
@@ -0,0 +1,335 @@
+/*
+Gomega is the Ginkgo BDD-style testing framework's preferred matcher library.
+
+The godoc documentation describes Gomega's API.  More comprehensive documentation (with examples!) is available at http://onsi.github.io/gomega/
+
+Gomega on Github: http://github.com/onsi/gomega
+
+Learn more about Ginkgo online: http://onsi.github.io/ginkgo
+
+Ginkgo on Github: http://github.com/onsi/ginkgo
+
+Gomega is MIT-Licensed
+*/
+package gomega
+
+import (
+       "fmt"
+       "reflect"
+       "time"
+
+       "github.com/onsi/gomega/internal/assertion"
+       "github.com/onsi/gomega/internal/asyncassertion"
+       "github.com/onsi/gomega/internal/testingtsupport"
+       "github.com/onsi/gomega/types"
+)
+
+const GOMEGA_VERSION = "1.0"
+
+const nilFailHandlerPanic = `You are trying to make an assertion, but Gomega's fail handler is nil.
+If you're using Ginkgo then you probably forgot to put your assertion in an It().
+Alternatively, you may have forgotten to register a fail handler with RegisterFailHandler() or RegisterTestingT().
+`
+
+var globalFailHandler types.GomegaFailHandler
+
+var defaultEventuallyTimeout = time.Second
+var defaultEventuallyPollingInterval = 10 * time.Millisecond
+var defaultConsistentlyDuration = 100 * time.Millisecond
+var defaultConsistentlyPollingInterval = 10 * time.Millisecond
+
+//RegisterFailHandler connects Ginkgo to Gomega.  When a matcher fails
+//the fail handler passed into RegisterFailHandler is called.
+func RegisterFailHandler(handler types.GomegaFailHandler) {
+       globalFailHandler = handler
+}
+
+//RegisterTestingT connects Gomega to Golang's XUnit style
+//Testing.T tests.  You'll need to call this at the top of each XUnit style test:
+//
+// func TestFarmHasCow(t *testing.T) {
+//     RegisterTestingT(t)
+//
+//        f := farm.New([]string{"Cow", "Horse"})
+//     Expect(f.HasCow()).To(BeTrue(), "Farm should have cow")
+// }
+//
+// Note that this *testing.T is registered *globally* by Gomega (this is why you don't have to
+// pass `t` down to the matcher itself).  This means that you cannot run the XUnit style tests
+// in parallel as the global fail handler cannot point to more than one testing.T at a time.
+//
+// (As an aside: Ginkgo gets around this limitation by running parallel tests in different *processes*).
+func RegisterTestingT(t types.GomegaTestingT) {
+       RegisterFailHandler(testingtsupport.BuildTestingTGomegaFailHandler(t))
+}
+
+//InterceptGomegaHandlers runs a given callback and returns an array of
+//failure messages generated by any Gomega assertions within the callback.
+//
+//This is accomplished by temporarily replacing the *global* fail handler
+//with a fail handler that simply annotates failures.  The original fail handler
+//is reset when InterceptGomegaFailures returns.
+//
+//This is most useful when testing custom matchers, but can also be used to check
+//on a value using a Gomega assertion without causing a test failure.
+func InterceptGomegaFailures(f func()) []string {
+       originalHandler := globalFailHandler
+       failures := []string{}
+       RegisterFailHandler(func(message string, callerSkip ...int) {
+               failures = append(failures, message)
+       })
+       f()
+       RegisterFailHandler(originalHandler)
+       return failures
+}
+
+//Ω wraps an actual value allowing assertions to be made on it:
+//     Ω("foo").Should(Equal("foo"))
+//
+//If Ω is passed more than one argument it will pass the *first* argument to the matcher.
+//All subsequent arguments will be required to be nil/zero.
+//
+//This is convenient if you want to make an assertion on a method/function that returns
+//a value and an error - a common patter in Go.
+//
+//For example, given a function with signature:
+//  func MyAmazingThing() (int, error)
+//
+//Then:
+//    Ω(MyAmazingThing()).Should(Equal(3))
+//Will succeed only if `MyAmazingThing()` returns `(3, nil)`
+//
+//Ω and Expect are identical
+func Ω(actual interface{}, extra ...interface{}) GomegaAssertion {
+       return ExpectWithOffset(0, actual, extra...)
+}
+
+//Expect wraps an actual value allowing assertions to be made on it:
+//     Expect("foo").To(Equal("foo"))
+//
+//If Expect is passed more than one argument it will pass the *first* argument to the matcher.
+//All subsequent arguments will be required to be nil/zero.
+//
+//This is convenient if you want to make an assertion on a method/function that returns
+//a value and an error - a common patter in Go.
+//
+//For example, given a function with signature:
+//  func MyAmazingThing() (int, error)
+//
+//Then:
+//    Expect(MyAmazingThing()).Should(Equal(3))
+//Will succeed only if `MyAmazingThing()` returns `(3, nil)`
+//
+//Expect and Ω are identical
+func Expect(actual interface{}, extra ...interface{}) GomegaAssertion {
+       return ExpectWithOffset(0, actual, extra...)
+}
+
+//ExpectWithOffset wraps an actual value allowing assertions to be made on it:
+//    ExpectWithOffset(1, "foo").To(Equal("foo"))
+//
+//Unlike `Expect` and `Ω`, `ExpectWithOffset` takes an additional integer argument
+//this is used to modify the call-stack offset when computing line numbers.
+//
+//This is most useful in helper functions that make assertions.  If you want Gomega's
+//error message to refer to the calling line in the test (as opposed to the line in the helper function)
+//set the first argument of `ExpectWithOffset` appropriately.
+func ExpectWithOffset(offset int, actual interface{}, extra ...interface{}) GomegaAssertion {
+       if globalFailHandler == nil {
+               panic(nilFailHandlerPanic)
+       }
+       return assertion.New(actual, globalFailHandler, offset, extra...)
+}
+
+//Eventually wraps an actual value allowing assertions to be made on it.
+//The assertion is tried periodically until it passes or a timeout occurs.
+//
+//Both the timeout and polling interval are configurable as optional arguments:
+//The first optional argument is the timeout
+//The second optional argument is the polling interval
+//
+//Both intervals can either be specified as time.Duration, parsable duration strings or as floats/integers.  In the
+//last case they are interpreted as seconds.
+//
+//If Eventually is passed an actual that is a function taking no arguments and returning at least one value,
+//then Eventually will call the function periodically and try the matcher against the function's first return value.
+//
+//Example:
+//
+//    Eventually(func() int {
+//        return thingImPolling.Count()
+//    }).Should(BeNumerically(">=", 17))
+//
+//Note that this example could be rewritten:
+//
+//    Eventually(thingImPolling.Count).Should(BeNumerically(">=", 17))
+//
+//If the function returns more than one value, then Eventually will pass the first value to the matcher and
+//assert that all other values are nil/zero.
+//This allows you to pass Eventually a function that returns a value and an error - a common pattern in Go.
+//
+//For example, consider a method that returns a value and an error:
+//    func FetchFromDB() (string, error)
+//
+//Then
+//    Eventually(FetchFromDB).Should(Equal("hasselhoff"))
+//
+//Will pass only if the the returned error is nil and the returned string passes the matcher.
+//
+//Eventually's default timeout is 1 second, and its default polling interval is 10ms
+func Eventually(actual interface{}, intervals ...interface{}) GomegaAsyncAssertion {
+       return EventuallyWithOffset(0, actual, intervals...)
+}
+
+//EventuallyWithOffset operates like Eventually but takes an additional
+//initial argument to indicate an offset in the call stack.  This is useful when building helper
+//functions that contain matchers.  To learn more, read about `ExpectWithOffset`.
+func EventuallyWithOffset(offset int, actual interface{}, intervals ...interface{}) GomegaAsyncAssertion {
+       if globalFailHandler == nil {
+               panic(nilFailHandlerPanic)
+       }
+       timeoutInterval := defaultEventuallyTimeout
+       pollingInterval := defaultEventuallyPollingInterval
+       if len(intervals) > 0 {
+               timeoutInterval = toDuration(intervals[0])
+       }
+       if len(intervals) > 1 {
+               pollingInterval = toDuration(intervals[1])
+       }
+       return asyncassertion.New(asyncassertion.AsyncAssertionTypeEventually, actual, globalFailHandler, timeoutInterval, pollingInterval, offset)
+}
+
+//Consistently wraps an actual value allowing assertions to be made on it.
+//The assertion is tried periodically and is required to pass for a period of time.
+//
+//Both the total time and polling interval are configurable as optional arguments:
+//The first optional argument is the duration that Consistently will run for
+//The second optional argument is the polling interval
+//
+//Both intervals can either be specified as time.Duration, parsable duration strings or as floats/integers.  In the
+//last case they are interpreted as seconds.
+//
+//If Consistently is passed an actual that is a function taking no arguments and returning at least one value,
+//then Consistently will call the function periodically and try the matcher against the function's first return value.
+//
+//If the function returns more than one value, then Consistently will pass the first value to the matcher and
+//assert that all other values are nil/zero.
+//This allows you to pass Consistently a function that returns a value and an error - a common pattern in Go.
+//
+//Consistently is useful in cases where you want to assert that something *does not happen* over a period of tiem.
+//For example, you want to assert that a goroutine does *not* send data down a channel.  In this case, you could:
+//
+//  Consistently(channel).ShouldNot(Receive())
+//
+//Consistently's default duration is 100ms, and its default polling interval is 10ms
+func Consistently(actual interface{}, intervals ...interface{}) GomegaAsyncAssertion {
+       return ConsistentlyWithOffset(0, actual, intervals...)
+}
+
+//ConsistentlyWithOffset operates like Consistnetly but takes an additional
+//initial argument to indicate an offset in the call stack.  This is useful when building helper
+//functions that contain matchers.  To learn more, read about `ExpectWithOffset`.
+func ConsistentlyWithOffset(offset int, actual interface{}, intervals ...interface{}) GomegaAsyncAssertion {
+       if globalFailHandler == nil {
+               panic(nilFailHandlerPanic)
+       }
+       timeoutInterval := defaultConsistentlyDuration
+       pollingInterval := defaultConsistentlyPollingInterval
+       if len(intervals) > 0 {
+               timeoutInterval = toDuration(intervals[0])
+       }
+       if len(intervals) > 1 {
+               pollingInterval = toDuration(intervals[1])
+       }
+       return asyncassertion.New(asyncassertion.AsyncAssertionTypeConsistently, actual, globalFailHandler, timeoutInterval, pollingInterval, offset)
+}
+
+//Set the default timeout duration for Eventually.  Eventually will repeatedly poll your condition until it succeeds, or until this timeout elapses.
+func SetDefaultEventuallyTimeout(t time.Duration) {
+       defaultEventuallyTimeout = t
+}
+
+//Set the default polling interval for Eventually.
+func SetDefaultEventuallyPollingInterval(t time.Duration) {
+       defaultEventuallyPollingInterval = t
+}
+
+//Set the default duration for Consistently.  Consistently will verify that your condition is satsified for this long.
+func SetDefaultConsistentlyDuration(t time.Duration) {
+       defaultConsistentlyDuration = t
+}
+
+//Set the default polling interval for Consistently.
+func SetDefaultConsistentlyPollingInterval(t time.Duration) {
+       defaultConsistentlyPollingInterval = t
+}
+
+//GomegaAsyncAssertion is returned by Eventually and Consistently and polls the actual value passed into Eventually against
+//the matcher passed to the Should and ShouldNot methods.
+//
+//Both Should and ShouldNot take a variadic optionalDescription argument.  This is passed on to
+//fmt.Sprintf() and is used to annotate failure messages.  This allows you to make your failure messages more
+//descriptive
+//
+//Both Should and ShouldNot return a boolean that is true if the assertion passed and false if it failed.
+//
+//Example:
+//
+//  Eventually(myChannel).Should(Receive(), "Something should have come down the pipe.")
+//  Consistently(myChannel).ShouldNot(Receive(), "Nothing should have come down the pipe.")
+type GomegaAsyncAssertion interface {
+       Should(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
+       ShouldNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
+}
+
+//GomegaAssertion is returned by Ω and Expect and compares the actual value to the matcher
+//passed to the Should/ShouldNot and To/ToNot/NotTo methods.
+//
+//Typically Should/ShouldNot are used with Ω and To/ToNot/NotTo are used with Expect
+//though this is not enforced.
+//
+//All methods take a variadic optionalDescription argument.  This is passed on to fmt.Sprintf()
+//and is used to annotate failure messages.
+//
+//All methods return a bool that is true if hte assertion passed and false if it failed.
+//
+//Example:
+//
+//   Ω(farm.HasCow()).Should(BeTrue(), "Farm %v should have a cow", farm)
+type GomegaAssertion interface {
+       Should(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
+       ShouldNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
+
+       To(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
+       ToNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
+       NotTo(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
+}
+
+//OmegaMatcher is deprecated in favor of the better-named and better-organized types.GomegaMatcher but sticks around to support existing code that uses it
+type OmegaMatcher types.GomegaMatcher
+
+func toDuration(input interface{}) time.Duration {
+       duration, ok := input.(time.Duration)
+       if ok {
+               return duration
+       }
+
+       value := reflect.ValueOf(input)
+       kind := reflect.TypeOf(input).Kind()
+
+       if reflect.Int <= kind && kind <= reflect.Int64 {
+               return time.Duration(value.Int()) * time.Second
+       } else if reflect.Uint <= kind && kind <= reflect.Uint64 {
+               return time.Duration(value.Uint()) * time.Second
+       } else if reflect.Float32 <= kind && kind <= reflect.Float64 {
+               return time.Duration(value.Float() * float64(time.Second))
+       } else if reflect.String == kind {
+               duration, err := time.ParseDuration(value.String())
+               if err != nil {
+                       panic(fmt.Sprintf("%#v is not a valid parsable duration string.", input))
+               }
+               return duration
+       }
+
+       panic(fmt.Sprintf("%v is not a valid interval.  Must be time.Duration, parsable duration string or a number.", input))
+}
diff --git a/vendor/github.com/onsi/gomega/gstruct/elements.go b/vendor/github.com/onsi/gomega/gstruct/elements.go
new file mode 100644 (file)
index 0000000..a315fa1
--- /dev/null
@@ -0,0 +1,145 @@
+package gstruct
+
+import (
+       "errors"
+       "fmt"
+       "reflect"
+       "runtime/debug"
+
+       "github.com/onsi/gomega/format"
+       errorsutil "github.com/onsi/gomega/gstruct/errors"
+       "github.com/onsi/gomega/types"
+)
+
+//MatchAllElements succeeds if every element of a slice matches the element matcher it maps to
+//through the id function, and every element matcher is matched.
+//  Expect([]string{"a", "b"}).To(MatchAllElements(idFn, matchers.Elements{
+//      "a": BeEqual("a"),
+//      "b": BeEqual("b"),
+//  })
+func MatchAllElements(identifier Identifier, elements Elements) types.GomegaMatcher {
+       return &ElementsMatcher{
+               Identifier: identifier,
+               Elements:   elements,
+       }
+}
+
+//MatchElements succeeds if each element of a slice matches the element matcher it maps to
+//through the id function. It can ignore extra elements and/or missing elements.
+//  Expect([]string{"a", "c"}).To(MatchElements(idFn, IgnoreMissing|IgnoreExtra, matchers.Elements{
+//      "a": BeEqual("a")
+//      "b": BeEqual("b"),
+//  })
+func MatchElements(identifier Identifier, options Options, elements Elements) types.GomegaMatcher {
+       return &ElementsMatcher{
+               Identifier:      identifier,
+               Elements:        elements,
+               IgnoreExtras:    options&IgnoreExtras != 0,
+               IgnoreMissing:   options&IgnoreMissing != 0,
+               AllowDuplicates: options&AllowDuplicates != 0,
+       }
+}
+
+// ElementsMatcher is a NestingMatcher that applies custom matchers to each element of a slice mapped
+// by the Identifier function.
+// TODO: Extend this to work with arrays & maps (map the key) as well.
+type ElementsMatcher struct {
+       // Matchers for each element.
+       Elements Elements
+       // Function mapping an element to the string key identifying its matcher.
+       Identifier Identifier
+
+       // Whether to ignore extra elements or consider it an error.
+       IgnoreExtras bool
+       // Whether to ignore missing elements or consider it an error.
+       IgnoreMissing bool
+       // Whether to key duplicates when matching IDs.
+       AllowDuplicates bool
+
+       // State.
+       failures []error
+}
+
+// Element ID to matcher.
+type Elements map[string]types.GomegaMatcher
+
+// Function for identifying (mapping) elements.
+type Identifier func(element interface{}) string
+
+func (m *ElementsMatcher) Match(actual interface{}) (success bool, err error) {
+       if reflect.TypeOf(actual).Kind() != reflect.Slice {
+               return false, fmt.Errorf("%v is type %T, expected slice", actual, actual)
+       }
+
+       m.failures = m.matchElements(actual)
+       if len(m.failures) > 0 {
+               return false, nil
+       }
+       return true, nil
+}
+
+func (m *ElementsMatcher) matchElements(actual interface{}) (errs []error) {
+       // Provide more useful error messages in the case of a panic.
+       defer func() {
+               if err := recover(); err != nil {
+                       errs = append(errs, fmt.Errorf("panic checking %+v: %v\n%s", actual, err, debug.Stack()))
+               }
+       }()
+
+       val := reflect.ValueOf(actual)
+       elements := map[string]bool{}
+       for i := 0; i < val.Len(); i++ {
+               element := val.Index(i).Interface()
+               id := m.Identifier(element)
+               if elements[id] {
+                       if !m.AllowDuplicates {
+                               errs = append(errs, fmt.Errorf("found duplicate element ID %s", id))
+                               continue
+                       }
+               }
+               elements[id] = true
+
+               matcher, expected := m.Elements[id]
+               if !expected {
+                       if !m.IgnoreExtras {
+                               errs = append(errs, fmt.Errorf("unexpected element %s", id))
+                       }
+                       continue
+               }
+
+               match, err := matcher.Match(element)
+               if match {
+                       continue
+               }
+
+               if err == nil {
+                       if nesting, ok := matcher.(errorsutil.NestingMatcher); ok {
+                               err = errorsutil.AggregateError(nesting.Failures())
+                       } else {
+                               err = errors.New(matcher.FailureMessage(element))
+                       }
+               }
+               errs = append(errs, errorsutil.Nest(fmt.Sprintf("[%s]", id), err))
+       }
+
+       for id := range m.Elements {
+               if !elements[id] && !m.IgnoreMissing {
+                       errs = append(errs, fmt.Errorf("missing expected element %s", id))
+               }
+       }
+
+       return errs
+}
+
+func (m *ElementsMatcher) FailureMessage(actual interface{}) (message string) {
+       failure := errorsutil.AggregateError(m.failures)
+       return format.Message(actual, fmt.Sprintf("to match elements: %v", failure))
+}
+
+func (m *ElementsMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to match elements")
+}
+
+func (m *ElementsMatcher) Failures() []error {
+       return m.failures
+}
diff --git a/vendor/github.com/onsi/gomega/gstruct/elements_test.go b/vendor/github.com/onsi/gomega/gstruct/elements_test.go
new file mode 100644 (file)
index 0000000..8ba78cb
--- /dev/null
@@ -0,0 +1,144 @@
+package gstruct_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/gstruct"
+)
+
+var _ = Describe("Slice", func() {
+       allElements := []string{"a", "b"}
+       missingElements := []string{"a"}
+       extraElements := []string{"a", "b", "c"}
+       duplicateElements := []string{"a", "a", "b"}
+       empty := []string{}
+       var nils []string
+
+       It("should strictly match all elements", func() {
+               m := MatchAllElements(id, Elements{
+                       "b": Equal("b"),
+                       "a": Equal("a"),
+               })
+               Ω(allElements).Should(m, "should match all elements")
+               Ω(missingElements).ShouldNot(m, "should fail with missing elements")
+               Ω(extraElements).ShouldNot(m, "should fail with extra elements")
+               Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements")
+               Ω(nils).ShouldNot(m, "should fail with an uninitialized slice")
+
+               m = MatchAllElements(id, Elements{
+                       "a": Equal("a"),
+                       "b": Equal("fail"),
+               })
+               Ω(allElements).ShouldNot(m, "should run nested matchers")
+
+               m = MatchAllElements(id, Elements{})
+               Ω(empty).Should(m, "should handle empty slices")
+               Ω(allElements).ShouldNot(m, "should handle only empty slices")
+               Ω(nils).Should(m, "should handle nil slices")
+       })
+
+       It("should ignore extra elements", func() {
+               m := MatchElements(id, IgnoreExtras, Elements{
+                       "b": Equal("b"),
+                       "a": Equal("a"),
+               })
+               Ω(allElements).Should(m, "should match all elements")
+               Ω(missingElements).ShouldNot(m, "should fail with missing elements")
+               Ω(extraElements).Should(m, "should ignore extra elements")
+               Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements")
+               Ω(nils).ShouldNot(m, "should fail with an uninitialized slice")
+       })
+
+       It("should ignore missing elements", func() {
+               m := MatchElements(id, IgnoreMissing, Elements{
+                       "a": Equal("a"),
+                       "b": Equal("b"),
+               })
+               Ω(allElements).Should(m, "should match all elements")
+               Ω(missingElements).Should(m, "should ignore missing elements")
+               Ω(extraElements).ShouldNot(m, "should fail with extra elements")
+               Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements")
+               Ω(nils).Should(m, "should ignore an uninitialized slice")
+       })
+
+       It("should ignore missing and extra elements", func() {
+               m := MatchElements(id, IgnoreMissing|IgnoreExtras, Elements{
+                       "a": Equal("a"),
+                       "b": Equal("b"),
+               })
+               Ω(allElements).Should(m, "should match all elements")
+               Ω(missingElements).Should(m, "should ignore missing elements")
+               Ω(extraElements).Should(m, "should ignore extra elements")
+               Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements")
+               Ω(nils).Should(m, "should ignore an uninitialized slice")
+
+               m = MatchElements(id, IgnoreExtras|IgnoreMissing, Elements{
+                       "a": Equal("a"),
+                       "b": Equal("fail"),
+               })
+               Ω(allElements).ShouldNot(m, "should run nested matchers")
+       })
+
+       Context("with elements that share a key", func() {
+               nonUniqueID := func(element interface{}) string {
+                       return element.(string)[0:1]
+               }
+
+               allElements := []string{"a123", "a213", "b321"}
+               includingBadElements := []string{"a123", "b123", "b5555"}
+               extraElements := []string{"a123", "b1234", "c345"}
+               missingElements := []string{"b123", "b1234", "b1345"}
+
+               It("should strictly allow multiple matches", func() {
+                       m := MatchElements(nonUniqueID, AllowDuplicates, Elements{
+                               "a": ContainSubstring("1"),
+                               "b": ContainSubstring("1"),
+                       })
+                       Ω(allElements).Should(m, "should match all elements")
+                       Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher")
+                       Ω(extraElements).ShouldNot(m, "should reject with extra keys")
+                       Ω(missingElements).ShouldNot(m, "should reject with missing keys")
+                       Ω(nils).ShouldNot(m, "should fail with an uninitialized slice")
+               })
+
+               It("should ignore missing", func() {
+                       m := MatchElements(nonUniqueID, AllowDuplicates|IgnoreMissing, Elements{
+                               "a": ContainSubstring("1"),
+                               "b": ContainSubstring("1"),
+                       })
+                       Ω(allElements).Should(m, "should match all elements")
+                       Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher")
+                       Ω(extraElements).ShouldNot(m, "should reject with extra keys")
+                       Ω(missingElements).Should(m, "should allow missing keys")
+                       Ω(nils).Should(m, "should allow an uninitialized slice")
+               })
+
+               It("should ignore extras", func() {
+                       m := MatchElements(nonUniqueID, AllowDuplicates|IgnoreExtras, Elements{
+                               "a": ContainSubstring("1"),
+                               "b": ContainSubstring("1"),
+                       })
+                       Ω(allElements).Should(m, "should match all elements")
+                       Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher")
+                       Ω(extraElements).Should(m, "should allow extra keys")
+                       Ω(missingElements).ShouldNot(m, "should reject missing keys")
+                       Ω(nils).ShouldNot(m, "should reject an uninitialized slice")
+               })
+
+               It("should ignore missing and extras", func() {
+                       m := MatchElements(nonUniqueID, AllowDuplicates|IgnoreExtras|IgnoreMissing, Elements{
+                               "a": ContainSubstring("1"),
+                               "b": ContainSubstring("1"),
+                       })
+                       Ω(allElements).Should(m, "should match all elements")
+                       Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher")
+                       Ω(extraElements).Should(m, "should allow extra keys")
+                       Ω(missingElements).Should(m, "should allow missing keys")
+                       Ω(nils).Should(m, "should allow an uninitialized slice")
+               })
+       })
+})
+
+func id(element interface{}) string {
+       return element.(string)
+}
diff --git a/vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go b/vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go
new file mode 100644 (file)
index 0000000..188492b
--- /dev/null
@@ -0,0 +1,72 @@
+package errors
+
+import (
+       "fmt"
+       "strings"
+
+       "github.com/onsi/gomega/types"
+)
+
+// A stateful matcher that nests other matchers within it and preserves the error types of the
+// nested matcher failures.
+type NestingMatcher interface {
+       types.GomegaMatcher
+
+       // Returns the failures of nested matchers.
+       Failures() []error
+}
+
+// An error type for labeling errors on deeply nested matchers.
+type NestedError struct {
+       Path string
+       Err  error
+}
+
+func (e *NestedError) Error() string {
+       // Indent Errors.
+       indented := strings.Replace(e.Err.Error(), "\n", "\n\t", -1)
+       return fmt.Sprintf("%s:\n\t%v", e.Path, indented)
+}
+
+// Create a NestedError with the given path.
+// If err is a NestedError, prepend the path to it.
+// If err is an AggregateError, recursively Nest each error.
+func Nest(path string, err error) error {
+       if ag, ok := err.(AggregateError); ok {
+               var errs AggregateError
+               for _, e := range ag {
+                       errs = append(errs, Nest(path, e))
+               }
+               return errs
+       }
+       if ne, ok := err.(*NestedError); ok {
+               return &NestedError{
+                       Path: path + ne.Path,
+                       Err:  ne.Err,
+               }
+       }
+       return &NestedError{
+               Path: path,
+               Err:  err,
+       }
+}
+
+// An error type for treating multiple errors as a single error.
+type AggregateError []error
+
+// Error is part of the error interface.
+func (err AggregateError) Error() string {
+       if len(err) == 0 {
+               // This should never happen, really.
+               return ""
+       }
+       if len(err) == 1 {
+               return err[0].Error()
+       }
+       result := fmt.Sprintf("[%s", err[0].Error())
+       for i := 1; i < len(err); i++ {
+               result += fmt.Sprintf(", %s", err[i].Error())
+       }
+       result += "]"
+       return result
+}
diff --git a/vendor/github.com/onsi/gomega/gstruct/fields.go b/vendor/github.com/onsi/gomega/gstruct/fields.go
new file mode 100644 (file)
index 0000000..f3c1575
--- /dev/null
@@ -0,0 +1,141 @@
+package gstruct
+
+import (
+       "errors"
+       "fmt"
+       "reflect"
+       "runtime/debug"
+       "strings"
+
+       "github.com/onsi/gomega/format"
+       errorsutil "github.com/onsi/gomega/gstruct/errors"
+       "github.com/onsi/gomega/types"
+)
+
+//MatchAllFields succeeds if every field of a struct matches the field matcher associated with
+//it, and every element matcher is matched.
+//  Expect([]string{"a", "b"}).To(MatchAllFields(idFn, gstruct.Fields{
+//      "a": BeEqual("a"),
+//      "b": BeEqual("b"),
+//  })
+func MatchAllFields(fields Fields) types.GomegaMatcher {
+       return &FieldsMatcher{
+               Fields: fields,
+       }
+}
+
+//MatchFields succeeds if each element of a struct matches the field matcher associated with
+//it. It can ignore extra fields and/or missing fields.
+//  Expect([]string{"a", "c"}).To(MatchFields(idFn, IgnoreMissing|IgnoreExtra, gstruct.Fields{
+//      "a": BeEqual("a")
+//      "b": BeEqual("b"),
+//  })
+func MatchFields(options Options, fields Fields) types.GomegaMatcher {
+       return &FieldsMatcher{
+               Fields:        fields,
+               IgnoreExtras:  options&IgnoreExtras != 0,
+               IgnoreMissing: options&IgnoreMissing != 0,
+       }
+}
+
+type FieldsMatcher struct {
+       // Matchers for each field.
+       Fields Fields
+
+       // Whether to ignore extra elements or consider it an error.
+       IgnoreExtras bool
+       // Whether to ignore missing elements or consider it an error.
+       IgnoreMissing bool
+
+       // State.
+       failures []error
+}
+
+// Field name to matcher.
+type Fields map[string]types.GomegaMatcher
+
+func (m *FieldsMatcher) Match(actual interface{}) (success bool, err error) {
+       if reflect.TypeOf(actual).Kind() != reflect.Struct {
+               return false, fmt.Errorf("%v is type %T, expected struct", actual, actual)
+       }
+
+       m.failures = m.matchFields(actual)
+       if len(m.failures) > 0 {
+               return false, nil
+       }
+       return true, nil
+}
+
+func (m *FieldsMatcher) matchFields(actual interface{}) (errs []error) {
+       val := reflect.ValueOf(actual)
+       typ := val.Type()
+       fields := map[string]bool{}
+       for i := 0; i < val.NumField(); i++ {
+               fieldName := typ.Field(i).Name
+               fields[fieldName] = true
+
+               err := func() (err error) {
+                       // This test relies heavily on reflect, which tends to panic.
+                       // Recover here to provide more useful error messages in that case.
+                       defer func() {
+                               if r := recover(); r != nil {
+                                       err = fmt.Errorf("panic checking %+v: %v\n%s", actual, r, debug.Stack())
+                               }
+                       }()
+
+                       matcher, expected := m.Fields[fieldName]
+                       if !expected {
+                               if !m.IgnoreExtras {
+                                       return fmt.Errorf("unexpected field %s: %+v", fieldName, actual)
+                               }
+                               return nil
+                       }
+
+                       var field interface{}
+                       if val.Field(i).IsValid() {
+                               field = val.Field(i).Interface()
+                       } else {
+                               field = reflect.Zero(typ.Field(i).Type)
+                       }
+
+                       match, err := matcher.Match(field)
+                       if err != nil {
+                               return err
+                       } else if !match {
+                               if nesting, ok := matcher.(errorsutil.NestingMatcher); ok {
+                                       return errorsutil.AggregateError(nesting.Failures())
+                               }
+                               return errors.New(matcher.FailureMessage(field))
+                       }
+                       return nil
+               }()
+               if err != nil {
+                       errs = append(errs, errorsutil.Nest("."+fieldName, err))
+               }
+       }
+
+       for field := range m.Fields {
+               if !fields[field] && !m.IgnoreMissing {
+                       errs = append(errs, fmt.Errorf("missing expected field %s", field))
+               }
+       }
+
+       return errs
+}
+
+func (m *FieldsMatcher) FailureMessage(actual interface{}) (message string) {
+       failures := make([]string, len(m.failures))
+       for i := range m.failures {
+               failures[i] = m.failures[i].Error()
+       }
+       return format.Message(reflect.TypeOf(actual).Name(),
+               fmt.Sprintf("to match fields: {\n%v\n}\n", strings.Join(failures, "\n")))
+}
+
+func (m *FieldsMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to match fields")
+}
+
+func (m *FieldsMatcher) Failures() []error {
+       return m.failures
+}
diff --git a/vendor/github.com/onsi/gomega/gstruct/fields_test.go b/vendor/github.com/onsi/gomega/gstruct/fields_test.go
new file mode 100644 (file)
index 0000000..61f4afc
--- /dev/null
@@ -0,0 +1,76 @@
+package gstruct_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/gstruct"
+)
+
+var _ = Describe("Struct", func() {
+       allFields := struct{ A, B string }{"a", "b"}
+       missingFields := struct{ A string }{"a"}
+       extraFields := struct{ A, B, C string }{"a", "b", "c"}
+       emptyFields := struct{ A, B string }{}
+
+       It("should strictly match all fields", func() {
+               m := MatchAllFields(Fields{
+                       "B": Equal("b"),
+                       "A": Equal("a"),
+               })
+               Ω(allFields).Should(m, "should match all fields")
+               Ω(missingFields).ShouldNot(m, "should fail with missing fields")
+               Ω(extraFields).ShouldNot(m, "should fail with extra fields")
+               Ω(emptyFields).ShouldNot(m, "should fail with empty fields")
+
+               m = MatchAllFields(Fields{
+                       "A": Equal("a"),
+                       "B": Equal("fail"),
+               })
+               Ω(allFields).ShouldNot(m, "should run nested matchers")
+       })
+
+       It("should handle empty structs", func() {
+               m := MatchAllFields(Fields{})
+               Ω(struct{}{}).Should(m, "should handle empty structs")
+               Ω(allFields).ShouldNot(m, "should fail with extra fields")
+       })
+
+       It("should ignore missing fields", func() {
+               m := MatchFields(IgnoreMissing, Fields{
+                       "B": Equal("b"),
+                       "A": Equal("a"),
+               })
+               Ω(allFields).Should(m, "should match all fields")
+               Ω(missingFields).Should(m, "should ignore missing fields")
+               Ω(extraFields).ShouldNot(m, "should fail with extra fields")
+               Ω(emptyFields).ShouldNot(m, "should fail with empty fields")
+       })
+
+       It("should ignore extra fields", func() {
+               m := MatchFields(IgnoreExtras, Fields{
+                       "B": Equal("b"),
+                       "A": Equal("a"),
+               })
+               Ω(allFields).Should(m, "should match all fields")
+               Ω(missingFields).ShouldNot(m, "should fail with missing fields")
+               Ω(extraFields).Should(m, "should ignore extra fields")
+               Ω(emptyFields).ShouldNot(m, "should fail with empty fields")
+       })
+
+       It("should ignore missing and extra fields", func() {
+               m := MatchFields(IgnoreMissing|IgnoreExtras, Fields{
+                       "B": Equal("b"),
+                       "A": Equal("a"),
+               })
+               Ω(allFields).Should(m, "should match all fields")
+               Ω(missingFields).Should(m, "should ignore missing fields")
+               Ω(extraFields).Should(m, "should ignore extra fields")
+               Ω(emptyFields).ShouldNot(m, "should fail with empty fields")
+
+               m = MatchFields(IgnoreMissing|IgnoreExtras, Fields{
+                       "A": Equal("a"),
+                       "B": Equal("fail"),
+               })
+               Ω(allFields).ShouldNot(m, "should run nested matchers")
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go b/vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go
new file mode 100644 (file)
index 0000000..d475663
--- /dev/null
@@ -0,0 +1,13 @@
+package gstruct_test
+
+import (
+       "testing"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+func Test(t *testing.T) {
+       RegisterFailHandler(Fail)
+       RunSpecs(t, "Gstruct Suite")
+}
diff --git a/vendor/github.com/onsi/gomega/gstruct/ignore.go b/vendor/github.com/onsi/gomega/gstruct/ignore.go
new file mode 100644 (file)
index 0000000..0365f32
--- /dev/null
@@ -0,0 +1,37 @@
+package gstruct
+
+import (
+       "github.com/onsi/gomega/types"
+)
+
+//Ignore ignores the actual value and always succeeds.
+//  Expect(nil).To(Ignore())
+//  Expect(true).To(Ignore())
+func Ignore() types.GomegaMatcher {
+       return &IgnoreMatcher{true}
+}
+
+//Reject ignores the actual value and always fails. It can be used in conjunction with IgnoreMissing
+//to catch problematic elements, or to verify tests are running.
+//  Expect(nil).NotTo(Reject())
+//  Expect(true).NotTo(Reject())
+func Reject() types.GomegaMatcher {
+       return &IgnoreMatcher{false}
+}
+
+// A matcher that either always succeeds or always fails.
+type IgnoreMatcher struct {
+       Succeed bool
+}
+
+func (m *IgnoreMatcher) Match(actual interface{}) (bool, error) {
+       return m.Succeed, nil
+}
+
+func (m *IgnoreMatcher) FailureMessage(_ interface{}) (message string) {
+       return "Unconditional failure"
+}
+
+func (m *IgnoreMatcher) NegatedFailureMessage(_ interface{}) (message string) {
+       return "Unconditional success"
+}
diff --git a/vendor/github.com/onsi/gomega/gstruct/ignore_test.go b/vendor/github.com/onsi/gomega/gstruct/ignore_test.go
new file mode 100644 (file)
index 0000000..70e1d40
--- /dev/null
@@ -0,0 +1,23 @@
+package gstruct_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/gstruct"
+)
+
+var _ = Describe("Ignore", func() {
+       It("should always succeed", func() {
+               Ω(nil).Should(Ignore())
+               Ω(struct{}{}).Should(Ignore())
+               Ω(0).Should(Ignore())
+               Ω(false).Should(Ignore())
+       })
+
+       It("should always fail", func() {
+               Ω(nil).ShouldNot(Reject())
+               Ω(struct{}{}).ShouldNot(Reject())
+               Ω(1).ShouldNot(Reject())
+               Ω(true).ShouldNot(Reject())
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/gstruct/pointer.go b/vendor/github.com/onsi/gomega/gstruct/pointer.go
new file mode 100644 (file)
index 0000000..0a2f35d
--- /dev/null
@@ -0,0 +1,56 @@
+package gstruct
+
+import (
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/format"
+       "github.com/onsi/gomega/types"
+)
+
+//PointTo applies the given matcher to the value pointed to by actual. It fails if the pointer is
+//nil.
+//  actual := 5
+//  Expect(&actual).To(PointTo(Equal(5)))
+func PointTo(matcher types.GomegaMatcher) types.GomegaMatcher {
+       return &PointerMatcher{
+               Matcher: matcher,
+       }
+}
+
+type PointerMatcher struct {
+       Matcher types.GomegaMatcher
+
+       // Failure message.
+       failure string
+}
+
+func (m *PointerMatcher) Match(actual interface{}) (bool, error) {
+       val := reflect.ValueOf(actual)
+
+       // return error if actual type is not a pointer
+       if val.Kind() != reflect.Ptr {
+               return false, fmt.Errorf("PointerMatcher expects a pointer but we have '%s'", val.Kind())
+       }
+
+       if !val.IsValid() || val.IsNil() {
+               m.failure = format.Message(actual, "not to be <nil>")
+               return false, nil
+       }
+
+       // Forward the value.
+       elem := val.Elem().Interface()
+       match, err := m.Matcher.Match(elem)
+       if !match {
+               m.failure = m.Matcher.FailureMessage(elem)
+       }
+       return match, err
+}
+
+func (m *PointerMatcher) FailureMessage(_ interface{}) (message string) {
+       return m.failure
+}
+
+func (m *PointerMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return m.Matcher.NegatedFailureMessage(actual)
+}
diff --git a/vendor/github.com/onsi/gomega/gstruct/pointer_test.go b/vendor/github.com/onsi/gomega/gstruct/pointer_test.go
new file mode 100644 (file)
index 0000000..b02081c
--- /dev/null
@@ -0,0 +1,33 @@
+package gstruct_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/gstruct"
+)
+
+var _ = Describe("PointTo", func() {
+       It("should fail when passed nil", func() {
+               var p *struct{}
+               Ω(p).Should(BeNil())
+       })
+
+       It("should succeed when passed non-nil pointer", func() {
+               var s struct{}
+               Ω(&s).Should(PointTo(Ignore()))
+       })
+
+       It("should unwrap the pointee value", func() {
+               i := 1
+               Ω(&i).Should(PointTo(Equal(1)))
+               Ω(&i).ShouldNot(PointTo(Equal(2)))
+       })
+
+       It("should work with nested pointers", func() {
+               i := 1
+               ip := &i
+               ipp := &ip
+               Ω(ipp).Should(PointTo(PointTo(Equal(1))))
+               Ω(ipp).ShouldNot(PointTo(PointTo(Equal(2))))
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/gstruct/types.go b/vendor/github.com/onsi/gomega/gstruct/types.go
new file mode 100644 (file)
index 0000000..48cbbe8
--- /dev/null
@@ -0,0 +1,15 @@
+package gstruct
+
+//Options is the type for options passed to some matchers.
+type Options int
+
+const (
+       //IgnoreExtras tells the matcher to ignore extra elements or fields, rather than triggering a failure.
+       IgnoreExtras Options = 1 << iota
+       //IgnoreMissing tells the matcher to ignore missing elements or fields, rather than triggering a failure.
+       IgnoreMissing
+       //AllowDuplicates tells the matcher to permit multiple members of the slice to produce the same ID when
+       //considered by the indentifier function. All members that map to a given key must still match successfully
+       //with the matcher that is provided for that key.
+       AllowDuplicates
+)
diff --git a/vendor/github.com/onsi/gomega/internal/assertion/assertion.go b/vendor/github.com/onsi/gomega/internal/assertion/assertion.go
new file mode 100644 (file)
index 0000000..b73673f
--- /dev/null
@@ -0,0 +1,98 @@
+package assertion
+
+import (
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/types"
+)
+
+type Assertion struct {
+       actualInput interface{}
+       fail        types.GomegaFailHandler
+       offset      int
+       extra       []interface{}
+}
+
+func New(actualInput interface{}, fail types.GomegaFailHandler, offset int, extra ...interface{}) *Assertion {
+       return &Assertion{
+               actualInput: actualInput,
+               fail:        fail,
+               offset:      offset,
+               extra:       extra,
+       }
+}
+
+func (assertion *Assertion) Should(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool {
+       return assertion.vetExtras(optionalDescription...) && assertion.match(matcher, true, optionalDescription...)
+}
+
+func (assertion *Assertion) ShouldNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool {
+       return assertion.vetExtras(optionalDescription...) && assertion.match(matcher, false, optionalDescription...)
+}
+
+func (assertion *Assertion) To(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool {
+       return assertion.vetExtras(optionalDescription...) && assertion.match(matcher, true, optionalDescription...)
+}
+
+func (assertion *Assertion) ToNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool {
+       return assertion.vetExtras(optionalDescription...) && assertion.match(matcher, false, optionalDescription...)
+}
+
+func (assertion *Assertion) NotTo(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool {
+       return assertion.vetExtras(optionalDescription...) && assertion.match(matcher, false, optionalDescription...)
+}
+
+func (assertion *Assertion) buildDescription(optionalDescription ...interface{}) string {
+       switch len(optionalDescription) {
+       case 0:
+               return ""
+       default:
+               return fmt.Sprintf(optionalDescription[0].(string), optionalDescription[1:]...) + "\n"
+       }
+}
+
+func (assertion *Assertion) match(matcher types.GomegaMatcher, desiredMatch bool, optionalDescription ...interface{}) bool {
+       matches, err := matcher.Match(assertion.actualInput)
+       description := assertion.buildDescription(optionalDescription...)
+       if err != nil {
+               assertion.fail(description+err.Error(), 2+assertion.offset)
+               return false
+       }
+       if matches != desiredMatch {
+               var message string
+               if desiredMatch {
+                       message = matcher.FailureMessage(assertion.actualInput)
+               } else {
+                       message = matcher.NegatedFailureMessage(assertion.actualInput)
+               }
+               assertion.fail(description+message, 2+assertion.offset)
+               return false
+       }
+
+       return true
+}
+
+func (assertion *Assertion) vetExtras(optionalDescription ...interface{}) bool {
+       success, message := vetExtras(assertion.extra)
+       if success {
+               return true
+       }
+
+       description := assertion.buildDescription(optionalDescription...)
+       assertion.fail(description+message, 2+assertion.offset)
+       return false
+}
+
+func vetExtras(extras []interface{}) (bool, string) {
+       for i, extra := range extras {
+               if extra != nil {
+                       zeroValue := reflect.Zero(reflect.TypeOf(extra)).Interface()
+                       if !reflect.DeepEqual(zeroValue, extra) {
+                               message := fmt.Sprintf("Unexpected non-nil/non-zero extra argument at index %d:\n\t<%T>: %#v", i+1, extra, extra)
+                               return false, message
+                       }
+               }
+       }
+       return true, ""
+}
diff --git a/vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go b/vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go
new file mode 100644 (file)
index 0000000..dae47a4
--- /dev/null
@@ -0,0 +1,13 @@
+package assertion_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+
+       "testing"
+)
+
+func TestAssertion(t *testing.T) {
+       RegisterFailHandler(Fail)
+       RunSpecs(t, "Assertion Suite")
+}
diff --git a/vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go b/vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go
new file mode 100644 (file)
index 0000000..c03b7a3
--- /dev/null
@@ -0,0 +1,252 @@
+package assertion_test
+
+import (
+       "errors"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/internal/assertion"
+       "github.com/onsi/gomega/internal/fakematcher"
+)
+
+var _ = Describe("Assertion", func() {
+       var (
+               a                 *Assertion
+               failureMessage    string
+               failureCallerSkip int
+               matcher           *fakematcher.FakeMatcher
+       )
+
+       input := "The thing I'm testing"
+
+       var fakeFailHandler = func(message string, callerSkip ...int) {
+               failureMessage = message
+               if len(callerSkip) == 1 {
+                       failureCallerSkip = callerSkip[0]
+               }
+       }
+
+       BeforeEach(func() {
+               matcher = &fakematcher.FakeMatcher{}
+               failureMessage = ""
+               failureCallerSkip = 0
+               a = New(input, fakeFailHandler, 1)
+       })
+
+       Context("when called", func() {
+               It("should pass the provided input value to the matcher", func() {
+                       a.Should(matcher)
+
+                       Ω(matcher.ReceivedActual).Should(Equal(input))
+                       matcher.ReceivedActual = ""
+
+                       a.ShouldNot(matcher)
+
+                       Ω(matcher.ReceivedActual).Should(Equal(input))
+                       matcher.ReceivedActual = ""
+
+                       a.To(matcher)
+
+                       Ω(matcher.ReceivedActual).Should(Equal(input))
+                       matcher.ReceivedActual = ""
+
+                       a.ToNot(matcher)
+
+                       Ω(matcher.ReceivedActual).Should(Equal(input))
+                       matcher.ReceivedActual = ""
+
+                       a.NotTo(matcher)
+
+                       Ω(matcher.ReceivedActual).Should(Equal(input))
+               })
+       })
+
+       Context("when the matcher succeeds", func() {
+               BeforeEach(func() {
+                       matcher.MatchesToReturn = true
+                       matcher.ErrToReturn = nil
+               })
+
+               Context("and a positive assertion is being made", func() {
+                       It("should not call the failure callback", func() {
+                               a.Should(matcher)
+                               Ω(failureMessage).Should(Equal(""))
+                       })
+
+                       It("should be true", func() {
+                               Ω(a.Should(matcher)).Should(BeTrue())
+                       })
+               })
+
+               Context("and a negative assertion is being made", func() {
+                       It("should call the failure callback", func() {
+                               a.ShouldNot(matcher)
+                               Ω(failureMessage).Should(Equal("negative: The thing I'm testing"))
+                               Ω(failureCallerSkip).Should(Equal(3))
+                       })
+
+                       It("should be false", func() {
+                               Ω(a.ShouldNot(matcher)).Should(BeFalse())
+                       })
+               })
+       })
+
+       Context("when the matcher fails", func() {
+               BeforeEach(func() {
+                       matcher.MatchesToReturn = false
+                       matcher.ErrToReturn = nil
+               })
+
+               Context("and a positive assertion is being made", func() {
+                       It("should call the failure callback", func() {
+                               a.Should(matcher)
+                               Ω(failureMessage).Should(Equal("positive: The thing I'm testing"))
+                               Ω(failureCallerSkip).Should(Equal(3))
+                       })
+
+                       It("should be false", func() {
+                               Ω(a.Should(matcher)).Should(BeFalse())
+                       })
+               })
+
+               Context("and a negative assertion is being made", func() {
+                       It("should not call the failure callback", func() {
+                               a.ShouldNot(matcher)
+                               Ω(failureMessage).Should(Equal(""))
+                       })
+
+                       It("should be true", func() {
+                               Ω(a.ShouldNot(matcher)).Should(BeTrue())
+                       })
+               })
+       })
+
+       Context("When reporting a failure", func() {
+               BeforeEach(func() {
+                       matcher.MatchesToReturn = false
+                       matcher.ErrToReturn = nil
+               })
+
+               Context("and there is an optional description", func() {
+                       It("should append the description to the failure message", func() {
+                               a.Should(matcher, "A description")
+                               Ω(failureMessage).Should(Equal("A description\npositive: The thing I'm testing"))
+                               Ω(failureCallerSkip).Should(Equal(3))
+                       })
+               })
+
+               Context("and there are multiple arguments to the optional description", func() {
+                       It("should append the formatted description to the failure message", func() {
+                               a.Should(matcher, "A description of [%d]", 3)
+                               Ω(failureMessage).Should(Equal("A description of [3]\npositive: The thing I'm testing"))
+                               Ω(failureCallerSkip).Should(Equal(3))
+                       })
+               })
+       })
+
+       Context("When the matcher returns an error", func() {
+               BeforeEach(func() {
+                       matcher.ErrToReturn = errors.New("Kaboom!")
+               })
+
+               Context("and a positive assertion is being made", func() {
+                       It("should call the failure callback", func() {
+                               matcher.MatchesToReturn = true
+                               a.Should(matcher)
+                               Ω(failureMessage).Should(Equal("Kaboom!"))
+                               Ω(failureCallerSkip).Should(Equal(3))
+                       })
+               })
+
+               Context("and a negative assertion is being made", func() {
+                       It("should call the failure callback", func() {
+                               matcher.MatchesToReturn = false
+                               a.ShouldNot(matcher)
+                               Ω(failureMessage).Should(Equal("Kaboom!"))
+                               Ω(failureCallerSkip).Should(Equal(3))
+                       })
+               })
+
+               It("should always be false", func() {
+                       Ω(a.Should(matcher)).Should(BeFalse())
+                       Ω(a.ShouldNot(matcher)).Should(BeFalse())
+               })
+       })
+
+       Context("when there are extra parameters", func() {
+               It("(a simple example)", func() {
+                       Ω(func() (string, int, error) {
+                               return "foo", 0, nil
+                       }()).Should(Equal("foo"))
+               })
+
+               Context("when the parameters are all nil or zero", func() {
+                       It("should invoke the matcher", func() {
+                               matcher.MatchesToReturn = true
+                               matcher.ErrToReturn = nil
+
+                               var typedNil []string
+                               a = New(input, fakeFailHandler, 1, 0, nil, typedNil)
+
+                               result := a.Should(matcher)
+                               Ω(result).Should(BeTrue())
+                               Ω(matcher.ReceivedActual).Should(Equal(input))
+
+                               Ω(failureMessage).Should(BeZero())
+                       })
+               })
+
+               Context("when any of the parameters are not nil or zero", func() {
+                       It("should call the failure callback", func() {
+                               matcher.MatchesToReturn = false
+                               matcher.ErrToReturn = nil
+
+                               a = New(input, fakeFailHandler, 1, errors.New("foo"))
+                               result := a.Should(matcher)
+                               Ω(result).Should(BeFalse())
+                               Ω(matcher.ReceivedActual).Should(BeZero(), "The matcher doesn't even get called")
+                               Ω(failureMessage).Should(ContainSubstring("foo"))
+                               failureMessage = ""
+
+                               a = New(input, fakeFailHandler, 1, nil, 1)
+                               result = a.ShouldNot(matcher)
+                               Ω(result).Should(BeFalse())
+                               Ω(failureMessage).Should(ContainSubstring("1"))
+                               failureMessage = ""
+
+                               a = New(input, fakeFailHandler, 1, nil, 0, []string{"foo"})
+                               result = a.To(matcher)
+                               Ω(result).Should(BeFalse())
+                               Ω(failureMessage).Should(ContainSubstring("foo"))
+                               failureMessage = ""
+
+                               a = New(input, fakeFailHandler, 1, nil, 0, []string{"foo"})
+                               result = a.ToNot(matcher)
+                               Ω(result).Should(BeFalse())
+                               Ω(failureMessage).Should(ContainSubstring("foo"))
+                               failureMessage = ""
+
+                               a = New(input, fakeFailHandler, 1, nil, 0, []string{"foo"})
+                               result = a.NotTo(matcher)
+                               Ω(result).Should(BeFalse())
+                               Ω(failureMessage).Should(ContainSubstring("foo"))
+                               Ω(failureCallerSkip).Should(Equal(3))
+                       })
+               })
+       })
+
+       Context("Making an assertion without a registered fail handler", func() {
+               It("should panic", func() {
+                       defer func() {
+                               e := recover()
+                               RegisterFailHandler(Fail)
+                               if e == nil {
+                                       Fail("expected a panic to have occurred")
+                               }
+                       }()
+
+                       RegisterFailHandler(nil)
+                       Ω(true).Should(BeTrue())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go
new file mode 100644 (file)
index 0000000..bce0853
--- /dev/null
@@ -0,0 +1,189 @@
+package asyncassertion
+
+import (
+       "errors"
+       "fmt"
+       "reflect"
+       "time"
+
+       "github.com/onsi/gomega/internal/oraclematcher"
+       "github.com/onsi/gomega/types"
+)
+
+type AsyncAssertionType uint
+
+const (
+       AsyncAssertionTypeEventually AsyncAssertionType = iota
+       AsyncAssertionTypeConsistently
+)
+
+type AsyncAssertion struct {
+       asyncType       AsyncAssertionType
+       actualInput     interface{}
+       timeoutInterval time.Duration
+       pollingInterval time.Duration
+       fail            types.GomegaFailHandler
+       offset          int
+}
+
+func New(asyncType AsyncAssertionType, actualInput interface{}, fail types.GomegaFailHandler, timeoutInterval time.Duration, pollingInterval time.Duration, offset int) *AsyncAssertion {
+       actualType := reflect.TypeOf(actualInput)
+       if actualType.Kind() == reflect.Func {
+               if actualType.NumIn() != 0 || actualType.NumOut() == 0 {
+                       panic("Expected a function with no arguments and one or more return values.")
+               }
+       }
+
+       return &AsyncAssertion{
+               asyncType:       asyncType,
+               actualInput:     actualInput,
+               fail:            fail,
+               timeoutInterval: timeoutInterval,
+               pollingInterval: pollingInterval,
+               offset:          offset,
+       }
+}
+
+func (assertion *AsyncAssertion) Should(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool {
+       return assertion.match(matcher, true, optionalDescription...)
+}
+
+func (assertion *AsyncAssertion) ShouldNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool {
+       return assertion.match(matcher, false, optionalDescription...)
+}
+
+func (assertion *AsyncAssertion) buildDescription(optionalDescription ...interface{}) string {
+       switch len(optionalDescription) {
+       case 0:
+               return ""
+       default:
+               return fmt.Sprintf(optionalDescription[0].(string), optionalDescription[1:]...) + "\n"
+       }
+}
+
+func (assertion *AsyncAssertion) actualInputIsAFunction() bool {
+       actualType := reflect.TypeOf(assertion.actualInput)
+       return actualType.Kind() == reflect.Func && actualType.NumIn() == 0 && actualType.NumOut() > 0
+}
+
+func (assertion *AsyncAssertion) pollActual() (interface{}, error) {
+       if assertion.actualInputIsAFunction() {
+               values := reflect.ValueOf(assertion.actualInput).Call([]reflect.Value{})
+
+               extras := []interface{}{}
+               for _, value := range values[1:] {
+                       extras = append(extras, value.Interface())
+               }
+
+               success, message := vetExtras(extras)
+
+               if !success {
+                       return nil, errors.New(message)
+               }
+
+               return values[0].Interface(), nil
+       }
+
+       return assertion.actualInput, nil
+}
+
+func (assertion *AsyncAssertion) matcherMayChange(matcher types.GomegaMatcher, value interface{}) bool {
+       if assertion.actualInputIsAFunction() {
+               return true
+       }
+
+       return oraclematcher.MatchMayChangeInTheFuture(matcher, value)
+}
+
+func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch bool, optionalDescription ...interface{}) bool {
+       timer := time.Now()
+       timeout := time.After(assertion.timeoutInterval)
+
+       description := assertion.buildDescription(optionalDescription...)
+
+       var matches bool
+       var err error
+       mayChange := true
+       value, err := assertion.pollActual()
+       if err == nil {
+               mayChange = assertion.matcherMayChange(matcher, value)
+               matches, err = matcher.Match(value)
+       }
+
+       fail := func(preamble string) {
+               errMsg := ""
+               message := ""
+               if err != nil {
+                       errMsg = "Error: " + err.Error()
+               } else {
+                       if desiredMatch {
+                               message = matcher.FailureMessage(value)
+                       } else {
+                               message = matcher.NegatedFailureMessage(value)
+                       }
+               }
+               assertion.fail(fmt.Sprintf("%s after %.3fs.\n%s%s%s", preamble, time.Since(timer).Seconds(), description, message, errMsg), 3+assertion.offset)
+       }
+
+       if assertion.asyncType == AsyncAssertionTypeEventually {
+               for {
+                       if err == nil && matches == desiredMatch {
+                               return true
+                       }
+
+                       if !mayChange {
+                               fail("No future change is possible.  Bailing out early")
+                               return false
+                       }
+
+                       select {
+                       case <-time.After(assertion.pollingInterval):
+                               value, err = assertion.pollActual()
+                               if err == nil {
+                                       mayChange = assertion.matcherMayChange(matcher, value)
+                                       matches, err = matcher.Match(value)
+                               }
+                       case <-timeout:
+                               fail("Timed out")
+                               return false
+                       }
+               }
+       } else if assertion.asyncType == AsyncAssertionTypeConsistently {
+               for {
+                       if !(err == nil && matches == desiredMatch) {
+                               fail("Failed")
+                               return false
+                       }
+
+                       if !mayChange {
+                               return true
+                       }
+
+                       select {
+                       case <-time.After(assertion.pollingInterval):
+                               value, err = assertion.pollActual()
+                               if err == nil {
+                                       mayChange = assertion.matcherMayChange(matcher, value)
+                                       matches, err = matcher.Match(value)
+                               }
+                       case <-timeout:
+                               return true
+                       }
+               }
+       }
+
+       return false
+}
+
+func vetExtras(extras []interface{}) (bool, string) {
+       for i, extra := range extras {
+               if extra != nil {
+                       zeroValue := reflect.Zero(reflect.TypeOf(extra)).Interface()
+                       if !reflect.DeepEqual(zeroValue, extra) {
+                               message := fmt.Sprintf("Unexpected non-nil/non-zero extra argument at index %d:\n\t<%T>: %#v", i+1, extra, extra)
+                               return false, message
+                       }
+               }
+       }
+       return true, ""
+}
diff --git a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go
new file mode 100644 (file)
index 0000000..bdb0c3d
--- /dev/null
@@ -0,0 +1,13 @@
+package asyncassertion_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+
+       "testing"
+)
+
+func TestAsyncAssertion(t *testing.T) {
+       RegisterFailHandler(Fail)
+       RunSpecs(t, "AsyncAssertion Suite")
+}
diff --git a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go
new file mode 100644 (file)
index 0000000..3d7e348
--- /dev/null
@@ -0,0 +1,345 @@
+package asyncassertion_test
+
+import (
+       "errors"
+       "time"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/internal/asyncassertion"
+)
+
+var _ = Describe("Async Assertion", func() {
+       var (
+               failureMessage string
+               callerSkip     int
+       )
+
+       var fakeFailHandler = func(message string, skip ...int) {
+               failureMessage = message
+               callerSkip = skip[0]
+       }
+
+       BeforeEach(func() {
+               failureMessage = ""
+               callerSkip = 0
+       })
+
+       Describe("Eventually", func() {
+               Context("the positive case", func() {
+                       It("should poll the function and matcher", func() {
+                               counter := 0
+                               a := New(AsyncAssertionTypeEventually, func() int {
+                                       counter++
+                                       return counter
+                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                               a.Should(BeNumerically("==", 5))
+                               Ω(failureMessage).Should(BeZero())
+                       })
+
+                       It("should continue when the matcher errors", func() {
+                               counter := 0
+                               a := New(AsyncAssertionTypeEventually, func() interface{} {
+                                       counter++
+                                       if counter == 5 {
+                                               return "not-a-number" //this should cause the matcher to error
+                                       }
+                                       return counter
+                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                               a.Should(BeNumerically("==", 5), "My description %d", 2)
+
+                               Ω(failureMessage).Should(ContainSubstring("Timed out after"))
+                               Ω(failureMessage).Should(ContainSubstring("My description 2"))
+                               Ω(callerSkip).Should(Equal(4))
+                       })
+
+                       It("should be able to timeout", func() {
+                               counter := 0
+                               a := New(AsyncAssertionTypeEventually, func() int {
+                                       counter++
+                                       return counter
+                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                               a.Should(BeNumerically(">", 100), "My description %d", 2)
+
+                               Ω(counter).Should(BeNumerically(">", 8))
+                               Ω(counter).Should(BeNumerically("<=", 10))
+                               Ω(failureMessage).Should(ContainSubstring("Timed out after"))
+                               Ω(failureMessage).Should(MatchRegexp(`\<int\>: \d`), "Should pass the correct value to the matcher message formatter.")
+                               Ω(failureMessage).Should(ContainSubstring("My description 2"))
+                               Ω(callerSkip).Should(Equal(4))
+                       })
+               })
+
+               Context("the negative case", func() {
+                       It("should poll the function and matcher", func() {
+                               counter := 0
+                               a := New(AsyncAssertionTypeEventually, func() int {
+                                       counter += 1
+                                       return counter
+                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                               a.ShouldNot(BeNumerically("<", 3))
+
+                               Ω(counter).Should(Equal(3))
+                               Ω(failureMessage).Should(BeZero())
+                       })
+
+                       It("should timeout when the matcher errors", func() {
+                               a := New(AsyncAssertionTypeEventually, func() interface{} {
+                                       return 0 //this should cause the matcher to error
+                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                               a.ShouldNot(HaveLen(0), "My description %d", 2)
+
+                               Ω(failureMessage).Should(ContainSubstring("Timed out after"))
+                               Ω(failureMessage).Should(ContainSubstring("Error:"))
+                               Ω(failureMessage).Should(ContainSubstring("My description 2"))
+                               Ω(callerSkip).Should(Equal(4))
+                       })
+
+                       It("should be able to timeout", func() {
+                               a := New(AsyncAssertionTypeEventually, func() int {
+                                       return 0
+                               }, fakeFailHandler, time.Duration(0.1*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                               a.ShouldNot(Equal(0), "My description %d", 2)
+
+                               Ω(failureMessage).Should(ContainSubstring("Timed out after"))
+                               Ω(failureMessage).Should(ContainSubstring("<int>: 0"), "Should pass the correct value to the matcher message formatter.")
+                               Ω(failureMessage).Should(ContainSubstring("My description 2"))
+                               Ω(callerSkip).Should(Equal(4))
+                       })
+               })
+
+               Context("with a function that returns multiple values", func() {
+                       It("should eventually succeed if the additional arguments are nil", func() {
+                               i := 0
+                               Eventually(func() (int, error) {
+                                       i++
+                                       return i, nil
+                               }).Should(Equal(10))
+                       })
+
+                       It("should eventually timeout if the additional arguments are not nil", func() {
+                               i := 0
+                               a := New(AsyncAssertionTypeEventually, func() (int, error) {
+                                       i++
+                                       return i, errors.New("bam")
+                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+                               a.Should(Equal(2))
+
+                               Ω(failureMessage).Should(ContainSubstring("Timed out after"))
+                               Ω(failureMessage).Should(ContainSubstring("Error:"))
+                               Ω(failureMessage).Should(ContainSubstring("bam"))
+                               Ω(callerSkip).Should(Equal(4))
+                       })
+               })
+
+               Context("Making an assertion without a registered fail handler", func() {
+                       It("should panic", func() {
+                               defer func() {
+                                       e := recover()
+                                       RegisterFailHandler(Fail)
+                                       if e == nil {
+                                               Fail("expected a panic to have occurred")
+                                       }
+                               }()
+
+                               RegisterFailHandler(nil)
+                               c := make(chan bool, 1)
+                               c <- true
+                               Eventually(c).Should(Receive())
+                       })
+               })
+       })
+
+       Describe("Consistently", func() {
+               Describe("The positive case", func() {
+                       Context("when the matcher consistently passes for the duration", func() {
+                               It("should pass", func() {
+                                       calls := 0
+                                       a := New(AsyncAssertionTypeConsistently, func() string {
+                                               calls++
+                                               return "foo"
+                                       }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                                       a.Should(Equal("foo"))
+                                       Ω(calls).Should(BeNumerically(">", 8))
+                                       Ω(calls).Should(BeNumerically("<=", 10))
+                                       Ω(failureMessage).Should(BeZero())
+                               })
+                       })
+
+                       Context("when the matcher fails at some point", func() {
+                               It("should fail", func() {
+                                       calls := 0
+                                       a := New(AsyncAssertionTypeConsistently, func() interface{} {
+                                               calls++
+                                               if calls > 5 {
+                                                       return "bar"
+                                               }
+                                               return "foo"
+                                       }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                                       a.Should(Equal("foo"))
+                                       Ω(failureMessage).Should(ContainSubstring("to equal"))
+                                       Ω(callerSkip).Should(Equal(4))
+                               })
+                       })
+
+                       Context("when the matcher errors at some point", func() {
+                               It("should fail", func() {
+                                       calls := 0
+                                       a := New(AsyncAssertionTypeConsistently, func() interface{} {
+                                               calls++
+                                               if calls > 5 {
+                                                       return 3
+                                               }
+                                               return []int{1, 2, 3}
+                                       }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                                       a.Should(HaveLen(3))
+                                       Ω(failureMessage).Should(ContainSubstring("HaveLen matcher expects"))
+                                       Ω(callerSkip).Should(Equal(4))
+                               })
+                       })
+               })
+
+               Describe("The negative case", func() {
+                       Context("when the matcher consistently passes for the duration", func() {
+                               It("should pass", func() {
+                                       c := make(chan bool)
+                                       a := New(AsyncAssertionTypeConsistently, c, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                                       a.ShouldNot(Receive())
+                                       Ω(failureMessage).Should(BeZero())
+                               })
+                       })
+
+                       Context("when the matcher fails at some point", func() {
+                               It("should fail", func() {
+                                       c := make(chan bool)
+                                       go func() {
+                                               time.Sleep(time.Duration(100 * time.Millisecond))
+                                               c <- true
+                                       }()
+
+                                       a := New(AsyncAssertionTypeConsistently, c, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                                       a.ShouldNot(Receive())
+                                       Ω(failureMessage).Should(ContainSubstring("not to receive anything"))
+                               })
+                       })
+
+                       Context("when the matcher errors at some point", func() {
+                               It("should fail", func() {
+                                       calls := 0
+                                       a := New(AsyncAssertionTypeConsistently, func() interface{} {
+                                               calls++
+                                               return calls
+                                       }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+
+                                       a.ShouldNot(BeNumerically(">", 5))
+                                       Ω(failureMessage).Should(ContainSubstring("not to be >"))
+                                       Ω(callerSkip).Should(Equal(4))
+                               })
+                       })
+               })
+
+               Context("with a function that returns multiple values", func() {
+                       It("should consistently succeed if the additional arguments are nil", func() {
+                               i := 2
+                               Consistently(func() (int, error) {
+                                       i++
+                                       return i, nil
+                               }).Should(BeNumerically(">=", 2))
+                       })
+
+                       It("should eventually timeout if the additional arguments are not nil", func() {
+                               i := 2
+                               a := New(AsyncAssertionTypeEventually, func() (int, error) {
+                                       i++
+                                       return i, errors.New("bam")
+                               }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1)
+                               a.Should(BeNumerically(">=", 2))
+
+                               Ω(failureMessage).Should(ContainSubstring("Error:"))
+                               Ω(failureMessage).Should(ContainSubstring("bam"))
+                               Ω(callerSkip).Should(Equal(4))
+                       })
+               })
+
+               Context("Making an assertion without a registered fail handler", func() {
+                       It("should panic", func() {
+                               defer func() {
+                                       e := recover()
+                                       RegisterFailHandler(Fail)
+                                       if e == nil {
+                                               Fail("expected a panic to have occurred")
+                                       }
+                               }()
+
+                               RegisterFailHandler(nil)
+                               c := make(chan bool)
+                               Consistently(c).ShouldNot(Receive())
+                       })
+               })
+       })
+
+       Context("when passed a function with the wrong # or arguments & returns", func() {
+               It("should panic", func() {
+                       Ω(func() {
+                               New(AsyncAssertionTypeEventually, func() {}, fakeFailHandler, 0, 0, 1)
+                       }).Should(Panic())
+
+                       Ω(func() {
+                               New(AsyncAssertionTypeEventually, func(a string) int { return 0 }, fakeFailHandler, 0, 0, 1)
+                       }).Should(Panic())
+
+                       Ω(func() {
+                               New(AsyncAssertionTypeEventually, func() int { return 0 }, fakeFailHandler, 0, 0, 1)
+                       }).ShouldNot(Panic())
+
+                       Ω(func() {
+                               New(AsyncAssertionTypeEventually, func() (int, error) { return 0, nil }, fakeFailHandler, 0, 0, 1)
+                       }).ShouldNot(Panic())
+               })
+       })
+
+       Describe("bailing early", func() {
+               Context("when actual is a value", func() {
+                       It("Eventually should bail out and fail early if the matcher says to", func() {
+                               c := make(chan bool)
+                               close(c)
+
+                               t := time.Now()
+                               failures := InterceptGomegaFailures(func() {
+                                       Eventually(c, 0.1).Should(Receive())
+                               })
+                               Ω(time.Since(t)).Should(BeNumerically("<", 90*time.Millisecond))
+
+                               Ω(failures).Should(HaveLen(1))
+                       })
+               })
+
+               Context("when actual is a function", func() {
+                       It("should never bail early", func() {
+                               c := make(chan bool)
+                               close(c)
+
+                               t := time.Now()
+                               failures := InterceptGomegaFailures(func() {
+                                       Eventually(func() chan bool {
+                                               return c
+                                       }, 0.1).Should(Receive())
+                               })
+                               Ω(time.Since(t)).Should(BeNumerically(">=", 90*time.Millisecond))
+
+                               Ω(failures).Should(HaveLen(1))
+                       })
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go b/vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go
new file mode 100644 (file)
index 0000000..6e351a7
--- /dev/null
@@ -0,0 +1,23 @@
+package fakematcher
+
+import "fmt"
+
+type FakeMatcher struct {
+       ReceivedActual  interface{}
+       MatchesToReturn bool
+       ErrToReturn     error
+}
+
+func (matcher *FakeMatcher) Match(actual interface{}) (bool, error) {
+       matcher.ReceivedActual = actual
+
+       return matcher.MatchesToReturn, matcher.ErrToReturn
+}
+
+func (matcher *FakeMatcher) FailureMessage(actual interface{}) string {
+       return fmt.Sprintf("positive: %v", actual)
+}
+
+func (matcher *FakeMatcher) NegatedFailureMessage(actual interface{}) string {
+       return fmt.Sprintf("negative: %v", actual)
+}
diff --git a/vendor/github.com/onsi/gomega/internal/oraclematcher/oracle_matcher.go b/vendor/github.com/onsi/gomega/internal/oraclematcher/oracle_matcher.go
new file mode 100644 (file)
index 0000000..66cad88
--- /dev/null
@@ -0,0 +1,25 @@
+package oraclematcher
+
+import "github.com/onsi/gomega/types"
+
+/*
+GomegaMatchers that also match the OracleMatcher interface can convey information about
+whether or not their result will change upon future attempts.
+
+This allows `Eventually` and `Consistently` to short circuit if success becomes impossible.
+
+For example, a process' exit code can never change.  So, gexec's Exit matcher returns `true`
+for `MatchMayChangeInTheFuture` until the process exits, at which point it returns `false` forevermore.
+*/
+type OracleMatcher interface {
+       MatchMayChangeInTheFuture(actual interface{}) bool
+}
+
+func MatchMayChangeInTheFuture(matcher types.GomegaMatcher, value interface{}) bool {
+       oracleMatcher, ok := matcher.(OracleMatcher)
+       if !ok {
+               return true
+       }
+
+       return oracleMatcher.MatchMayChangeInTheFuture(value)
+}
diff --git a/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support.go b/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support.go
new file mode 100644 (file)
index 0000000..7871fd4
--- /dev/null
@@ -0,0 +1,40 @@
+package testingtsupport
+
+import (
+       "regexp"
+       "runtime/debug"
+       "strings"
+
+       "github.com/onsi/gomega/types"
+)
+
+type gomegaTestingT interface {
+       Errorf(format string, args ...interface{})
+}
+
+func BuildTestingTGomegaFailHandler(t gomegaTestingT) types.GomegaFailHandler {
+       return func(message string, callerSkip ...int) {
+               skip := 1
+               if len(callerSkip) > 0 {
+                       skip = callerSkip[0]
+               }
+               stackTrace := pruneStack(string(debug.Stack()), skip)
+               t.Errorf("\n%s\n%s", stackTrace, message)
+       }
+}
+
+func pruneStack(fullStackTrace string, skip int) string {
+       stack := strings.Split(fullStackTrace, "\n")
+       if len(stack) > 2*(skip+1) {
+               stack = stack[2*(skip+1):]
+       }
+       prunedStack := []string{}
+       re := regexp.MustCompile(`\/ginkgo\/|\/pkg\/testing\/|\/pkg\/runtime\/`)
+       for i := 0; i < len(stack)/2; i++ {
+               if !re.Match([]byte(stack[i*2])) {
+                       prunedStack = append(prunedStack, stack[i*2])
+                       prunedStack = append(prunedStack, stack[i*2+1])
+               }
+       }
+       return strings.Join(prunedStack, "\n")
+}
diff --git a/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go b/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go
new file mode 100644 (file)
index 0000000..b9fbd6c
--- /dev/null
@@ -0,0 +1,12 @@
+package testingtsupport_test
+
+import (
+       . "github.com/onsi/gomega"
+
+       "testing"
+)
+
+func TestTestingT(t *testing.T) {
+       RegisterTestingT(t)
+       Ω(true).Should(BeTrue())
+}
diff --git a/vendor/github.com/onsi/gomega/matchers.go b/vendor/github.com/onsi/gomega/matchers.go
new file mode 100644 (file)
index 0000000..ad04ab6
--- /dev/null
@@ -0,0 +1,418 @@
+package gomega
+
+import (
+       "time"
+
+       "github.com/onsi/gomega/matchers"
+       "github.com/onsi/gomega/types"
+)
+
+//Equal uses reflect.DeepEqual to compare actual with expected.  Equal is strict about
+//types when performing comparisons.
+//It is an error for both actual and expected to be nil.  Use BeNil() instead.
+func Equal(expected interface{}) types.GomegaMatcher {
+       return &matchers.EqualMatcher{
+               Expected: expected,
+       }
+}
+
+//BeEquivalentTo is more lax than Equal, allowing equality between different types.
+//This is done by converting actual to have the type of expected before
+//attempting equality with reflect.DeepEqual.
+//It is an error for actual and expected to be nil.  Use BeNil() instead.
+func BeEquivalentTo(expected interface{}) types.GomegaMatcher {
+       return &matchers.BeEquivalentToMatcher{
+               Expected: expected,
+       }
+}
+
+//BeIdenticalTo uses the == operator to compare actual with expected.
+//BeIdenticalTo is strict about types when performing comparisons.
+//It is an error for both actual and expected to be nil.  Use BeNil() instead.
+func BeIdenticalTo(expected interface{}) types.GomegaMatcher {
+       return &matchers.BeIdenticalToMatcher{
+               Expected: expected,
+       }
+}
+
+//BeNil succeeds if actual is nil
+func BeNil() types.GomegaMatcher {
+       return &matchers.BeNilMatcher{}
+}
+
+//BeTrue succeeds if actual is true
+func BeTrue() types.GomegaMatcher {
+       return &matchers.BeTrueMatcher{}
+}
+
+//BeFalse succeeds if actual is false
+func BeFalse() types.GomegaMatcher {
+       return &matchers.BeFalseMatcher{}
+}
+
+//HaveOccurred succeeds if actual is a non-nil error
+//The typical Go error checking pattern looks like:
+//    err := SomethingThatMightFail()
+//    Ω(err).ShouldNot(HaveOccurred())
+func HaveOccurred() types.GomegaMatcher {
+       return &matchers.HaveOccurredMatcher{}
+}
+
+//Succeed passes if actual is a nil error
+//Succeed is intended to be used with functions that return a single error value. Instead of
+//    err := SomethingThatMightFail()
+//    Ω(err).ShouldNot(HaveOccurred())
+//
+//You can write:
+//    Ω(SomethingThatMightFail()).Should(Succeed())
+//
+//It is a mistake to use Succeed with a function that has multiple return values.  Gomega's Ω and Expect
+//functions automatically trigger failure if any return values after the first return value are non-zero/non-nil.
+//This means that Ω(MultiReturnFunc()).ShouldNot(Succeed()) can never pass.
+func Succeed() types.GomegaMatcher {
+       return &matchers.SucceedMatcher{}
+}
+
+//MatchError succeeds if actual is a non-nil error that matches the passed in string/error.
+//
+//These are valid use-cases:
+//  Ω(err).Should(MatchError("an error")) //asserts that err.Error() == "an error"
+//  Ω(err).Should(MatchError(SomeError)) //asserts that err == SomeError (via reflect.DeepEqual)
+//
+//It is an error for err to be nil or an object that does not implement the Error interface
+func MatchError(expected interface{}) types.GomegaMatcher {
+       return &matchers.MatchErrorMatcher{
+               Expected: expected,
+       }
+}
+
+//BeClosed succeeds if actual is a closed channel.
+//It is an error to pass a non-channel to BeClosed, it is also an error to pass nil
+//
+//In order to check whether or not the channel is closed, Gomega must try to read from the channel
+//(even in the `ShouldNot(BeClosed())` case).  You should keep this in mind if you wish to make subsequent assertions about
+//values coming down the channel.
+//
+//Also, if you are testing that a *buffered* channel is closed you must first read all values out of the channel before
+//asserting that it is closed (it is not possible to detect that a buffered-channel has been closed until all its buffered values are read).
+//
+//Finally, as a corollary: it is an error to check whether or not a send-only channel is closed.
+func BeClosed() types.GomegaMatcher {
+       return &matchers.BeClosedMatcher{}
+}
+
+//Receive succeeds if there is a value to be received on actual.
+//Actual must be a channel (and cannot be a send-only channel) -- anything else is an error.
+//
+//Receive returns immediately and never blocks:
+//
+//- If there is nothing on the channel `c` then Ω(c).Should(Receive()) will fail and Ω(c).ShouldNot(Receive()) will pass.
+//
+//- If the channel `c` is closed then Ω(c).Should(Receive()) will fail and Ω(c).ShouldNot(Receive()) will pass.
+//
+//- If there is something on the channel `c` ready to be read, then Ω(c).Should(Receive()) will pass and Ω(c).ShouldNot(Receive()) will fail.
+//
+//If you have a go-routine running in the background that will write to channel `c` you can:
+//    Eventually(c).Should(Receive())
+//
+//This will timeout if nothing gets sent to `c` (you can modify the timeout interval as you normally do with `Eventually`)
+//
+//A similar use-case is to assert that no go-routine writes to a channel (for a period of time).  You can do this with `Consistently`:
+//    Consistently(c).ShouldNot(Receive())
+//
+//You can pass `Receive` a matcher.  If you do so, it will match the received object against the matcher.  For example:
+//    Ω(c).Should(Receive(Equal("foo")))
+//
+//When given a matcher, `Receive` will always fail if there is nothing to be received on the channel.
+//
+//Passing Receive a matcher is especially useful when paired with Eventually:
+//
+//    Eventually(c).Should(Receive(ContainSubstring("bar")))
+//
+//will repeatedly attempt to pull values out of `c` until a value matching "bar" is received.
+//
+//Finally, if you want to have a reference to the value *sent* to the channel you can pass the `Receive` matcher a pointer to a variable of the appropriate type:
+//    var myThing thing
+//    Eventually(thingChan).Should(Receive(&myThing))
+//    Ω(myThing.Sprocket).Should(Equal("foo"))
+//    Ω(myThing.IsValid()).Should(BeTrue())
+func Receive(args ...interface{}) types.GomegaMatcher {
+       var arg interface{}
+       if len(args) > 0 {
+               arg = args[0]
+       }
+
+       return &matchers.ReceiveMatcher{
+               Arg: arg,
+       }
+}
+
+//BeSent succeeds if a value can be sent to actual.
+//Actual must be a channel (and cannot be a receive-only channel) that can sent the type of the value passed into BeSent -- anything else is an error.
+//In addition, actual must not be closed.
+//
+//BeSent never blocks:
+//
+//- If the channel `c` is not ready to receive then Ω(c).Should(BeSent("foo")) will fail immediately
+//- If the channel `c` is eventually ready to receive then Eventually(c).Should(BeSent("foo")) will succeed.. presuming the channel becomes ready to receive  before Eventually's timeout
+//- If the channel `c` is closed then Ω(c).Should(BeSent("foo")) and Ω(c).ShouldNot(BeSent("foo")) will both fail immediately
+//
+//Of course, the value is actually sent to the channel.  The point of `BeSent` is less to make an assertion about the availability of the channel (which is typically an implementation detail that your test should not be concerned with).
+//Rather, the point of `BeSent` is to make it possible to easily and expressively write tests that can timeout on blocked channel sends.
+func BeSent(arg interface{}) types.GomegaMatcher {
+       return &matchers.BeSentMatcher{
+               Arg: arg,
+       }
+}
+
+//MatchRegexp succeeds if actual is a string or stringer that matches the
+//passed-in regexp.  Optional arguments can be provided to construct a regexp
+//via fmt.Sprintf().
+func MatchRegexp(regexp string, args ...interface{}) types.GomegaMatcher {
+       return &matchers.MatchRegexpMatcher{
+               Regexp: regexp,
+               Args:   args,
+       }
+}
+
+//ContainSubstring succeeds if actual is a string or stringer that contains the
+//passed-in substring.  Optional arguments can be provided to construct the substring
+//via fmt.Sprintf().
+func ContainSubstring(substr string, args ...interface{}) types.GomegaMatcher {
+       return &matchers.ContainSubstringMatcher{
+               Substr: substr,
+               Args:   args,
+       }
+}
+
+//HavePrefix succeeds if actual is a string or stringer that contains the
+//passed-in string as a prefix.  Optional arguments can be provided to construct
+//via fmt.Sprintf().
+func HavePrefix(prefix string, args ...interface{}) types.GomegaMatcher {
+       return &matchers.HavePrefixMatcher{
+               Prefix: prefix,
+               Args:   args,
+       }
+}
+
+//HaveSuffix succeeds if actual is a string or stringer that contains the
+//passed-in string as a suffix.  Optional arguments can be provided to construct
+//via fmt.Sprintf().
+func HaveSuffix(suffix string, args ...interface{}) types.GomegaMatcher {
+       return &matchers.HaveSuffixMatcher{
+               Suffix: suffix,
+               Args:   args,
+       }
+}
+
+//MatchJSON succeeds if actual is a string or stringer of JSON that matches
+//the expected JSON.  The JSONs are decoded and the resulting objects are compared via
+//reflect.DeepEqual so things like key-ordering and whitespace shouldn't matter.
+func MatchJSON(json interface{}) types.GomegaMatcher {
+       return &matchers.MatchJSONMatcher{
+               JSONToMatch: json,
+       }
+}
+
+//MatchYAML succeeds if actual is a string or stringer of YAML that matches
+//the expected YAML.  The YAML's are decoded and the resulting objects are compared via
+//reflect.DeepEqual so things like key-ordering and whitespace shouldn't matter.
+func MatchYAML(yaml interface{}) types.GomegaMatcher {
+       return &matchers.MatchYAMLMatcher{
+               YAMLToMatch: yaml,
+       }
+}
+
+//BeEmpty succeeds if actual is empty.  Actual must be of type string, array, map, chan, or slice.
+func BeEmpty() types.GomegaMatcher {
+       return &matchers.BeEmptyMatcher{}
+}
+
+//HaveLen succeeds if actual has the passed-in length.  Actual must be of type string, array, map, chan, or slice.
+func HaveLen(count int) types.GomegaMatcher {
+       return &matchers.HaveLenMatcher{
+               Count: count,
+       }
+}
+
+//HaveCap succeeds if actual has the passed-in capacity.  Actual must be of type array, chan, or slice.
+func HaveCap(count int) types.GomegaMatcher {
+       return &matchers.HaveCapMatcher{
+               Count: count,
+       }
+}
+
+//BeZero succeeds if actual is the zero value for its type or if actual is nil.
+func BeZero() types.GomegaMatcher {
+       return &matchers.BeZeroMatcher{}
+}
+
+//ContainElement succeeds if actual contains the passed in element.
+//By default ContainElement() uses Equal() to perform the match, however a
+//matcher can be passed in instead:
+//    Ω([]string{"Foo", "FooBar"}).Should(ContainElement(ContainSubstring("Bar")))
+//
+//Actual must be an array, slice or map.
+//For maps, ContainElement searches through the map's values.
+func ContainElement(element interface{}) types.GomegaMatcher {
+       return &matchers.ContainElementMatcher{
+               Element: element,
+       }
+}
+
+//ConsistOf succeeds if actual contains preciely the elements passed into the matcher.  The ordering of the elements does not matter.
+//By default ConsistOf() uses Equal() to match the elements, however custom matchers can be passed in instead.  Here are some examples:
+//
+//    Ω([]string{"Foo", "FooBar"}).Should(ConsistOf("FooBar", "Foo"))
+//    Ω([]string{"Foo", "FooBar"}).Should(ConsistOf(ContainSubstring("Bar"), "Foo"))
+//    Ω([]string{"Foo", "FooBar"}).Should(ConsistOf(ContainSubstring("Foo"), ContainSubstring("Foo")))
+//
+//Actual must be an array, slice or map.  For maps, ConsistOf matches against the map's values.
+//
+//You typically pass variadic arguments to ConsistOf (as in the examples above).  However, if you need to pass in a slice you can provided that it
+//is the only element passed in to ConsistOf:
+//
+//    Ω([]string{"Foo", "FooBar"}).Should(ConsistOf([]string{"FooBar", "Foo"}))
+//
+//Note that Go's type system does not allow you to write this as ConsistOf([]string{"FooBar", "Foo"}...) as []string and []interface{} are different types - hence the need for this special rule.
+func ConsistOf(elements ...interface{}) types.GomegaMatcher {
+       return &matchers.ConsistOfMatcher{
+               Elements: elements,
+       }
+}
+
+//HaveKey succeeds if actual is a map with the passed in key.
+//By default HaveKey uses Equal() to perform the match, however a
+//matcher can be passed in instead:
+//    Ω(map[string]string{"Foo": "Bar", "BazFoo": "Duck"}).Should(HaveKey(MatchRegexp(`.+Foo$`)))
+func HaveKey(key interface{}) types.GomegaMatcher {
+       return &matchers.HaveKeyMatcher{
+               Key: key,
+       }
+}
+
+//HaveKeyWithValue succeeds if actual is a map with the passed in key and value.
+//By default HaveKeyWithValue uses Equal() to perform the match, however a
+//matcher can be passed in instead:
+//    Ω(map[string]string{"Foo": "Bar", "BazFoo": "Duck"}).Should(HaveKeyWithValue("Foo", "Bar"))
+//    Ω(map[string]string{"Foo": "Bar", "BazFoo": "Duck"}).Should(HaveKeyWithValue(MatchRegexp(`.+Foo$`), "Bar"))
+func HaveKeyWithValue(key interface{}, value interface{}) types.GomegaMatcher {
+       return &matchers.HaveKeyWithValueMatcher{
+               Key:   key,
+               Value: value,
+       }
+}
+
+//BeNumerically performs numerical assertions in a type-agnostic way.
+//Actual and expected should be numbers, though the specific type of
+//number is irrelevant (floa32, float64, uint8, etc...).
+//
+//There are six, self-explanatory, supported comparators:
+//    Ω(1.0).Should(BeNumerically("==", 1))
+//    Ω(1.0).Should(BeNumerically("~", 0.999, 0.01))
+//    Ω(1.0).Should(BeNumerically(">", 0.9))
+//    Ω(1.0).Should(BeNumerically(">=", 1.0))
+//    Ω(1.0).Should(BeNumerically("<", 3))
+//    Ω(1.0).Should(BeNumerically("<=", 1.0))
+func BeNumerically(comparator string, compareTo ...interface{}) types.GomegaMatcher {
+       return &matchers.BeNumericallyMatcher{
+               Comparator: comparator,
+               CompareTo:  compareTo,
+       }
+}
+
+//BeTemporally compares time.Time's like BeNumerically
+//Actual and expected must be time.Time. The comparators are the same as for BeNumerically
+//    Ω(time.Now()).Should(BeTemporally(">", time.Time{}))
+//    Ω(time.Now()).Should(BeTemporally("~", time.Now(), time.Second))
+func BeTemporally(comparator string, compareTo time.Time, threshold ...time.Duration) types.GomegaMatcher {
+       return &matchers.BeTemporallyMatcher{
+               Comparator: comparator,
+               CompareTo:  compareTo,
+               Threshold:  threshold,
+       }
+}
+
+//BeAssignableToTypeOf succeeds if actual is assignable to the type of expected.
+//It will return an error when one of the values is nil.
+//       Ω(0).Should(BeAssignableToTypeOf(0))         // Same values
+//       Ω(5).Should(BeAssignableToTypeOf(-1))        // different values same type
+//       Ω("foo").Should(BeAssignableToTypeOf("bar")) // different values same type
+//    Ω(struct{ Foo string }{}).Should(BeAssignableToTypeOf(struct{ Foo string }{}))
+func BeAssignableToTypeOf(expected interface{}) types.GomegaMatcher {
+       return &matchers.AssignableToTypeOfMatcher{
+               Expected: expected,
+       }
+}
+
+//Panic succeeds if actual is a function that, when invoked, panics.
+//Actual must be a function that takes no arguments and returns no results.
+func Panic() types.GomegaMatcher {
+       return &matchers.PanicMatcher{}
+}
+
+//BeAnExistingFile succeeds if a file exists.
+//Actual must be a string representing the abs path to the file being checked.
+func BeAnExistingFile() types.GomegaMatcher {
+       return &matchers.BeAnExistingFileMatcher{}
+}
+
+//BeARegularFile succeeds iff a file exists and is a regular file.
+//Actual must be a string representing the abs path to the file being checked.
+func BeARegularFile() types.GomegaMatcher {
+       return &matchers.BeARegularFileMatcher{}
+}
+
+//BeADirectory succeeds iff a file exists and is a directory.
+//Actual must be a string representing the abs path to the file being checked.
+func BeADirectory() types.GomegaMatcher {
+       return &matchers.BeADirectoryMatcher{}
+}
+
+//And succeeds only if all of the given matchers succeed.
+//The matchers are tried in order, and will fail-fast if one doesn't succeed.
+//  Expect("hi").To(And(HaveLen(2), Equal("hi"))
+//
+//And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions.
+func And(ms ...types.GomegaMatcher) types.GomegaMatcher {
+       return &matchers.AndMatcher{Matchers: ms}
+}
+
+//SatisfyAll is an alias for And().
+//  Ω("hi").Should(SatisfyAll(HaveLen(2), Equal("hi")))
+func SatisfyAll(matchers ...types.GomegaMatcher) types.GomegaMatcher {
+       return And(matchers...)
+}
+
+//Or succeeds if any of the given matchers succeed.
+//The matchers are tried in order and will return immediately upon the first successful match.
+//  Expect("hi").To(Or(HaveLen(3), HaveLen(2))
+//
+//And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions.
+func Or(ms ...types.GomegaMatcher) types.GomegaMatcher {
+       return &matchers.OrMatcher{Matchers: ms}
+}
+
+//SatisfyAny is an alias for Or().
+//  Expect("hi").SatisfyAny(Or(HaveLen(3), HaveLen(2))
+func SatisfyAny(matchers ...types.GomegaMatcher) types.GomegaMatcher {
+       return Or(matchers...)
+}
+
+//Not negates the given matcher; it succeeds if the given matcher fails.
+//  Expect(1).To(Not(Equal(2))
+//
+//And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions.
+func Not(matcher types.GomegaMatcher) types.GomegaMatcher {
+       return &matchers.NotMatcher{Matcher: matcher}
+}
+
+//WithTransform applies the `transform` to the actual value and matches it against `matcher`.
+//The given transform must be a function of one parameter that returns one value.
+//  var plus1 = func(i int) int { return i + 1 }
+//  Expect(1).To(WithTransform(plus1, Equal(2))
+//
+//And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions.
+func WithTransform(transform interface{}, matcher types.GomegaMatcher) types.GomegaMatcher {
+       return matchers.NewWithTransformMatcher(transform, matcher)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/and.go b/vendor/github.com/onsi/gomega/matchers/and.go
new file mode 100644 (file)
index 0000000..94c42a7
--- /dev/null
@@ -0,0 +1,64 @@
+package matchers
+
+import (
+       "fmt"
+
+       "github.com/onsi/gomega/format"
+       "github.com/onsi/gomega/internal/oraclematcher"
+       "github.com/onsi/gomega/types"
+)
+
+type AndMatcher struct {
+       Matchers []types.GomegaMatcher
+
+       // state
+       firstFailedMatcher types.GomegaMatcher
+}
+
+func (m *AndMatcher) Match(actual interface{}) (success bool, err error) {
+       m.firstFailedMatcher = nil
+       for _, matcher := range m.Matchers {
+               success, err := matcher.Match(actual)
+               if !success || err != nil {
+                       m.firstFailedMatcher = matcher
+                       return false, err
+               }
+       }
+       return true, nil
+}
+
+func (m *AndMatcher) FailureMessage(actual interface{}) (message string) {
+       return m.firstFailedMatcher.FailureMessage(actual)
+}
+
+func (m *AndMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       // not the most beautiful list of matchers, but not bad either...
+       return format.Message(actual, fmt.Sprintf("To not satisfy all of these matchers: %s", m.Matchers))
+}
+
+func (m *AndMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
+       /*
+               Example with 3 matchers: A, B, C
+
+               Match evaluates them: T, F, <?>  => F
+               So match is currently F, what should MatchMayChangeInTheFuture() return?
+               Seems like it only depends on B, since currently B MUST change to allow the result to become T
+
+               Match eval: T, T, T  => T
+               So match is currently T, what should MatchMayChangeInTheFuture() return?
+               Seems to depend on ANY of them being able to change to F.
+       */
+
+       if m.firstFailedMatcher == nil {
+               // so all matchers succeeded.. Any one of them changing would change the result.
+               for _, matcher := range m.Matchers {
+                       if oraclematcher.MatchMayChangeInTheFuture(matcher, actual) {
+                               return true
+                       }
+               }
+               return false // none of were going to change
+       } else {
+               // one of the matchers failed.. it must be able to change in order to affect the result
+               return oraclematcher.MatchMayChangeInTheFuture(m.firstFailedMatcher, actual)
+       }
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/and_test.go b/vendor/github.com/onsi/gomega/matchers/and_test.go
new file mode 100644 (file)
index 0000000..acf778c
--- /dev/null
@@ -0,0 +1,103 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+       "github.com/onsi/gomega/types"
+)
+
+// sample data
+var (
+       // example input
+       input = "hi"
+       // some matchers that succeed against the input
+       true1 = HaveLen(2)
+       true2 = Equal("hi")
+       true3 = MatchRegexp("hi")
+       // some matchers that fail against the input.
+       false1 = HaveLen(1)
+       false2 = Equal("hip")
+       false3 = MatchRegexp("hope")
+)
+
+// verifyFailureMessage expects the matcher to fail with the given input, and verifies the failure message.
+func verifyFailureMessage(m types.GomegaMatcher, input string, expectedFailureMsgFragment string) {
+       Expect(m.Match(input)).To(BeFalse())
+       Expect(m.FailureMessage(input)).To(Equal(
+               "Expected\n    <string>: " + input + "\n" + expectedFailureMsgFragment))
+}
+
+var _ = Describe("AndMatcher", func() {
+       It("works with positive cases", func() {
+               Expect(input).To(And())
+               Expect(input).To(And(true1))
+               Expect(input).To(And(true1, true2))
+               Expect(input).To(And(true1, true2, true3))
+
+               // use alias
+               Expect(input).To(SatisfyAll(true1, true2, true3))
+       })
+
+       It("works with negative cases", func() {
+               Expect(input).ToNot(And(false1, false2))
+               Expect(input).ToNot(And(true1, true2, false3))
+               Expect(input).ToNot(And(true1, false2, false3))
+               Expect(input).ToNot(And(false1, true1, true2))
+       })
+
+       Context("failure messages", func() {
+               Context("when match fails", func() {
+                       It("gives a descriptive message", func() {
+                               verifyFailureMessage(And(false1, true1), input, "to have length 1")
+                               verifyFailureMessage(And(true1, false2), input, "to equal\n    <string>: hip")
+                               verifyFailureMessage(And(true1, true2, false3), input, "to match regular expression\n    <string>: hope")
+                       })
+               })
+
+               Context("when match succeeds, but expected it to fail", func() {
+                       It("gives a descriptive message", func() {
+                               verifyFailureMessage(Not(And(true1, true2)), input,
+                                       `To not satisfy all of these matchers: [%!s(*matchers.HaveLenMatcher=&{2}) %!s(*matchers.EqualMatcher=&{hi})]`)
+                       })
+               })
+       })
+
+       Context("MatchMayChangeInTheFuture", func() {
+               Context("Match returned false", func() {
+                       Context("returns value of the failed matcher", func() {
+                               It("false if failed matcher not going to change", func() {
+                                       // 3 matchers: 1st returns true, 2nd returns false and is not going to change, 3rd is never called
+                                       m := And(Not(BeNil()), Or(), Equal(1))
+                                       Expect(m.Match("hi")).To(BeFalse())
+                                       Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse()) // empty Or() indicates not going to change
+                               })
+                               It("true if failed matcher indicates it might change", func() {
+                                       // 3 matchers: 1st returns true, 2nd returns false and "might" change, 3rd is never called
+                                       m := And(Not(BeNil()), Equal(5), Equal(1))
+                                       Expect(m.Match("hi")).To(BeFalse())
+                                       Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // Equal(5) indicates it might change
+                               })
+                       })
+               })
+               Context("Match returned true", func() {
+                       It("returns true if any of the matchers could change", func() {
+                               // 3 matchers, all return true, and all could change
+                               m := And(Not(BeNil()), Equal("hi"), HaveLen(2))
+                               Expect(m.Match("hi")).To(BeTrue())
+                               Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // all 3 of these matchers default to 'true'
+                       })
+                       It("returns false if none of the matchers could change", func() {
+                               // empty And() has the property of always matching, and never can change since there are no sub-matchers that could change
+                               m := And()
+                               Expect(m.Match("anything")).To(BeTrue())
+                               Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("anything")).To(BeFalse())
+
+                               // And() with 3 sub-matchers that return true, and can't change
+                               m = And(And(), And(), And())
+                               Expect(m.Match("hi")).To(BeTrue())
+                               Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse()) // the 3 empty And()'s won't change
+                       })
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go b/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go
new file mode 100644 (file)
index 0000000..89a1fc2
--- /dev/null
@@ -0,0 +1,31 @@
+package matchers
+
+import (
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/format"
+)
+
+type AssignableToTypeOfMatcher struct {
+       Expected interface{}
+}
+
+func (matcher *AssignableToTypeOfMatcher) Match(actual interface{}) (success bool, err error) {
+       if actual == nil || matcher.Expected == nil {
+               return false, fmt.Errorf("Refusing to compare <nil> to <nil>.\nBe explicit and use BeNil() instead.  This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.")
+       }
+
+       actualType := reflect.TypeOf(actual)
+       expectedType := reflect.TypeOf(matcher.Expected)
+
+       return actualType.AssignableTo(expectedType), nil
+}
+
+func (matcher *AssignableToTypeOfMatcher) FailureMessage(actual interface{}) string {
+       return format.Message(actual, fmt.Sprintf("to be assignable to the type: %T", matcher.Expected))
+}
+
+func (matcher *AssignableToTypeOfMatcher) NegatedFailureMessage(actual interface{}) string {
+       return format.Message(actual, fmt.Sprintf("not to be assignable to the type: %T", matcher.Expected))
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go
new file mode 100644 (file)
index 0000000..d2280e0
--- /dev/null
@@ -0,0 +1,30 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("AssignableToTypeOf", func() {
+       Context("When asserting assignability between types", func() {
+               It("should do the right thing", func() {
+                       Ω(0).Should(BeAssignableToTypeOf(0))
+                       Ω(5).Should(BeAssignableToTypeOf(-1))
+                       Ω("foo").Should(BeAssignableToTypeOf("bar"))
+                       Ω(struct{ Foo string }{}).Should(BeAssignableToTypeOf(struct{ Foo string }{}))
+
+                       Ω(0).ShouldNot(BeAssignableToTypeOf("bar"))
+                       Ω(5).ShouldNot(BeAssignableToTypeOf(struct{ Foo string }{}))
+                       Ω("foo").ShouldNot(BeAssignableToTypeOf(42))
+               })
+       })
+
+       Context("When asserting nil values", func() {
+               It("should error", func() {
+                       success, err := (&AssignableToTypeOfMatcher{Expected: nil}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_a_directory.go b/vendor/github.com/onsi/gomega/matchers/be_a_directory.go
new file mode 100644 (file)
index 0000000..7b6975e
--- /dev/null
@@ -0,0 +1,54 @@
+package matchers
+
+import (
+       "fmt"
+       "os"
+
+       "github.com/onsi/gomega/format"
+)
+
+type notADirectoryError struct {
+       os.FileInfo
+}
+
+func (t notADirectoryError) Error() string {
+       fileInfo := os.FileInfo(t)
+       switch {
+       case fileInfo.Mode().IsRegular():
+               return "file is a regular file"
+       default:
+               return fmt.Sprintf("file mode is: %s", fileInfo.Mode().String())
+       }
+}
+
+type BeADirectoryMatcher struct {
+       expected interface{}
+       err      error
+}
+
+func (matcher *BeADirectoryMatcher) Match(actual interface{}) (success bool, err error) {
+       actualFilename, ok := actual.(string)
+       if !ok {
+               return false, fmt.Errorf("BeADirectoryMatcher matcher expects a file path")
+       }
+
+       fileInfo, err := os.Stat(actualFilename)
+       if err != nil {
+               matcher.err = err
+               return false, nil
+       }
+
+       if !fileInfo.Mode().IsDir() {
+               matcher.err = notADirectoryError{fileInfo}
+               return false, nil
+       }
+       return true, nil
+}
+
+func (matcher *BeADirectoryMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("to be a directory: %s", matcher.err))
+}
+
+func (matcher *BeADirectoryMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("not be a directory"))
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go b/vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go
new file mode 100644 (file)
index 0000000..e59d769
--- /dev/null
@@ -0,0 +1,40 @@
+package matchers_test
+
+import (
+       "io/ioutil"
+       "os"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("BeADirectoryMatcher", func() {
+       Context("when passed a string", func() {
+               It("should do the right thing", func() {
+                       Ω("/dne/test").ShouldNot(BeADirectory())
+
+                       tmpFile, err := ioutil.TempFile("", "gomega-test-tempfile")
+                       Ω(err).ShouldNot(HaveOccurred())
+                       defer os.Remove(tmpFile.Name())
+                       Ω(tmpFile.Name()).ShouldNot(BeADirectory())
+
+                       tmpDir, err := ioutil.TempDir("", "gomega-test-tempdir")
+                       Ω(err).ShouldNot(HaveOccurred())
+                       defer os.Remove(tmpDir)
+                       Ω(tmpDir).Should(BeADirectory())
+               })
+       })
+
+       Context("when passed something else", func() {
+               It("should error", func() {
+                       success, err := (&BeADirectoryMatcher{}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeADirectoryMatcher{}).Match(true)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go b/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go
new file mode 100644 (file)
index 0000000..e239131
--- /dev/null
@@ -0,0 +1,54 @@
+package matchers
+
+import (
+       "fmt"
+       "os"
+
+       "github.com/onsi/gomega/format"
+)
+
+type notARegularFileError struct {
+       os.FileInfo
+}
+
+func (t notARegularFileError) Error() string {
+       fileInfo := os.FileInfo(t)
+       switch {
+       case fileInfo.IsDir():
+               return "file is a directory"
+       default:
+               return fmt.Sprintf("file mode is: %s", fileInfo.Mode().String())
+       }
+}
+
+type BeARegularFileMatcher struct {
+       expected interface{}
+       err      error
+}
+
+func (matcher *BeARegularFileMatcher) Match(actual interface{}) (success bool, err error) {
+       actualFilename, ok := actual.(string)
+       if !ok {
+               return false, fmt.Errorf("BeARegularFileMatcher matcher expects a file path")
+       }
+
+       fileInfo, err := os.Stat(actualFilename)
+       if err != nil {
+               matcher.err = err
+               return false, nil
+       }
+
+       if !fileInfo.Mode().IsRegular() {
+               matcher.err = notARegularFileError{fileInfo}
+               return false, nil
+       }
+       return true, nil
+}
+
+func (matcher *BeARegularFileMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("to be a regular file: %s", matcher.err))
+}
+
+func (matcher *BeARegularFileMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("not be a regular file"))
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go b/vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go
new file mode 100644 (file)
index 0000000..951e750
--- /dev/null
@@ -0,0 +1,40 @@
+package matchers_test
+
+import (
+       "io/ioutil"
+       "os"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("BeARegularFileMatcher", func() {
+       Context("when passed a string", func() {
+               It("should do the right thing", func() {
+                       Ω("/dne/test").ShouldNot(BeARegularFile())
+
+                       tmpFile, err := ioutil.TempFile("", "gomega-test-tempfile")
+                       Ω(err).ShouldNot(HaveOccurred())
+                       defer os.Remove(tmpFile.Name())
+                       Ω(tmpFile.Name()).Should(BeARegularFile())
+
+                       tmpDir, err := ioutil.TempDir("", "gomega-test-tempdir")
+                       Ω(err).ShouldNot(HaveOccurred())
+                       defer os.Remove(tmpDir)
+                       Ω(tmpDir).ShouldNot(BeARegularFile())
+               })
+       })
+
+       Context("when passed something else", func() {
+               It("should error", func() {
+                       success, err := (&BeARegularFileMatcher{}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeARegularFileMatcher{}).Match(true)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go b/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go
new file mode 100644 (file)
index 0000000..d42eba2
--- /dev/null
@@ -0,0 +1,38 @@
+package matchers
+
+import (
+       "fmt"
+       "os"
+
+       "github.com/onsi/gomega/format"
+)
+
+type BeAnExistingFileMatcher struct {
+       expected interface{}
+}
+
+func (matcher *BeAnExistingFileMatcher) Match(actual interface{}) (success bool, err error) {
+       actualFilename, ok := actual.(string)
+       if !ok {
+               return false, fmt.Errorf("BeAnExistingFileMatcher matcher expects a file path")
+       }
+
+       if _, err = os.Stat(actualFilename); err != nil {
+               switch {
+               case os.IsNotExist(err):
+                       return false, nil
+               default:
+                       return false, err
+               }
+       }
+
+       return true, nil
+}
+
+func (matcher *BeAnExistingFileMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("to exist"))
+}
+
+func (matcher *BeAnExistingFileMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("not to exist"))
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go b/vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go
new file mode 100644 (file)
index 0000000..775f7b6
--- /dev/null
@@ -0,0 +1,40 @@
+package matchers_test
+
+import (
+       "io/ioutil"
+       "os"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("BeAnExistingFileMatcher", func() {
+       Context("when passed a string", func() {
+               It("should do the right thing", func() {
+                       Ω("/dne/test").ShouldNot(BeAnExistingFile())
+
+                       tmpFile, err := ioutil.TempFile("", "gomega-test-tempfile")
+                       Ω(err).ShouldNot(HaveOccurred())
+                       defer os.Remove(tmpFile.Name())
+                       Ω(tmpFile.Name()).Should(BeAnExistingFile())
+
+                       tmpDir, err := ioutil.TempDir("", "gomega-test-tempdir")
+                       Ω(err).ShouldNot(HaveOccurred())
+                       defer os.Remove(tmpDir)
+                       Ω(tmpDir).Should(BeAnExistingFile())
+               })
+       })
+
+       Context("when passed something else", func() {
+               It("should error", func() {
+                       success, err := (&BeAnExistingFileMatcher{}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeAnExistingFileMatcher{}).Match(true)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go
new file mode 100644 (file)
index 0000000..c1b4995
--- /dev/null
@@ -0,0 +1,45 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+       "reflect"
+)
+
+type BeClosedMatcher struct {
+}
+
+func (matcher *BeClosedMatcher) Match(actual interface{}) (success bool, err error) {
+       if !isChan(actual) {
+               return false, fmt.Errorf("BeClosed matcher expects a channel.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       channelType := reflect.TypeOf(actual)
+       channelValue := reflect.ValueOf(actual)
+
+       if channelType.ChanDir() == reflect.SendDir {
+               return false, fmt.Errorf("BeClosed matcher cannot determine if a send-only channel is closed or open.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       winnerIndex, _, open := reflect.Select([]reflect.SelectCase{
+               reflect.SelectCase{Dir: reflect.SelectRecv, Chan: channelValue},
+               reflect.SelectCase{Dir: reflect.SelectDefault},
+       })
+
+       var closed bool
+       if winnerIndex == 0 {
+               closed = !open
+       } else if winnerIndex == 1 {
+               closed = false
+       }
+
+       return closed, nil
+}
+
+func (matcher *BeClosedMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to be closed")
+}
+
+func (matcher *BeClosedMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to be open")
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go
new file mode 100644 (file)
index 0000000..b2c40c9
--- /dev/null
@@ -0,0 +1,70 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("BeClosedMatcher", func() {
+       Context("when passed a channel", func() {
+               It("should do the right thing", func() {
+                       openChannel := make(chan bool)
+                       Ω(openChannel).ShouldNot(BeClosed())
+
+                       var openReaderChannel <-chan bool
+                       openReaderChannel = openChannel
+                       Ω(openReaderChannel).ShouldNot(BeClosed())
+
+                       closedChannel := make(chan bool)
+                       close(closedChannel)
+
+                       Ω(closedChannel).Should(BeClosed())
+
+                       var closedReaderChannel <-chan bool
+                       closedReaderChannel = closedChannel
+                       Ω(closedReaderChannel).Should(BeClosed())
+               })
+       })
+
+       Context("when passed a send-only channel", func() {
+               It("should error", func() {
+                       openChannel := make(chan bool)
+                       var openWriterChannel chan<- bool
+                       openWriterChannel = openChannel
+
+                       success, err := (&BeClosedMatcher{}).Match(openWriterChannel)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       closedChannel := make(chan bool)
+                       close(closedChannel)
+
+                       var closedWriterChannel chan<- bool
+                       closedWriterChannel = closedChannel
+
+                       success, err = (&BeClosedMatcher{}).Match(closedWriterChannel)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+               })
+       })
+
+       Context("when passed something else", func() {
+               It("should error", func() {
+                       var nilChannel chan bool
+
+                       success, err := (&BeClosedMatcher{}).Match(nilChannel)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeClosedMatcher{}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeClosedMatcher{}).Match(7)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go
new file mode 100644 (file)
index 0000000..55bdd7d
--- /dev/null
@@ -0,0 +1,26 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+)
+
+type BeEmptyMatcher struct {
+}
+
+func (matcher *BeEmptyMatcher) Match(actual interface{}) (success bool, err error) {
+       length, ok := lengthOf(actual)
+       if !ok {
+               return false, fmt.Errorf("BeEmpty matcher expects a string/array/map/channel/slice.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       return length == 0, nil
+}
+
+func (matcher *BeEmptyMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to be empty")
+}
+
+func (matcher *BeEmptyMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to be empty")
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go
new file mode 100644 (file)
index 0000000..541c1b9
--- /dev/null
@@ -0,0 +1,52 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("BeEmpty", func() {
+       Context("when passed a supported type", func() {
+               It("should do the right thing", func() {
+                       Ω("").Should(BeEmpty())
+                       Ω(" ").ShouldNot(BeEmpty())
+
+                       Ω([0]int{}).Should(BeEmpty())
+                       Ω([1]int{1}).ShouldNot(BeEmpty())
+
+                       Ω([]int{}).Should(BeEmpty())
+                       Ω([]int{1}).ShouldNot(BeEmpty())
+
+                       Ω(map[string]int{}).Should(BeEmpty())
+                       Ω(map[string]int{"a": 1}).ShouldNot(BeEmpty())
+
+                       c := make(chan bool, 1)
+                       Ω(c).Should(BeEmpty())
+                       c <- true
+                       Ω(c).ShouldNot(BeEmpty())
+               })
+       })
+
+       Context("when passed a correctly typed nil", func() {
+               It("should be true", func() {
+                       var nilSlice []int
+                       Ω(nilSlice).Should(BeEmpty())
+
+                       var nilMap map[int]string
+                       Ω(nilMap).Should(BeEmpty())
+               })
+       })
+
+       Context("when passed an unsupported type", func() {
+               It("should error", func() {
+                       success, err := (&BeEmptyMatcher{}).Match(0)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeEmptyMatcher{}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go
new file mode 100644 (file)
index 0000000..32a0c31
--- /dev/null
@@ -0,0 +1,33 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+       "reflect"
+)
+
+type BeEquivalentToMatcher struct {
+       Expected interface{}
+}
+
+func (matcher *BeEquivalentToMatcher) Match(actual interface{}) (success bool, err error) {
+       if actual == nil && matcher.Expected == nil {
+               return false, fmt.Errorf("Both actual and expected must not be nil.")
+       }
+
+       convertedActual := actual
+
+       if actual != nil && matcher.Expected != nil && reflect.TypeOf(actual).ConvertibleTo(reflect.TypeOf(matcher.Expected)) {
+               convertedActual = reflect.ValueOf(actual).Convert(reflect.TypeOf(matcher.Expected)).Interface()
+       }
+
+       return reflect.DeepEqual(convertedActual, matcher.Expected), nil
+}
+
+func (matcher *BeEquivalentToMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to be equivalent to", matcher.Expected)
+}
+
+func (matcher *BeEquivalentToMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to be equivalent to", matcher.Expected)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go
new file mode 100644 (file)
index 0000000..def5104
--- /dev/null
@@ -0,0 +1,50 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("BeEquivalentTo", func() {
+       Context("when asserting that nil is equivalent to nil", func() {
+               It("should error", func() {
+                       success, err := (&BeEquivalentToMatcher{Expected: nil}).Match(nil)
+
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("When asserting on nil", func() {
+               It("should do the right thing", func() {
+                       Ω("foo").ShouldNot(BeEquivalentTo(nil))
+                       Ω(nil).ShouldNot(BeEquivalentTo(3))
+                       Ω([]int{1, 2}).ShouldNot(BeEquivalentTo(nil))
+               })
+       })
+
+       Context("When asserting on type aliases", func() {
+               It("should the right thing", func() {
+                       Ω(StringAlias("foo")).Should(BeEquivalentTo("foo"))
+                       Ω("foo").Should(BeEquivalentTo(StringAlias("foo")))
+                       Ω(StringAlias("foo")).ShouldNot(BeEquivalentTo("bar"))
+                       Ω("foo").ShouldNot(BeEquivalentTo(StringAlias("bar")))
+               })
+       })
+
+       Context("When asserting on numbers", func() {
+               It("should convert actual to expected and do the right thing", func() {
+                       Ω(5).Should(BeEquivalentTo(5))
+                       Ω(5.0).Should(BeEquivalentTo(5.0))
+                       Ω(5).Should(BeEquivalentTo(5.0))
+
+                       Ω(5).ShouldNot(BeEquivalentTo("5"))
+                       Ω(5).ShouldNot(BeEquivalentTo(3))
+
+                       //Here be dragons!
+                       Ω(5.1).Should(BeEquivalentTo(5))
+                       Ω(5).ShouldNot(BeEquivalentTo(5.1))
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go
new file mode 100644 (file)
index 0000000..0b224cb
--- /dev/null
@@ -0,0 +1,25 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+)
+
+type BeFalseMatcher struct {
+}
+
+func (matcher *BeFalseMatcher) Match(actual interface{}) (success bool, err error) {
+       if !isBool(actual) {
+               return false, fmt.Errorf("Expected a boolean.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       return actual == false, nil
+}
+
+func (matcher *BeFalseMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to be false")
+}
+
+func (matcher *BeFalseMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to be false")
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go
new file mode 100644 (file)
index 0000000..3965a2c
--- /dev/null
@@ -0,0 +1,20 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("BeFalse", func() {
+       It("should handle true and false correctly", func() {
+               Ω(true).ShouldNot(BeFalse())
+               Ω(false).Should(BeFalse())
+       })
+
+       It("should only support booleans", func() {
+               success, err := (&BeFalseMatcher{}).Match("foo")
+               Ω(success).Should(BeFalse())
+               Ω(err).Should(HaveOccurred())
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_identical_to.go b/vendor/github.com/onsi/gomega/matchers/be_identical_to.go
new file mode 100644 (file)
index 0000000..fdcda4d
--- /dev/null
@@ -0,0 +1,37 @@
+package matchers
+
+import (
+       "fmt"
+       "runtime"
+
+       "github.com/onsi/gomega/format"
+)
+
+type BeIdenticalToMatcher struct {
+       Expected interface{}
+}
+
+func (matcher *BeIdenticalToMatcher) Match(actual interface{}) (success bool, matchErr error) {
+       if actual == nil && matcher.Expected == nil {
+               return false, fmt.Errorf("Refusing to compare <nil> to <nil>.\nBe explicit and use BeNil() instead.  This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.")
+       }
+
+       defer func() {
+               if r := recover(); r != nil {
+                       if _, ok := r.(runtime.Error); ok {
+                               success = false
+                               matchErr = nil
+                       }
+               }
+       }()
+
+       return actual == matcher.Expected, nil
+}
+
+func (matcher *BeIdenticalToMatcher) FailureMessage(actual interface{}) string {
+       return format.Message(actual, "to be identical to", matcher.Expected)
+}
+
+func (matcher *BeIdenticalToMatcher) NegatedFailureMessage(actual interface{}) string {
+       return format.Message(actual, "not to be identical to", matcher.Expected)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go b/vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go
new file mode 100644 (file)
index 0000000..8b90a1a
--- /dev/null
@@ -0,0 +1,61 @@
+package matchers_test
+
+import (
+       "errors"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("BeIdenticalTo", func() {
+       Context("when asserting that nil equals nil", func() {
+               It("should error", func() {
+                       success, err := (&BeIdenticalToMatcher{Expected: nil}).Match(nil)
+
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       It("should treat the same pointer to a struct as identical", func() {
+               mySpecialStruct := myCustomType{}
+               Ω(&mySpecialStruct).Should(BeIdenticalTo(&mySpecialStruct))
+               Ω(&myCustomType{}).ShouldNot(BeIdenticalTo(&mySpecialStruct))
+       })
+
+       It("should be strict about types", func() {
+               Ω(5).ShouldNot(BeIdenticalTo("5"))
+               Ω(5).ShouldNot(BeIdenticalTo(5.0))
+               Ω(5).ShouldNot(BeIdenticalTo(3))
+       })
+
+       It("should treat primtives as identical", func() {
+               Ω("5").Should(BeIdenticalTo("5"))
+               Ω("5").ShouldNot(BeIdenticalTo("55"))
+
+               Ω(5.55).Should(BeIdenticalTo(5.55))
+               Ω(5.55).ShouldNot(BeIdenticalTo(6.66))
+
+               Ω(5).Should(BeIdenticalTo(5))
+               Ω(5).ShouldNot(BeIdenticalTo(55))
+       })
+
+       It("should treat the same pointers to a slice as identical", func() {
+               mySlice := []int{1, 2}
+               Ω(&mySlice).Should(BeIdenticalTo(&mySlice))
+               Ω(&mySlice).ShouldNot(BeIdenticalTo(&[]int{1, 2}))
+       })
+
+       It("should treat the same pointers to a map as identical", func() {
+               myMap := map[string]string{"a": "b", "c": "d"}
+               Ω(&myMap).Should(BeIdenticalTo(&myMap))
+               Ω(myMap).ShouldNot(BeIdenticalTo(map[string]string{"a": "b", "c": "d"}))
+       })
+
+       It("should treat the same pointers to an error as identical", func() {
+               myError := errors.New("foo")
+               Ω(&myError).Should(BeIdenticalTo(&myError))
+               Ω(errors.New("foo")).ShouldNot(BeIdenticalTo(errors.New("bar")))
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go
new file mode 100644 (file)
index 0000000..7ee84fe
--- /dev/null
@@ -0,0 +1,18 @@
+package matchers
+
+import "github.com/onsi/gomega/format"
+
+type BeNilMatcher struct {
+}
+
+func (matcher *BeNilMatcher) Match(actual interface{}) (success bool, err error) {
+       return isNil(actual), nil
+}
+
+func (matcher *BeNilMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to be nil")
+}
+
+func (matcher *BeNilMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to be nil")
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go
new file mode 100644 (file)
index 0000000..7533253
--- /dev/null
@@ -0,0 +1,28 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+var _ = Describe("BeNil", func() {
+       It("should succeed when passed nil", func() {
+               Ω(nil).Should(BeNil())
+       })
+
+       It("should succeed when passed a typed nil", func() {
+               var a []int
+               Ω(a).Should(BeNil())
+       })
+
+       It("should succeed when passing nil pointer", func() {
+               var f *struct{}
+               Ω(f).Should(BeNil())
+       })
+
+       It("should not succeed when not passed nil", func() {
+               Ω(0).ShouldNot(BeNil())
+               Ω(false).ShouldNot(BeNil())
+               Ω("").ShouldNot(BeNil())
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go
new file mode 100644 (file)
index 0000000..0c157f6
--- /dev/null
@@ -0,0 +1,120 @@
+package matchers
+
+import (
+       "fmt"
+       "math"
+
+       "github.com/onsi/gomega/format"
+)
+
+type BeNumericallyMatcher struct {
+       Comparator string
+       CompareTo  []interface{}
+}
+
+func (matcher *BeNumericallyMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("to be %s", matcher.Comparator), matcher.CompareTo[0])
+}
+
+func (matcher *BeNumericallyMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("not to be %s", matcher.Comparator), matcher.CompareTo[0])
+}
+
+func (matcher *BeNumericallyMatcher) Match(actual interface{}) (success bool, err error) {
+       if len(matcher.CompareTo) == 0 || len(matcher.CompareTo) > 2 {
+               return false, fmt.Errorf("BeNumerically requires 1 or 2 CompareTo arguments.  Got:\n%s", format.Object(matcher.CompareTo, 1))
+       }
+       if !isNumber(actual) {
+               return false, fmt.Errorf("Expected a number.  Got:\n%s", format.Object(actual, 1))
+       }
+       if !isNumber(matcher.CompareTo[0]) {
+               return false, fmt.Errorf("Expected a number.  Got:\n%s", format.Object(matcher.CompareTo[0], 1))
+       }
+       if len(matcher.CompareTo) == 2 && !isNumber(matcher.CompareTo[1]) {
+               return false, fmt.Errorf("Expected a number.  Got:\n%s", format.Object(matcher.CompareTo[0], 1))
+       }
+
+       switch matcher.Comparator {
+       case "==", "~", ">", ">=", "<", "<=":
+       default:
+               return false, fmt.Errorf("Unknown comparator: %s", matcher.Comparator)
+       }
+
+       if isFloat(actual) || isFloat(matcher.CompareTo[0]) {
+               var secondOperand float64 = 1e-8
+               if len(matcher.CompareTo) == 2 {
+                       secondOperand = toFloat(matcher.CompareTo[1])
+               }
+               success = matcher.matchFloats(toFloat(actual), toFloat(matcher.CompareTo[0]), secondOperand)
+       } else if isInteger(actual) {
+               var secondOperand int64 = 0
+               if len(matcher.CompareTo) == 2 {
+                       secondOperand = toInteger(matcher.CompareTo[1])
+               }
+               success = matcher.matchIntegers(toInteger(actual), toInteger(matcher.CompareTo[0]), secondOperand)
+       } else if isUnsignedInteger(actual) {
+               var secondOperand uint64 = 0
+               if len(matcher.CompareTo) == 2 {
+                       secondOperand = toUnsignedInteger(matcher.CompareTo[1])
+               }
+               success = matcher.matchUnsignedIntegers(toUnsignedInteger(actual), toUnsignedInteger(matcher.CompareTo[0]), secondOperand)
+       } else {
+               return false, fmt.Errorf("Failed to compare:\n%s\n%s:\n%s", format.Object(actual, 1), matcher.Comparator, format.Object(matcher.CompareTo[0], 1))
+       }
+
+       return success, nil
+}
+
+func (matcher *BeNumericallyMatcher) matchIntegers(actual, compareTo, threshold int64) (success bool) {
+       switch matcher.Comparator {
+       case "==", "~":
+               diff := actual - compareTo
+               return -threshold <= diff && diff <= threshold
+       case ">":
+               return (actual > compareTo)
+       case ">=":
+               return (actual >= compareTo)
+       case "<":
+               return (actual < compareTo)
+       case "<=":
+               return (actual <= compareTo)
+       }
+       return false
+}
+
+func (matcher *BeNumericallyMatcher) matchUnsignedIntegers(actual, compareTo, threshold uint64) (success bool) {
+       switch matcher.Comparator {
+       case "==", "~":
+               if actual < compareTo {
+                       actual, compareTo = compareTo, actual
+               }
+               return actual-compareTo <= threshold
+       case ">":
+               return (actual > compareTo)
+       case ">=":
+               return (actual >= compareTo)
+       case "<":
+               return (actual < compareTo)
+       case "<=":
+               return (actual <= compareTo)
+       }
+       return false
+}
+
+func (matcher *BeNumericallyMatcher) matchFloats(actual, compareTo, threshold float64) (success bool) {
+       switch matcher.Comparator {
+       case "~":
+               return math.Abs(actual-compareTo) <= threshold
+       case "==":
+               return (actual == compareTo)
+       case ">":
+               return (actual > compareTo)
+       case ">=":
+               return (actual >= compareTo)
+       case "<":
+               return (actual < compareTo)
+       case "<=":
+               return (actual <= compareTo)
+       }
+       return false
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go
new file mode 100644 (file)
index 0000000..43fdb1f
--- /dev/null
@@ -0,0 +1,148 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("BeNumerically", func() {
+       Context("when passed a number", func() {
+               It("should support ==", func() {
+                       Ω(uint32(5)).Should(BeNumerically("==", 5))
+                       Ω(float64(5.0)).Should(BeNumerically("==", 5))
+                       Ω(int8(5)).Should(BeNumerically("==", 5))
+               })
+
+               It("should not have false positives", func() {
+                       Ω(5.1).ShouldNot(BeNumerically("==", 5))
+                       Ω(5).ShouldNot(BeNumerically("==", 5.1))
+               })
+
+               It("should support >", func() {
+                       Ω(uint32(5)).Should(BeNumerically(">", 4))
+                       Ω(float64(5.0)).Should(BeNumerically(">", 4.9))
+                       Ω(int8(5)).Should(BeNumerically(">", 4))
+
+                       Ω(uint32(5)).ShouldNot(BeNumerically(">", 5))
+                       Ω(float64(5.0)).ShouldNot(BeNumerically(">", 5.0))
+                       Ω(int8(5)).ShouldNot(BeNumerically(">", 5))
+               })
+
+               It("should support <", func() {
+                       Ω(uint32(5)).Should(BeNumerically("<", 6))
+                       Ω(float64(5.0)).Should(BeNumerically("<", 5.1))
+                       Ω(int8(5)).Should(BeNumerically("<", 6))
+
+                       Ω(uint32(5)).ShouldNot(BeNumerically("<", 5))
+                       Ω(float64(5.0)).ShouldNot(BeNumerically("<", 5.0))
+                       Ω(int8(5)).ShouldNot(BeNumerically("<", 5))
+               })
+
+               It("should support >=", func() {
+                       Ω(uint32(5)).Should(BeNumerically(">=", 4))
+                       Ω(float64(5.0)).Should(BeNumerically(">=", 4.9))
+                       Ω(int8(5)).Should(BeNumerically(">=", 4))
+
+                       Ω(uint32(5)).Should(BeNumerically(">=", 5))
+                       Ω(float64(5.0)).Should(BeNumerically(">=", 5.0))
+                       Ω(int8(5)).Should(BeNumerically(">=", 5))
+
+                       Ω(uint32(5)).ShouldNot(BeNumerically(">=", 6))
+                       Ω(float64(5.0)).ShouldNot(BeNumerically(">=", 5.1))
+                       Ω(int8(5)).ShouldNot(BeNumerically(">=", 6))
+               })
+
+               It("should support <=", func() {
+                       Ω(uint32(5)).Should(BeNumerically("<=", 6))
+                       Ω(float64(5.0)).Should(BeNumerically("<=", 5.1))
+                       Ω(int8(5)).Should(BeNumerically("<=", 6))
+
+                       Ω(uint32(5)).Should(BeNumerically("<=", 5))
+                       Ω(float64(5.0)).Should(BeNumerically("<=", 5.0))
+                       Ω(int8(5)).Should(BeNumerically("<=", 5))
+
+                       Ω(uint32(5)).ShouldNot(BeNumerically("<=", 4))
+                       Ω(float64(5.0)).ShouldNot(BeNumerically("<=", 4.9))
+                       Ω(int8(5)).Should(BeNumerically("<=", 5))
+               })
+
+               Context("when passed ~", func() {
+                       Context("when passed a float", func() {
+                               Context("and there is no precision parameter", func() {
+                                       It("should default to 1e-8", func() {
+                                               Ω(5.00000001).Should(BeNumerically("~", 5.00000002))
+                                               Ω(5.00000001).ShouldNot(BeNumerically("~", 5.0000001))
+                                       })
+                               })
+
+                               Context("and there is a precision parameter", func() {
+                                       It("should use the precision parameter", func() {
+                                               Ω(5.1).Should(BeNumerically("~", 5.19, 0.1))
+                                               Ω(5.1).Should(BeNumerically("~", 5.01, 0.1))
+                                               Ω(5.1).ShouldNot(BeNumerically("~", 5.22, 0.1))
+                                               Ω(5.1).ShouldNot(BeNumerically("~", 4.98, 0.1))
+                                       })
+                               })
+                       })
+
+                       Context("when passed an int/uint", func() {
+                               Context("and there is no precision parameter", func() {
+                                       It("should just do strict equality", func() {
+                                               Ω(5).Should(BeNumerically("~", 5))
+                                               Ω(5).ShouldNot(BeNumerically("~", 6))
+                                               Ω(uint(5)).ShouldNot(BeNumerically("~", 6))
+                                       })
+                               })
+
+                               Context("and there is a precision parameter", func() {
+                                       It("should use precision paramter", func() {
+                                               Ω(5).Should(BeNumerically("~", 6, 2))
+                                               Ω(5).ShouldNot(BeNumerically("~", 8, 2))
+                                               Ω(uint(5)).Should(BeNumerically("~", 6, 1))
+                                       })
+                               })
+                       })
+               })
+       })
+
+       Context("when passed a non-number", func() {
+               It("should error", func() {
+                       success, err := (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{5}}).Match("foo")
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeNumericallyMatcher{Comparator: "=="}).Match(5)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeNumericallyMatcher{Comparator: "~", CompareTo: []interface{}{3.0, "foo"}}).Match(5.0)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{"bar"}}).Match(5)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{"bar"}}).Match("foo")
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{nil}}).Match(0)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{0}}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when passed an unsupported comparator", func() {
+               It("should error", func() {
+                       success, err := (&BeNumericallyMatcher{Comparator: "!=", CompareTo: []interface{}{5}}).Match(4)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go
new file mode 100644 (file)
index 0000000..d7c3223
--- /dev/null
@@ -0,0 +1,71 @@
+package matchers
+
+import (
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/format"
+)
+
+type BeSentMatcher struct {
+       Arg           interface{}
+       channelClosed bool
+}
+
+func (matcher *BeSentMatcher) Match(actual interface{}) (success bool, err error) {
+       if !isChan(actual) {
+               return false, fmt.Errorf("BeSent expects a channel.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       channelType := reflect.TypeOf(actual)
+       channelValue := reflect.ValueOf(actual)
+
+       if channelType.ChanDir() == reflect.RecvDir {
+               return false, fmt.Errorf("BeSent matcher cannot be passed a receive-only channel.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       argType := reflect.TypeOf(matcher.Arg)
+       assignable := argType.AssignableTo(channelType.Elem())
+
+       if !assignable {
+               return false, fmt.Errorf("Cannot pass:\n%s to the channel:\n%s\nThe types don't match.", format.Object(matcher.Arg, 1), format.Object(actual, 1))
+       }
+
+       argValue := reflect.ValueOf(matcher.Arg)
+
+       defer func() {
+               if e := recover(); e != nil {
+                       success = false
+                       err = fmt.Errorf("Cannot send to a closed channel")
+                       matcher.channelClosed = true
+               }
+       }()
+
+       winnerIndex, _, _ := reflect.Select([]reflect.SelectCase{
+               reflect.SelectCase{Dir: reflect.SelectSend, Chan: channelValue, Send: argValue},
+               reflect.SelectCase{Dir: reflect.SelectDefault},
+       })
+
+       var didSend bool
+       if winnerIndex == 0 {
+               didSend = true
+       }
+
+       return didSend, nil
+}
+
+func (matcher *BeSentMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to send:", matcher.Arg)
+}
+
+func (matcher *BeSentMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to send:", matcher.Arg)
+}
+
+func (matcher *BeSentMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
+       if !isChan(actual) {
+               return false
+       }
+
+       return !matcher.channelClosed
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go
new file mode 100644 (file)
index 0000000..205d71f
--- /dev/null
@@ -0,0 +1,106 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/gomega/matchers"
+       "time"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+var _ = Describe("BeSent", func() {
+       Context("when passed a channel and a matching type", func() {
+               Context("when the channel is ready to receive", func() {
+                       It("should succeed and send the value down the channel", func() {
+                               c := make(chan string)
+                               d := make(chan string)
+                               go func() {
+                                       val := <-c
+                                       d <- val
+                               }()
+
+                               time.Sleep(10 * time.Millisecond)
+
+                               Ω(c).Should(BeSent("foo"))
+                               Eventually(d).Should(Receive(Equal("foo")))
+                       })
+
+                       It("should succeed (with a buffered channel)", func() {
+                               c := make(chan string, 1)
+                               Ω(c).Should(BeSent("foo"))
+                               Ω(<-c).Should(Equal("foo"))
+                       })
+               })
+
+               Context("when the channel is not ready to receive", func() {
+                       It("should fail and not send down the channel", func() {
+                               c := make(chan string)
+                               Ω(c).ShouldNot(BeSent("foo"))
+                               Consistently(c).ShouldNot(Receive())
+                       })
+               })
+
+               Context("when the channel is eventually ready to receive", func() {
+                       It("should succeed", func() {
+                               c := make(chan string)
+                               d := make(chan string)
+                               go func() {
+                                       time.Sleep(30 * time.Millisecond)
+                                       val := <-c
+                                       d <- val
+                               }()
+
+                               Eventually(c).Should(BeSent("foo"))
+                               Eventually(d).Should(Receive(Equal("foo")))
+                       })
+               })
+
+               Context("when the channel is closed", func() {
+                       It("should error", func() {
+                               c := make(chan string)
+                               close(c)
+                               success, err := (&BeSentMatcher{Arg: "foo"}).Match(c)
+                               Ω(success).Should(BeFalse())
+                               Ω(err).Should(HaveOccurred())
+                       })
+
+                       It("should short-circuit Eventually", func() {
+                               c := make(chan string)
+                               close(c)
+
+                               t := time.Now()
+                               failures := InterceptGomegaFailures(func() {
+                                       Eventually(c, 10.0).Should(BeSent("foo"))
+                               })
+                               Ω(failures).Should(HaveLen(1))
+                               Ω(time.Since(t)).Should(BeNumerically("<", time.Second))
+                       })
+               })
+       })
+
+       Context("when passed a channel and a non-matching type", func() {
+               It("should error", func() {
+                       success, err := (&BeSentMatcher{Arg: "foo"}).Match(make(chan int, 1))
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when passed a receive-only channel", func() {
+               It("should error", func() {
+                       var c <-chan string
+                       c = make(chan string, 1)
+                       success, err := (&BeSentMatcher{Arg: "foo"}).Match(c)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when passed a nonchannel", func() {
+               It("should error", func() {
+                       success, err := (&BeSentMatcher{Arg: "foo"}).Match("bar")
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go
new file mode 100644 (file)
index 0000000..abda4eb
--- /dev/null
@@ -0,0 +1,65 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+       "time"
+)
+
+type BeTemporallyMatcher struct {
+       Comparator string
+       CompareTo  time.Time
+       Threshold  []time.Duration
+}
+
+func (matcher *BeTemporallyMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("to be %s", matcher.Comparator), matcher.CompareTo)
+}
+
+func (matcher *BeTemporallyMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("not to be %s", matcher.Comparator), matcher.CompareTo)
+}
+
+func (matcher *BeTemporallyMatcher) Match(actual interface{}) (bool, error) {
+       // predicate to test for time.Time type
+       isTime := func(t interface{}) bool {
+               _, ok := t.(time.Time)
+               return ok
+       }
+
+       if !isTime(actual) {
+               return false, fmt.Errorf("Expected a time.Time.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       switch matcher.Comparator {
+       case "==", "~", ">", ">=", "<", "<=":
+       default:
+               return false, fmt.Errorf("Unknown comparator: %s", matcher.Comparator)
+       }
+
+       var threshold = time.Millisecond
+       if len(matcher.Threshold) == 1 {
+               threshold = matcher.Threshold[0]
+       }
+
+       return matcher.matchTimes(actual.(time.Time), matcher.CompareTo, threshold), nil
+}
+
+func (matcher *BeTemporallyMatcher) matchTimes(actual, compareTo time.Time, threshold time.Duration) (success bool) {
+       switch matcher.Comparator {
+       case "==":
+               return actual.Equal(compareTo)
+       case "~":
+               diff := actual.Sub(compareTo)
+               return -threshold <= diff && diff <= threshold
+       case ">":
+               return actual.After(compareTo)
+       case ">=":
+               return !actual.Before(compareTo)
+       case "<":
+               return actual.Before(compareTo)
+       case "<=":
+               return !actual.After(compareTo)
+       }
+       return false
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go
new file mode 100644 (file)
index 0000000..feb33e5
--- /dev/null
@@ -0,0 +1,98 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+       "time"
+)
+
+var _ = Describe("BeTemporally", func() {
+
+       var t0, t1, t2 time.Time
+       BeforeEach(func() {
+               t0 = time.Now()
+               t1 = t0.Add(time.Second)
+               t2 = t0.Add(-time.Second)
+       })
+
+       Context("When comparing times", func() {
+
+               It("should support ==", func() {
+                       Ω(t0).Should(BeTemporally("==", t0))
+                       Ω(t1).ShouldNot(BeTemporally("==", t0))
+                       Ω(t0).ShouldNot(BeTemporally("==", t1))
+                       Ω(t0).ShouldNot(BeTemporally("==", time.Time{}))
+               })
+
+               It("should support >", func() {
+                       Ω(t0).Should(BeTemporally(">", t2))
+                       Ω(t0).ShouldNot(BeTemporally(">", t0))
+                       Ω(t2).ShouldNot(BeTemporally(">", t0))
+               })
+
+               It("should support <", func() {
+                       Ω(t0).Should(BeTemporally("<", t1))
+                       Ω(t0).ShouldNot(BeTemporally("<", t0))
+                       Ω(t1).ShouldNot(BeTemporally("<", t0))
+               })
+
+               It("should support >=", func() {
+                       Ω(t0).Should(BeTemporally(">=", t2))
+                       Ω(t0).Should(BeTemporally(">=", t0))
+                       Ω(t0).ShouldNot(BeTemporally(">=", t1))
+               })
+
+               It("should support <=", func() {
+                       Ω(t0).Should(BeTemporally("<=", t1))
+                       Ω(t0).Should(BeTemporally("<=", t0))
+                       Ω(t0).ShouldNot(BeTemporally("<=", t2))
+               })
+
+               Context("when passed ~", func() {
+                       Context("and there is no precision parameter", func() {
+                               BeforeEach(func() {
+                                       t1 = t0.Add(time.Millisecond / 2)
+                                       t2 = t0.Add(-2 * time.Millisecond)
+                               })
+                               It("should approximate", func() {
+                                       Ω(t0).Should(BeTemporally("~", t0))
+                                       Ω(t0).Should(BeTemporally("~", t1))
+                                       Ω(t0).ShouldNot(BeTemporally("~", t2))
+                               })
+                       })
+
+                       Context("and there is a precision parameter", func() {
+                               BeforeEach(func() {
+                                       t2 = t0.Add(3 * time.Second)
+                               })
+                               It("should use precision paramter", func() {
+                                       d := 2 * time.Second
+                                       Ω(t0).Should(BeTemporally("~", t0, d))
+                                       Ω(t0).Should(BeTemporally("~", t1, d))
+                                       Ω(t0).ShouldNot(BeTemporally("~", t2, d))
+                               })
+                       })
+               })
+       })
+
+       Context("when passed a non-time", func() {
+               It("should error", func() {
+                       success, err := (&BeTemporallyMatcher{Comparator: "==", CompareTo: t0}).Match("foo")
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&BeTemporallyMatcher{Comparator: "=="}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when passed an unsupported comparator", func() {
+               It("should error", func() {
+                       success, err := (&BeTemporallyMatcher{Comparator: "!=", CompareTo: t0}).Match(t2)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go
new file mode 100644 (file)
index 0000000..1275e5f
--- /dev/null
@@ -0,0 +1,25 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+)
+
+type BeTrueMatcher struct {
+}
+
+func (matcher *BeTrueMatcher) Match(actual interface{}) (success bool, err error) {
+       if !isBool(actual) {
+               return false, fmt.Errorf("Expected a boolean.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       return actual.(bool), nil
+}
+
+func (matcher *BeTrueMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to be true")
+}
+
+func (matcher *BeTrueMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to be true")
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go
new file mode 100644 (file)
index 0000000..ca32e56
--- /dev/null
@@ -0,0 +1,20 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("BeTrue", func() {
+       It("should handle true and false correctly", func() {
+               Ω(true).Should(BeTrue())
+               Ω(false).ShouldNot(BeTrue())
+       })
+
+       It("should only support booleans", func() {
+               success, err := (&BeTrueMatcher{}).Match("foo")
+               Ω(success).Should(BeFalse())
+               Ω(err).Should(HaveOccurred())
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/be_zero_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_zero_matcher.go
new file mode 100644 (file)
index 0000000..b39c914
--- /dev/null
@@ -0,0 +1,27 @@
+package matchers
+
+import (
+       "github.com/onsi/gomega/format"
+       "reflect"
+)
+
+type BeZeroMatcher struct {
+}
+
+func (matcher *BeZeroMatcher) Match(actual interface{}) (success bool, err error) {
+       if actual == nil {
+               return true, nil
+       }
+       zeroValue := reflect.Zero(reflect.TypeOf(actual)).Interface()
+
+       return reflect.DeepEqual(zeroValue, actual), nil
+
+}
+
+func (matcher *BeZeroMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to be zero-valued")
+}
+
+func (matcher *BeZeroMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to be zero-valued")
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go
new file mode 100644 (file)
index 0000000..8ec3643
--- /dev/null
@@ -0,0 +1,30 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+var _ = Describe("BeZero", func() {
+       It("should succeed if the passed in object is the zero value for its type", func() {
+               Ω(nil).Should(BeZero())
+
+               Ω("").Should(BeZero())
+               Ω(" ").ShouldNot(BeZero())
+
+               Ω(0).Should(BeZero())
+               Ω(1).ShouldNot(BeZero())
+
+               Ω(0.0).Should(BeZero())
+               Ω(0.1).ShouldNot(BeZero())
+
+               // Ω([]int{}).Should(BeZero())
+               Ω([]int{1}).ShouldNot(BeZero())
+
+               // Ω(map[string]int{}).Should(BeZero())
+               Ω(map[string]int{"a": 1}).ShouldNot(BeZero())
+
+               Ω(myCustomType{}).Should(BeZero())
+               Ω(myCustomType{s: "a"}).ShouldNot(BeZero())
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/consist_of.go b/vendor/github.com/onsi/gomega/matchers/consist_of.go
new file mode 100644 (file)
index 0000000..7b0e088
--- /dev/null
@@ -0,0 +1,80 @@
+package matchers
+
+import (
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/format"
+       "github.com/onsi/gomega/matchers/support/goraph/bipartitegraph"
+)
+
+type ConsistOfMatcher struct {
+       Elements []interface{}
+}
+
+func (matcher *ConsistOfMatcher) Match(actual interface{}) (success bool, err error) {
+       if !isArrayOrSlice(actual) && !isMap(actual) {
+               return false, fmt.Errorf("ConsistOf matcher expects an array/slice/map.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       elements := matcher.Elements
+       if len(matcher.Elements) == 1 && isArrayOrSlice(matcher.Elements[0]) {
+               elements = []interface{}{}
+               value := reflect.ValueOf(matcher.Elements[0])
+               for i := 0; i < value.Len(); i++ {
+                       elements = append(elements, value.Index(i).Interface())
+               }
+       }
+
+       matchers := []interface{}{}
+       for _, element := range elements {
+               matcher, isMatcher := element.(omegaMatcher)
+               if !isMatcher {
+                       matcher = &EqualMatcher{Expected: element}
+               }
+               matchers = append(matchers, matcher)
+       }
+
+       values := matcher.valuesOf(actual)
+
+       if len(values) != len(matchers) {
+               return false, nil
+       }
+
+       neighbours := func(v, m interface{}) (bool, error) {
+               match, err := m.(omegaMatcher).Match(v)
+               return match && err == nil, nil
+       }
+
+       bipartiteGraph, err := bipartitegraph.NewBipartiteGraph(values, matchers, neighbours)
+       if err != nil {
+               return false, err
+       }
+
+       return len(bipartiteGraph.LargestMatching()) == len(values), nil
+}
+
+func (matcher *ConsistOfMatcher) valuesOf(actual interface{}) []interface{} {
+       value := reflect.ValueOf(actual)
+       values := []interface{}{}
+       if isMap(actual) {
+               keys := value.MapKeys()
+               for i := 0; i < value.Len(); i++ {
+                       values = append(values, value.MapIndex(keys[i]).Interface())
+               }
+       } else {
+               for i := 0; i < value.Len(); i++ {
+                       values = append(values, value.Index(i).Interface())
+               }
+       }
+
+       return values
+}
+
+func (matcher *ConsistOfMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to consist of", matcher.Elements)
+}
+
+func (matcher *ConsistOfMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to consist of", matcher.Elements)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/consist_of_test.go b/vendor/github.com/onsi/gomega/matchers/consist_of_test.go
new file mode 100644 (file)
index 0000000..dcd1afe
--- /dev/null
@@ -0,0 +1,75 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+var _ = Describe("ConsistOf", func() {
+       Context("with a slice", func() {
+               It("should do the right thing", func() {
+                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", "bar", "baz"))
+                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", "bar", "baz"))
+                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("baz", "bar", "foo"))
+                       Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "bar", "foo", "foo"))
+                       Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "foo"))
+               })
+       })
+
+       Context("with an array", func() {
+               It("should do the right thing", func() {
+                       Ω([3]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", "bar", "baz"))
+                       Ω([3]string{"foo", "bar", "baz"}).Should(ConsistOf("baz", "bar", "foo"))
+                       Ω([3]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "bar", "foo", "foo"))
+                       Ω([3]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "foo"))
+               })
+       })
+
+       Context("with a map", func() {
+               It("should apply to the values", func() {
+                       Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).Should(ConsistOf("foo", "bar", "baz"))
+                       Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).Should(ConsistOf("baz", "bar", "foo"))
+                       Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).ShouldNot(ConsistOf("baz", "bar", "foo", "foo"))
+                       Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).ShouldNot(ConsistOf("baz", "foo"))
+               })
+
+       })
+
+       Context("with anything else", func() {
+               It("should error", func() {
+                       failures := InterceptGomegaFailures(func() {
+                               Ω("foo").Should(ConsistOf("f", "o", "o"))
+                       })
+
+                       Ω(failures).Should(HaveLen(1))
+               })
+       })
+
+       Context("when passed matchers", func() {
+               It("should pass if the matchers pass", func() {
+                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", MatchRegexp("^ba"), "baz"))
+                       Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("foo", MatchRegexp("^ba")))
+                       Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("foo", MatchRegexp("^ba"), MatchRegexp("foo")))
+                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", MatchRegexp("^ba"), MatchRegexp("^ba")))
+                       Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("foo", MatchRegexp("^ba"), MatchRegexp("turducken")))
+               })
+
+               It("should not depend on the order of the matchers", func() {
+                       Ω([][]int{[]int{1, 2}, []int{2}}).Should(ConsistOf(ContainElement(1), ContainElement(2)))
+                       Ω([][]int{[]int{1, 2}, []int{2}}).Should(ConsistOf(ContainElement(2), ContainElement(1)))
+               })
+
+               Context("when a matcher errors", func() {
+                       It("should soldier on", func() {
+                               Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf(BeFalse(), "foo", "bar"))
+                               Ω([]interface{}{"foo", "bar", false}).Should(ConsistOf(BeFalse(), ContainSubstring("foo"), "bar"))
+                       })
+               })
+       })
+
+       Context("when passed exactly one argument, and that argument is a slice", func() {
+               It("should match against the elements of that argument", func() {
+                       Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf([]string{"foo", "bar", "baz"}))
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go b/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go
new file mode 100644 (file)
index 0000000..4159335
--- /dev/null
@@ -0,0 +1,56 @@
+package matchers
+
+import (
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/format"
+)
+
+type ContainElementMatcher struct {
+       Element interface{}
+}
+
+func (matcher *ContainElementMatcher) Match(actual interface{}) (success bool, err error) {
+       if !isArrayOrSlice(actual) && !isMap(actual) {
+               return false, fmt.Errorf("ContainElement matcher expects an array/slice/map.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       elemMatcher, elementIsMatcher := matcher.Element.(omegaMatcher)
+       if !elementIsMatcher {
+               elemMatcher = &EqualMatcher{Expected: matcher.Element}
+       }
+
+       value := reflect.ValueOf(actual)
+       var keys []reflect.Value
+       if isMap(actual) {
+               keys = value.MapKeys()
+       }
+       var lastError error
+       for i := 0; i < value.Len(); i++ {
+               var success bool
+               var err error
+               if isMap(actual) {
+                       success, err = elemMatcher.Match(value.MapIndex(keys[i]).Interface())
+               } else {
+                       success, err = elemMatcher.Match(value.Index(i).Interface())
+               }
+               if err != nil {
+                       lastError = err
+                       continue
+               }
+               if success {
+                       return true, nil
+               }
+       }
+
+       return false, lastError
+}
+
+func (matcher *ContainElementMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to contain element matching", matcher.Element)
+}
+
+func (matcher *ContainElementMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to contain element matching", matcher.Element)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go
new file mode 100644 (file)
index 0000000..38ee518
--- /dev/null
@@ -0,0 +1,76 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("ContainElement", func() {
+       Context("when passed a supported type", func() {
+               Context("and expecting a non-matcher", func() {
+                       It("should do the right thing", func() {
+                               Ω([2]int{1, 2}).Should(ContainElement(2))
+                               Ω([2]int{1, 2}).ShouldNot(ContainElement(3))
+
+                               Ω([]int{1, 2}).Should(ContainElement(2))
+                               Ω([]int{1, 2}).ShouldNot(ContainElement(3))
+
+                               Ω(map[string]int{"foo": 1, "bar": 2}).Should(ContainElement(2))
+                               Ω(map[int]int{3: 1, 4: 2}).ShouldNot(ContainElement(3))
+
+                               arr := make([]myCustomType, 2)
+                               arr[0] = myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}
+                               arr[1] = myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "c"}}
+                               Ω(arr).Should(ContainElement(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}))
+                               Ω(arr).ShouldNot(ContainElement(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"b", "c"}}))
+                       })
+               })
+
+               Context("and expecting a matcher", func() {
+                       It("should pass each element through the matcher", func() {
+                               Ω([]int{1, 2, 3}).Should(ContainElement(BeNumerically(">=", 3)))
+                               Ω([]int{1, 2, 3}).ShouldNot(ContainElement(BeNumerically(">", 3)))
+                               Ω(map[string]int{"foo": 1, "bar": 2}).Should(ContainElement(BeNumerically(">=", 2)))
+                               Ω(map[string]int{"foo": 1, "bar": 2}).ShouldNot(ContainElement(BeNumerically(">", 2)))
+                       })
+
+                       It("should power through even if the matcher ever fails", func() {
+                               Ω([]interface{}{1, 2, "3", 4}).Should(ContainElement(BeNumerically(">=", 3)))
+                       })
+
+                       It("should fail if the matcher fails", func() {
+                               actual := []interface{}{1, 2, "3", "4"}
+                               success, err := (&ContainElementMatcher{Element: BeNumerically(">=", 3)}).Match(actual)
+                               Ω(success).Should(BeFalse())
+                               Ω(err).Should(HaveOccurred())
+                       })
+               })
+       })
+
+       Context("when passed a correctly typed nil", func() {
+               It("should operate succesfully on the passed in value", func() {
+                       var nilSlice []int
+                       Ω(nilSlice).ShouldNot(ContainElement(1))
+
+                       var nilMap map[int]string
+                       Ω(nilMap).ShouldNot(ContainElement("foo"))
+               })
+       })
+
+       Context("when passed an unsupported type", func() {
+               It("should error", func() {
+                       success, err := (&ContainElementMatcher{Element: 0}).Match(0)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&ContainElementMatcher{Element: 0}).Match("abc")
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&ContainElementMatcher{Element: 0}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go b/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go
new file mode 100644 (file)
index 0000000..2e76089
--- /dev/null
@@ -0,0 +1,37 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+       "strings"
+)
+
+type ContainSubstringMatcher struct {
+       Substr string
+       Args   []interface{}
+}
+
+func (matcher *ContainSubstringMatcher) Match(actual interface{}) (success bool, err error) {
+       actualString, ok := toString(actual)
+       if !ok {
+               return false, fmt.Errorf("ContainSubstring matcher requires a string or stringer.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       return strings.Contains(actualString, matcher.stringToMatch()), nil
+}
+
+func (matcher *ContainSubstringMatcher) stringToMatch() string {
+       stringToMatch := matcher.Substr
+       if len(matcher.Args) > 0 {
+               stringToMatch = fmt.Sprintf(matcher.Substr, matcher.Args...)
+       }
+       return stringToMatch
+}
+
+func (matcher *ContainSubstringMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to contain substring", matcher.stringToMatch())
+}
+
+func (matcher *ContainSubstringMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to contain substring", matcher.stringToMatch())
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go
new file mode 100644 (file)
index 0000000..6935168
--- /dev/null
@@ -0,0 +1,36 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("ContainSubstringMatcher", func() {
+       Context("when actual is a string", func() {
+               It("should match against the string", func() {
+                       Ω("Marvelous").Should(ContainSubstring("rve"))
+                       Ω("Marvelous").ShouldNot(ContainSubstring("boo"))
+               })
+       })
+
+       Context("when the matcher is called with multiple arguments", func() {
+               It("should pass the string and arguments to sprintf", func() {
+                       Ω("Marvelous3").Should(ContainSubstring("velous%d", 3))
+               })
+       })
+
+       Context("when actual is a stringer", func() {
+               It("should call the stringer and match agains the returned string", func() {
+                       Ω(&myStringer{a: "Abc3"}).Should(ContainSubstring("bc3"))
+               })
+       })
+
+       Context("when actual is neither a string nor a stringer", func() {
+               It("should error", func() {
+                       success, err := (&ContainSubstringMatcher{Substr: "2"}).Match(2)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/equal_matcher.go b/vendor/github.com/onsi/gomega/matchers/equal_matcher.go
new file mode 100644 (file)
index 0000000..874e6a6
--- /dev/null
@@ -0,0 +1,33 @@
+package matchers
+
+import (
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/format"
+)
+
+type EqualMatcher struct {
+       Expected interface{}
+}
+
+func (matcher *EqualMatcher) Match(actual interface{}) (success bool, err error) {
+       if actual == nil && matcher.Expected == nil {
+               return false, fmt.Errorf("Refusing to compare <nil> to <nil>.\nBe explicit and use BeNil() instead.  This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.")
+       }
+       return reflect.DeepEqual(actual, matcher.Expected), nil
+}
+
+func (matcher *EqualMatcher) FailureMessage(actual interface{}) (message string) {
+       actualString, actualOK := actual.(string)
+       expectedString, expectedOK := matcher.Expected.(string)
+       if actualOK && expectedOK {
+               return format.MessageWithDiff(actualString, "to equal", expectedString)
+       }
+
+       return format.Message(actual, "to equal", matcher.Expected)
+}
+
+func (matcher *EqualMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to equal", matcher.Expected)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go
new file mode 100644 (file)
index 0000000..2add0b7
--- /dev/null
@@ -0,0 +1,78 @@
+package matchers_test
+
+import (
+       "errors"
+       "strings"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("Equal", func() {
+       Context("when asserting that nil equals nil", func() {
+               It("should error", func() {
+                       success, err := (&EqualMatcher{Expected: nil}).Match(nil)
+
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("When asserting equality between objects", func() {
+               It("should do the right thing", func() {
+                       Ω(5).Should(Equal(5))
+                       Ω(5.0).Should(Equal(5.0))
+
+                       Ω(5).ShouldNot(Equal("5"))
+                       Ω(5).ShouldNot(Equal(5.0))
+                       Ω(5).ShouldNot(Equal(3))
+
+                       Ω("5").Should(Equal("5"))
+                       Ω([]int{1, 2}).Should(Equal([]int{1, 2}))
+                       Ω([]int{1, 2}).ShouldNot(Equal([]int{2, 1}))
+                       Ω(map[string]string{"a": "b", "c": "d"}).Should(Equal(map[string]string{"a": "b", "c": "d"}))
+                       Ω(map[string]string{"a": "b", "c": "d"}).ShouldNot(Equal(map[string]string{"a": "b", "c": "e"}))
+                       Ω(errors.New("foo")).Should(Equal(errors.New("foo")))
+                       Ω(errors.New("foo")).ShouldNot(Equal(errors.New("bar")))
+
+                       Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).Should(Equal(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}))
+                       Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "bar", n: 3, f: 2.0, arr: []string{"a", "b"}}))
+                       Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 2, f: 2.0, arr: []string{"a", "b"}}))
+                       Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 3, f: 3.0, arr: []string{"a", "b"}}))
+                       Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b", "c"}}))
+               })
+       })
+
+       Describe("failure messages", func() {
+               It("shows the two strings simply when they are short", func() {
+                       subject := EqualMatcher{Expected: "eric"}
+
+                       failureMessage := subject.FailureMessage("tim")
+                       Ω(failureMessage).To(BeEquivalentTo(expectedShortStringFailureMessage))
+               })
+
+               It("shows the exact point where two long strings differ", func() {
+                       stringWithB := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+                       stringWithZ := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+                       subject := EqualMatcher{Expected: stringWithZ}
+
+                       failureMessage := subject.FailureMessage(stringWithB)
+                       Ω(failureMessage).To(BeEquivalentTo(expectedLongStringFailureMessage))
+               })
+       })
+})
+
+var expectedShortStringFailureMessage = strings.TrimSpace(`
+Expected
+    <string>: tim
+to equal
+    <string>: eric
+`)
+var expectedLongStringFailureMessage = strings.TrimSpace(`
+Expected
+    <string>: "...aaaaabaaaaa..."
+to equal               |
+    <string>: "...aaaaazaaaaa..."
+`)
diff --git a/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go
new file mode 100644 (file)
index 0000000..7ace93d
--- /dev/null
@@ -0,0 +1,28 @@
+package matchers
+
+import (
+       "fmt"
+
+       "github.com/onsi/gomega/format"
+)
+
+type HaveCapMatcher struct {
+       Count int
+}
+
+func (matcher *HaveCapMatcher) Match(actual interface{}) (success bool, err error) {
+       length, ok := capOf(actual)
+       if !ok {
+               return false, fmt.Errorf("HaveCap matcher expects a array/channel/slice.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       return length == matcher.Count, nil
+}
+
+func (matcher *HaveCapMatcher) FailureMessage(actual interface{}) (message string) {
+       return fmt.Sprintf("Expected\n%s\nto have capacity %d", format.Object(actual, 1), matcher.Count)
+}
+
+func (matcher *HaveCapMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return fmt.Sprintf("Expected\n%s\nnot to have capacity %d", format.Object(actual, 1), matcher.Count)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go
new file mode 100644 (file)
index 0000000..a92a177
--- /dev/null
@@ -0,0 +1,50 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("HaveCap", func() {
+       Context("when passed a supported type", func() {
+               It("should do the right thing", func() {
+                       Ω([0]int{}).Should(HaveCap(0))
+                       Ω([2]int{1}).Should(HaveCap(2))
+
+                       Ω([]int{}).Should(HaveCap(0))
+                       Ω([]int{1, 2, 3, 4, 5}[:2]).Should(HaveCap(5))
+                       Ω(make([]int, 0, 5)).Should(HaveCap(5))
+
+                       c := make(chan bool, 3)
+                       Ω(c).Should(HaveCap(3))
+                       c <- true
+                       c <- true
+                       Ω(c).Should(HaveCap(3))
+
+                       Ω(make(chan bool)).Should(HaveCap(0))
+               })
+       })
+
+       Context("when passed a correctly typed nil", func() {
+               It("should operate succesfully on the passed in value", func() {
+                       var nilSlice []int
+                       Ω(nilSlice).Should(HaveCap(0))
+
+                       var nilChan chan int
+                       Ω(nilChan).Should(HaveCap(0))
+               })
+       })
+
+       Context("when passed an unsupported type", func() {
+               It("should error", func() {
+                       success, err := (&HaveCapMatcher{Count: 0}).Match(0)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&HaveCapMatcher{Count: 0}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go
new file mode 100644 (file)
index 0000000..5701ba6
--- /dev/null
@@ -0,0 +1,53 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+       "reflect"
+)
+
+type HaveKeyMatcher struct {
+       Key interface{}
+}
+
+func (matcher *HaveKeyMatcher) Match(actual interface{}) (success bool, err error) {
+       if !isMap(actual) {
+               return false, fmt.Errorf("HaveKey matcher expects a map.  Got:%s", format.Object(actual, 1))
+       }
+
+       keyMatcher, keyIsMatcher := matcher.Key.(omegaMatcher)
+       if !keyIsMatcher {
+               keyMatcher = &EqualMatcher{Expected: matcher.Key}
+       }
+
+       keys := reflect.ValueOf(actual).MapKeys()
+       for i := 0; i < len(keys); i++ {
+               success, err := keyMatcher.Match(keys[i].Interface())
+               if err != nil {
+                       return false, fmt.Errorf("HaveKey's key matcher failed with:\n%s%s", format.Indent, err.Error())
+               }
+               if success {
+                       return true, nil
+               }
+       }
+
+       return false, nil
+}
+
+func (matcher *HaveKeyMatcher) FailureMessage(actual interface{}) (message string) {
+       switch matcher.Key.(type) {
+       case omegaMatcher:
+               return format.Message(actual, "to have key matching", matcher.Key)
+       default:
+               return format.Message(actual, "to have key", matcher.Key)
+       }
+}
+
+func (matcher *HaveKeyMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       switch matcher.Key.(type) {
+       case omegaMatcher:
+               return format.Message(actual, "not to have key matching", matcher.Key)
+       default:
+               return format.Message(actual, "not to have key", matcher.Key)
+       }
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go
new file mode 100644 (file)
index 0000000..c663e30
--- /dev/null
@@ -0,0 +1,73 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("HaveKey", func() {
+       var (
+               stringKeys map[string]int
+               intKeys    map[int]string
+               objKeys    map[*myCustomType]string
+
+               customA *myCustomType
+               customB *myCustomType
+       )
+       BeforeEach(func() {
+               stringKeys = map[string]int{"foo": 2, "bar": 3}
+               intKeys = map[int]string{2: "foo", 3: "bar"}
+
+               customA = &myCustomType{s: "a", n: 2, f: 2.3, arr: []string{"ice", "cream"}}
+               customB = &myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}}
+               objKeys = map[*myCustomType]string{customA: "aardvark", customB: "kangaroo"}
+       })
+
+       Context("when passed a map", func() {
+               It("should do the right thing", func() {
+                       Ω(stringKeys).Should(HaveKey("foo"))
+                       Ω(stringKeys).ShouldNot(HaveKey("baz"))
+
+                       Ω(intKeys).Should(HaveKey(2))
+                       Ω(intKeys).ShouldNot(HaveKey(4))
+
+                       Ω(objKeys).Should(HaveKey(customA))
+                       Ω(objKeys).Should(HaveKey(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}}))
+                       Ω(objKeys).ShouldNot(HaveKey(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"apple", "pie"}}))
+               })
+       })
+
+       Context("when passed a correctly typed nil", func() {
+               It("should operate succesfully on the passed in value", func() {
+                       var nilMap map[int]string
+                       Ω(nilMap).ShouldNot(HaveKey("foo"))
+               })
+       })
+
+       Context("when the passed in key is actually a matcher", func() {
+               It("should pass each element through the matcher", func() {
+                       Ω(stringKeys).Should(HaveKey(ContainSubstring("oo")))
+                       Ω(stringKeys).ShouldNot(HaveKey(ContainSubstring("foobar")))
+               })
+
+               It("should fail if the matcher ever fails", func() {
+                       actual := map[int]string{1: "a", 3: "b", 2: "c"}
+                       success, err := (&HaveKeyMatcher{Key: ContainSubstring("ar")}).Match(actual)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when passed something that is not a map", func() {
+               It("should error", func() {
+                       success, err := (&HaveKeyMatcher{Key: "foo"}).Match([]string{"foo"})
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&HaveKeyMatcher{Key: "foo"}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go
new file mode 100644 (file)
index 0000000..464ac18
--- /dev/null
@@ -0,0 +1,73 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+       "reflect"
+)
+
+type HaveKeyWithValueMatcher struct {
+       Key   interface{}
+       Value interface{}
+}
+
+func (matcher *HaveKeyWithValueMatcher) Match(actual interface{}) (success bool, err error) {
+       if !isMap(actual) {
+               return false, fmt.Errorf("HaveKeyWithValue matcher expects a map.  Got:%s", format.Object(actual, 1))
+       }
+
+       keyMatcher, keyIsMatcher := matcher.Key.(omegaMatcher)
+       if !keyIsMatcher {
+               keyMatcher = &EqualMatcher{Expected: matcher.Key}
+       }
+
+       valueMatcher, valueIsMatcher := matcher.Value.(omegaMatcher)
+       if !valueIsMatcher {
+               valueMatcher = &EqualMatcher{Expected: matcher.Value}
+       }
+
+       keys := reflect.ValueOf(actual).MapKeys()
+       for i := 0; i < len(keys); i++ {
+               success, err := keyMatcher.Match(keys[i].Interface())
+               if err != nil {
+                       return false, fmt.Errorf("HaveKeyWithValue's key matcher failed with:\n%s%s", format.Indent, err.Error())
+               }
+               if success {
+                       actualValue := reflect.ValueOf(actual).MapIndex(keys[i])
+                       success, err := valueMatcher.Match(actualValue.Interface())
+                       if err != nil {
+                               return false, fmt.Errorf("HaveKeyWithValue's value matcher failed with:\n%s%s", format.Indent, err.Error())
+                       }
+                       return success, nil
+               }
+       }
+
+       return false, nil
+}
+
+func (matcher *HaveKeyWithValueMatcher) FailureMessage(actual interface{}) (message string) {
+       str := "to have {key: value}"
+       if _, ok := matcher.Key.(omegaMatcher); ok {
+               str += " matching"
+       } else if _, ok := matcher.Value.(omegaMatcher); ok {
+               str += " matching"
+       }
+
+       expect := make(map[interface{}]interface{}, 1)
+       expect[matcher.Key] = matcher.Value
+       return format.Message(actual, str, expect)
+}
+
+func (matcher *HaveKeyWithValueMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       kStr := "not to have key"
+       if _, ok := matcher.Key.(omegaMatcher); ok {
+               kStr = "not to have key matching"
+       }
+
+       vStr := "or that key's value not be"
+       if _, ok := matcher.Value.(omegaMatcher); ok {
+               vStr = "or to have that key's value not matching"
+       }
+
+       return format.Message(actual, kStr, matcher.Key, vStr, matcher.Value)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go
new file mode 100644 (file)
index 0000000..06a2242
--- /dev/null
@@ -0,0 +1,82 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("HaveKeyWithValue", func() {
+       var (
+               stringKeys map[string]int
+               intKeys    map[int]string
+               objKeys    map[*myCustomType]*myCustomType
+
+               customA *myCustomType
+               customB *myCustomType
+       )
+       BeforeEach(func() {
+               stringKeys = map[string]int{"foo": 2, "bar": 3}
+               intKeys = map[int]string{2: "foo", 3: "bar"}
+
+               customA = &myCustomType{s: "a", n: 2, f: 2.3, arr: []string{"ice", "cream"}}
+               customB = &myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}}
+               objKeys = map[*myCustomType]*myCustomType{customA: customA, customB: customA}
+       })
+
+       Context("when passed a map", func() {
+               It("should do the right thing", func() {
+                       Ω(stringKeys).Should(HaveKeyWithValue("foo", 2))
+                       Ω(stringKeys).ShouldNot(HaveKeyWithValue("foo", 1))
+                       Ω(stringKeys).ShouldNot(HaveKeyWithValue("baz", 2))
+                       Ω(stringKeys).ShouldNot(HaveKeyWithValue("baz", 1))
+
+                       Ω(intKeys).Should(HaveKeyWithValue(2, "foo"))
+                       Ω(intKeys).ShouldNot(HaveKeyWithValue(4, "foo"))
+                       Ω(intKeys).ShouldNot(HaveKeyWithValue(2, "baz"))
+
+                       Ω(objKeys).Should(HaveKeyWithValue(customA, customA))
+                       Ω(objKeys).Should(HaveKeyWithValue(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}}, &myCustomType{s: "a", n: 2, f: 2.3, arr: []string{"ice", "cream"}}))
+                       Ω(objKeys).ShouldNot(HaveKeyWithValue(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"apple", "pie"}}, customA))
+               })
+       })
+
+       Context("when passed a correctly typed nil", func() {
+               It("should operate succesfully on the passed in value", func() {
+                       var nilMap map[int]string
+                       Ω(nilMap).ShouldNot(HaveKeyWithValue("foo", "bar"))
+               })
+       })
+
+       Context("when the passed in key or value is actually a matcher", func() {
+               It("should pass each element through the matcher", func() {
+                       Ω(stringKeys).Should(HaveKeyWithValue(ContainSubstring("oo"), 2))
+                       Ω(intKeys).Should(HaveKeyWithValue(2, ContainSubstring("oo")))
+                       Ω(stringKeys).ShouldNot(HaveKeyWithValue(ContainSubstring("foobar"), 2))
+               })
+
+               It("should fail if the matcher ever fails", func() {
+                       actual := map[int]string{1: "a", 3: "b", 2: "c"}
+                       success, err := (&HaveKeyWithValueMatcher{Key: ContainSubstring("ar"), Value: 2}).Match(actual)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       otherActual := map[string]int{"a": 1, "b": 2, "c": 3}
+                       success, err = (&HaveKeyWithValueMatcher{Key: "a", Value: ContainSubstring("1")}).Match(otherActual)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when passed something that is not a map", func() {
+               It("should error", func() {
+                       success, err := (&HaveKeyWithValueMatcher{Key: "foo", Value: "bar"}).Match([]string{"foo"})
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&HaveKeyWithValueMatcher{Key: "foo", Value: "bar"}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_len_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_len_matcher.go
new file mode 100644 (file)
index 0000000..a183775
--- /dev/null
@@ -0,0 +1,27 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+)
+
+type HaveLenMatcher struct {
+       Count int
+}
+
+func (matcher *HaveLenMatcher) Match(actual interface{}) (success bool, err error) {
+       length, ok := lengthOf(actual)
+       if !ok {
+               return false, fmt.Errorf("HaveLen matcher expects a string/array/map/channel/slice.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       return length == matcher.Count, nil
+}
+
+func (matcher *HaveLenMatcher) FailureMessage(actual interface{}) (message string) {
+       return fmt.Sprintf("Expected\n%s\nto have length %d", format.Object(actual, 1), matcher.Count)
+}
+
+func (matcher *HaveLenMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return fmt.Sprintf("Expected\n%s\nnot to have length %d", format.Object(actual, 1), matcher.Count)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go
new file mode 100644 (file)
index 0000000..1e6aa69
--- /dev/null
@@ -0,0 +1,53 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("HaveLen", func() {
+       Context("when passed a supported type", func() {
+               It("should do the right thing", func() {
+                       Ω("").Should(HaveLen(0))
+                       Ω("AA").Should(HaveLen(2))
+
+                       Ω([0]int{}).Should(HaveLen(0))
+                       Ω([2]int{1, 2}).Should(HaveLen(2))
+
+                       Ω([]int{}).Should(HaveLen(0))
+                       Ω([]int{1, 2, 3}).Should(HaveLen(3))
+
+                       Ω(map[string]int{}).Should(HaveLen(0))
+                       Ω(map[string]int{"a": 1, "b": 2, "c": 3, "d": 4}).Should(HaveLen(4))
+
+                       c := make(chan bool, 3)
+                       Ω(c).Should(HaveLen(0))
+                       c <- true
+                       c <- true
+                       Ω(c).Should(HaveLen(2))
+               })
+       })
+
+       Context("when passed a correctly typed nil", func() {
+               It("should operate succesfully on the passed in value", func() {
+                       var nilSlice []int
+                       Ω(nilSlice).Should(HaveLen(0))
+
+                       var nilMap map[int]string
+                       Ω(nilMap).Should(HaveLen(0))
+               })
+       })
+
+       Context("when passed an unsupported type", func() {
+               It("should error", func() {
+                       success, err := (&HaveLenMatcher{Count: 0}).Match(0)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&HaveLenMatcher{Count: 0}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go
new file mode 100644 (file)
index 0000000..ebdd717
--- /dev/null
@@ -0,0 +1,33 @@
+package matchers
+
+import (
+       "fmt"
+
+       "github.com/onsi/gomega/format"
+)
+
+type HaveOccurredMatcher struct {
+}
+
+func (matcher *HaveOccurredMatcher) Match(actual interface{}) (success bool, err error) {
+       // is purely nil?
+       if actual == nil {
+               return false, nil
+       }
+
+       // must be an 'error' type
+       if !isError(actual) {
+               return false, fmt.Errorf("Expected an error-type.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       // must be non-nil (or a pointer to a non-nil)
+       return !isNil(actual), nil
+}
+
+func (matcher *HaveOccurredMatcher) FailureMessage(actual interface{}) (message string) {
+       return fmt.Sprintf("Expected an error to have occurred.  Got:\n%s", format.Object(actual, 1))
+}
+
+func (matcher *HaveOccurredMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return fmt.Sprintf("Expected error:\n%s\n%s\n%s", format.Object(actual, 1), format.IndentString(actual.(error).Error(), 1), "not to have occurred")
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go
new file mode 100644 (file)
index 0000000..009e23e
--- /dev/null
@@ -0,0 +1,58 @@
+package matchers_test
+
+import (
+       "errors"
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+type CustomErr struct {
+       msg string
+}
+
+func (e *CustomErr) Error() string {
+       return e.msg
+}
+
+var _ = Describe("HaveOccurred", func() {
+       It("should succeed if matching an error", func() {
+               Ω(errors.New("Foo")).Should(HaveOccurred())
+       })
+
+       It("should not succeed with nil", func() {
+               Ω(nil).ShouldNot(HaveOccurred())
+       })
+
+       It("should only support errors and nil", func() {
+               success, err := (&HaveOccurredMatcher{}).Match("foo")
+               Ω(success).Should(BeFalse())
+               Ω(err).Should(HaveOccurred())
+
+               success, err = (&HaveOccurredMatcher{}).Match("")
+               Ω(success).Should(BeFalse())
+               Ω(err).Should(HaveOccurred())
+       })
+
+       It("doesn't support non-error type", func() {
+               success, err := (&HaveOccurredMatcher{}).Match(AnyType{})
+               Ω(success).Should(BeFalse())
+               Ω(err).Should(MatchError("Expected an error-type.  Got:\n    <matchers_test.AnyType>: {}"))
+       })
+
+       It("doesn't support non-error pointer type", func() {
+               success, err := (&HaveOccurredMatcher{}).Match(&AnyType{})
+               Ω(success).Should(BeFalse())
+               Ω(err).Should(MatchError(MatchRegexp(`Expected an error-type.  Got:\n    <*matchers_test.AnyType | 0x[[:xdigit:]]+>: {}`)))
+       })
+
+       It("should succeed with pointer types that conform to error interface", func() {
+               err := &CustomErr{"ohai"}
+               Ω(err).Should(HaveOccurred())
+       })
+
+       It("should not succeed with nil pointers to types that conform to error interface", func() {
+               var err *CustomErr = nil
+               Ω(err).ShouldNot(HaveOccurred())
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher.go
new file mode 100644 (file)
index 0000000..8b63a89
--- /dev/null
@@ -0,0 +1,35 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+)
+
+type HavePrefixMatcher struct {
+       Prefix string
+       Args   []interface{}
+}
+
+func (matcher *HavePrefixMatcher) Match(actual interface{}) (success bool, err error) {
+       actualString, ok := toString(actual)
+       if !ok {
+               return false, fmt.Errorf("HavePrefix matcher requires a string or stringer.  Got:\n%s", format.Object(actual, 1))
+       }
+       prefix := matcher.prefix()
+       return len(actualString) >= len(prefix) && actualString[0:len(prefix)] == prefix, nil
+}
+
+func (matcher *HavePrefixMatcher) prefix() string {
+       if len(matcher.Args) > 0 {
+               return fmt.Sprintf(matcher.Prefix, matcher.Args...)
+       }
+       return matcher.Prefix
+}
+
+func (matcher *HavePrefixMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to have prefix", matcher.prefix())
+}
+
+func (matcher *HavePrefixMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to have prefix", matcher.prefix())
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go
new file mode 100644 (file)
index 0000000..bec3f97
--- /dev/null
@@ -0,0 +1,36 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("HavePrefixMatcher", func() {
+       Context("when actual is a string", func() {
+               It("should match a string prefix", func() {
+                       Ω("Ab").Should(HavePrefix("A"))
+                       Ω("A").ShouldNot(HavePrefix("Ab"))
+               })
+       })
+
+       Context("when the matcher is called with multiple arguments", func() {
+               It("should pass the string and arguments to sprintf", func() {
+                       Ω("C3PO").Should(HavePrefix("C%dP", 3))
+               })
+       })
+
+       Context("when actual is a stringer", func() {
+               It("should call the stringer and match against the returned string", func() {
+                       Ω(&myStringer{a: "Ab"}).Should(HavePrefix("A"))
+               })
+       })
+
+       Context("when actual is neither a string nor a stringer", func() {
+               It("should error", func() {
+                       success, err := (&HavePrefixMatcher{Prefix: "2"}).Match(2)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher.go
new file mode 100644 (file)
index 0000000..afc78fc
--- /dev/null
@@ -0,0 +1,35 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+)
+
+type HaveSuffixMatcher struct {
+       Suffix string
+       Args   []interface{}
+}
+
+func (matcher *HaveSuffixMatcher) Match(actual interface{}) (success bool, err error) {
+       actualString, ok := toString(actual)
+       if !ok {
+               return false, fmt.Errorf("HaveSuffix matcher requires a string or stringer.  Got:\n%s", format.Object(actual, 1))
+       }
+       suffix := matcher.suffix()
+       return len(actualString) >= len(suffix) && actualString[len(actualString)-len(suffix):] == suffix, nil
+}
+
+func (matcher *HaveSuffixMatcher) suffix() string {
+       if len(matcher.Args) > 0 {
+               return fmt.Sprintf(matcher.Suffix, matcher.Args...)
+       }
+       return matcher.Suffix
+}
+
+func (matcher *HaveSuffixMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to have suffix", matcher.suffix())
+}
+
+func (matcher *HaveSuffixMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to have suffix", matcher.suffix())
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go
new file mode 100644 (file)
index 0000000..72e8975
--- /dev/null
@@ -0,0 +1,36 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("HaveSuffixMatcher", func() {
+       Context("when actual is a string", func() {
+               It("should match a string suffix", func() {
+                       Ω("Ab").Should(HaveSuffix("b"))
+                       Ω("A").ShouldNot(HaveSuffix("Ab"))
+               })
+       })
+
+       Context("when the matcher is called with multiple arguments", func() {
+               It("should pass the string and arguments to sprintf", func() {
+                       Ω("C3PO").Should(HaveSuffix("%dPO", 3))
+               })
+       })
+
+       Context("when actual is a stringer", func() {
+               It("should call the stringer and match against the returned string", func() {
+                       Ω(&myStringer{a: "Ab"}).Should(HaveSuffix("b"))
+               })
+       })
+
+       Context("when actual is neither a string nor a stringer", func() {
+               It("should error", func() {
+                       success, err := (&HaveSuffixMatcher{Suffix: "2"}).Match(2)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go b/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go
new file mode 100644 (file)
index 0000000..03cdf04
--- /dev/null
@@ -0,0 +1,50 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+       "reflect"
+)
+
+type MatchErrorMatcher struct {
+       Expected interface{}
+}
+
+func (matcher *MatchErrorMatcher) Match(actual interface{}) (success bool, err error) {
+       if isNil(actual) {
+               return false, fmt.Errorf("Expected an error, got nil")
+       }
+
+       if !isError(actual) {
+               return false, fmt.Errorf("Expected an error.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       actualErr := actual.(error)
+
+       if isString(matcher.Expected) {
+               return reflect.DeepEqual(actualErr.Error(), matcher.Expected), nil
+       }
+
+       if isError(matcher.Expected) {
+               return reflect.DeepEqual(actualErr, matcher.Expected), nil
+       }
+
+       var subMatcher omegaMatcher
+       var hasSubMatcher bool
+       if matcher.Expected != nil {
+               subMatcher, hasSubMatcher = (matcher.Expected).(omegaMatcher)
+               if hasSubMatcher {
+                       return subMatcher.Match(actualErr.Error())
+               }
+       }
+
+       return false, fmt.Errorf("MatchError must be passed an error, string, or Matcher that can match on strings.  Got:\n%s", format.Object(matcher.Expected, 1))
+}
+
+func (matcher *MatchErrorMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to match error", matcher.Expected)
+}
+
+func (matcher *MatchErrorMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to match error", matcher.Expected)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go
new file mode 100644 (file)
index 0000000..338b512
--- /dev/null
@@ -0,0 +1,93 @@
+package matchers_test
+
+import (
+       "errors"
+       "fmt"
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+type CustomError struct {
+}
+
+func (c CustomError) Error() string {
+       return "an error"
+}
+
+var _ = Describe("MatchErrorMatcher", func() {
+       Context("When asserting against an error", func() {
+               It("should succeed when matching with an error", func() {
+                       err := errors.New("an error")
+                       fmtErr := fmt.Errorf("an error")
+                       customErr := CustomError{}
+
+                       Ω(err).Should(MatchError(errors.New("an error")))
+                       Ω(err).ShouldNot(MatchError(errors.New("another error")))
+
+                       Ω(fmtErr).Should(MatchError(errors.New("an error")))
+                       Ω(customErr).Should(MatchError(CustomError{}))
+               })
+
+               It("should succeed when matching with a string", func() {
+                       err := errors.New("an error")
+                       fmtErr := fmt.Errorf("an error")
+                       customErr := CustomError{}
+
+                       Ω(err).Should(MatchError("an error"))
+                       Ω(err).ShouldNot(MatchError("another error"))
+
+                       Ω(fmtErr).Should(MatchError("an error"))
+                       Ω(customErr).Should(MatchError("an error"))
+               })
+
+               Context("when passed a matcher", func() {
+                       It("should pass if the matcher passes against the error string", func() {
+                               err := errors.New("error 123 abc")
+
+                               Ω(err).Should(MatchError(MatchRegexp(`\d{3}`)))
+                       })
+
+                       It("should fail if the matcher fails against the error string", func() {
+                               err := errors.New("no digits")
+                               Ω(err).ShouldNot(MatchError(MatchRegexp(`\d`)))
+                       })
+               })
+
+               It("should fail when passed anything else", func() {
+                       actualErr := errors.New("an error")
+                       _, err := (&MatchErrorMatcher{
+                               Expected: []byte("an error"),
+                       }).Match(actualErr)
+                       Ω(err).Should(HaveOccurred())
+
+                       _, err = (&MatchErrorMatcher{
+                               Expected: 3,
+                       }).Match(actualErr)
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when passed nil", func() {
+               It("should fail", func() {
+                       _, err := (&MatchErrorMatcher{
+                               Expected: "an error",
+                       }).Match(nil)
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when passed a non-error", func() {
+               It("should fail", func() {
+                       _, err := (&MatchErrorMatcher{
+                               Expected: "an error",
+                       }).Match("an error")
+                       Ω(err).Should(HaveOccurred())
+
+                       _, err = (&MatchErrorMatcher{
+                               Expected: "an error",
+                       }).Match(3)
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/match_json_matcher.go b/vendor/github.com/onsi/gomega/matchers/match_json_matcher.go
new file mode 100644 (file)
index 0000000..e61978a
--- /dev/null
@@ -0,0 +1,64 @@
+package matchers
+
+import (
+       "bytes"
+       "encoding/json"
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/format"
+)
+
+type MatchJSONMatcher struct {
+       JSONToMatch interface{}
+}
+
+func (matcher *MatchJSONMatcher) Match(actual interface{}) (success bool, err error) {
+       actualString, expectedString, err := matcher.prettyPrint(actual)
+       if err != nil {
+               return false, err
+       }
+
+       var aval interface{}
+       var eval interface{}
+
+       // this is guarded by prettyPrint
+       json.Unmarshal([]byte(actualString), &aval)
+       json.Unmarshal([]byte(expectedString), &eval)
+
+       return reflect.DeepEqual(aval, eval), nil
+}
+
+func (matcher *MatchJSONMatcher) FailureMessage(actual interface{}) (message string) {
+       actualString, expectedString, _ := matcher.prettyPrint(actual)
+       return format.Message(actualString, "to match JSON of", expectedString)
+}
+
+func (matcher *MatchJSONMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       actualString, expectedString, _ := matcher.prettyPrint(actual)
+       return format.Message(actualString, "not to match JSON of", expectedString)
+}
+
+func (matcher *MatchJSONMatcher) prettyPrint(actual interface{}) (actualFormatted, expectedFormatted string, err error) {
+       actualString, ok := toString(actual)
+       if !ok {
+               return "", "", fmt.Errorf("MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got actual:\n%s", format.Object(actual, 1))
+       }
+       expectedString, ok := toString(matcher.JSONToMatch)
+       if !ok {
+               return "", "", fmt.Errorf("MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got expected:\n%s", format.Object(matcher.JSONToMatch, 1))
+       }
+
+       abuf := new(bytes.Buffer)
+       ebuf := new(bytes.Buffer)
+
+       if err := json.Indent(abuf, []byte(actualString), "", "  "); err != nil {
+               return "", "", fmt.Errorf("Actual '%s' should be valid JSON, but it is not.\nUnderlying error:%s", actualString, err)
+       }
+
+       if err := json.Indent(ebuf, []byte(expectedString), "", "  "); err != nil {
+               return "", "", fmt.Errorf("Expected '%s' should be valid JSON, but it is not.\nUnderlying error:%s", expectedString, err)
+       }
+
+       return abuf.String(), ebuf.String(), nil
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go
new file mode 100644 (file)
index 0000000..755c4ad
--- /dev/null
@@ -0,0 +1,73 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("MatchJSONMatcher", func() {
+       Context("When passed stringifiables", func() {
+               It("should succeed if the JSON matches", func() {
+                       Ω("{}").Should(MatchJSON("{}"))
+                       Ω(`{"a":1}`).Should(MatchJSON(`{"a":1}`))
+                       Ω(`{
+                                    "a":1
+                                }`).Should(MatchJSON(`{"a":1}`))
+                       Ω(`{"a":1, "b":2}`).Should(MatchJSON(`{"b":2, "a":1}`))
+                       Ω(`{"a":1}`).ShouldNot(MatchJSON(`{"b":2, "a":1}`))
+               })
+
+               It("should work with byte arrays", func() {
+                       Ω([]byte("{}")).Should(MatchJSON([]byte("{}")))
+                       Ω("{}").Should(MatchJSON([]byte("{}")))
+                       Ω([]byte("{}")).Should(MatchJSON("{}"))
+               })
+       })
+
+       Context("when the expected is not valid JSON", func() {
+               It("should error and explain why", func() {
+                       success, err := (&MatchJSONMatcher{JSONToMatch: `{}`}).Match(`oops`)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+                       Ω(err.Error()).Should(ContainSubstring("Actual 'oops' should be valid JSON"))
+               })
+       })
+
+       Context("when the actual is not valid JSON", func() {
+               It("should error and explain why", func() {
+                       success, err := (&MatchJSONMatcher{JSONToMatch: `oops`}).Match(`{}`)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+                       Ω(err.Error()).Should(ContainSubstring("Expected 'oops' should be valid JSON"))
+               })
+       })
+
+       Context("when the expected is neither a string nor a stringer nor a byte array", func() {
+               It("should error", func() {
+                       success, err := (&MatchJSONMatcher{JSONToMatch: 2}).Match("{}")
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+                       Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got expected:\n    <int>: 2"))
+
+                       success, err = (&MatchJSONMatcher{JSONToMatch: nil}).Match("{}")
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+                       Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got expected:\n    <nil>: nil"))
+               })
+       })
+
+       Context("when the actual is neither a string nor a stringer nor a byte array", func() {
+               It("should error", func() {
+                       success, err := (&MatchJSONMatcher{JSONToMatch: "{}"}).Match(2)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+                       Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got actual:\n    <int>: 2"))
+
+                       success, err = (&MatchJSONMatcher{JSONToMatch: "{}"}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+                       Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte.  Got actual:\n    <nil>: nil"))
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher.go b/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher.go
new file mode 100644 (file)
index 0000000..7ca79a1
--- /dev/null
@@ -0,0 +1,42 @@
+package matchers
+
+import (
+       "fmt"
+       "github.com/onsi/gomega/format"
+       "regexp"
+)
+
+type MatchRegexpMatcher struct {
+       Regexp string
+       Args   []interface{}
+}
+
+func (matcher *MatchRegexpMatcher) Match(actual interface{}) (success bool, err error) {
+       actualString, ok := toString(actual)
+       if !ok {
+               return false, fmt.Errorf("RegExp matcher requires a string or stringer.\nGot:%s", format.Object(actual, 1))
+       }
+
+       match, err := regexp.Match(matcher.regexp(), []byte(actualString))
+       if err != nil {
+               return false, fmt.Errorf("RegExp match failed to compile with error:\n\t%s", err.Error())
+       }
+
+       return match, nil
+}
+
+func (matcher *MatchRegexpMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to match regular expression", matcher.regexp())
+}
+
+func (matcher *MatchRegexpMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "not to match regular expression", matcher.regexp())
+}
+
+func (matcher *MatchRegexpMatcher) regexp() string {
+       re := matcher.Regexp
+       if len(matcher.Args) > 0 {
+               re = fmt.Sprintf(matcher.Regexp, matcher.Args...)
+       }
+       return re
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go
new file mode 100644 (file)
index 0000000..bb521cc
--- /dev/null
@@ -0,0 +1,44 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("MatchRegexp", func() {
+       Context("when actual is a string", func() {
+               It("should match against the string", func() {
+                       Ω(" a2!bla").Should(MatchRegexp(`\d!`))
+                       Ω(" a2!bla").ShouldNot(MatchRegexp(`[A-Z]`))
+               })
+       })
+
+       Context("when actual is a stringer", func() {
+               It("should call the stringer and match agains the returned string", func() {
+                       Ω(&myStringer{a: "Abc3"}).Should(MatchRegexp(`[A-Z][a-z]+\d`))
+               })
+       })
+
+       Context("when the matcher is called with multiple arguments", func() {
+               It("should pass the string and arguments to sprintf", func() {
+                       Ω(" a23!bla").Should(MatchRegexp(`\d%d!`, 3))
+               })
+       })
+
+       Context("when actual is neither a string nor a stringer", func() {
+               It("should error", func() {
+                       success, err := (&MatchRegexpMatcher{Regexp: `\d`}).Match(2)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when the passed in regexp fails to compile", func() {
+               It("should error", func() {
+                       success, err := (&MatchRegexpMatcher{Regexp: "("}).Match("Foo")
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher.go b/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher.go
new file mode 100644 (file)
index 0000000..69fb51a
--- /dev/null
@@ -0,0 +1,74 @@
+package matchers
+
+import (
+       "fmt"
+       "reflect"
+       "strings"
+
+       "github.com/onsi/gomega/format"
+       "gopkg.in/yaml.v2"
+)
+
+type MatchYAMLMatcher struct {
+       YAMLToMatch interface{}
+}
+
+func (matcher *MatchYAMLMatcher) Match(actual interface{}) (success bool, err error) {
+       actualString, expectedString, err := matcher.toStrings(actual)
+       if err != nil {
+               return false, err
+       }
+
+       var aval interface{}
+       var eval interface{}
+
+       if err := yaml.Unmarshal([]byte(actualString), &aval); err != nil {
+               return false, fmt.Errorf("Actual '%s' should be valid YAML, but it is not.\nUnderlying error:%s", actualString, err)
+       }
+       if err := yaml.Unmarshal([]byte(expectedString), &eval); err != nil {
+               return false, fmt.Errorf("Expected '%s' should be valid YAML, but it is not.\nUnderlying error:%s", expectedString, err)
+       }
+
+       return reflect.DeepEqual(aval, eval), nil
+}
+
+func (matcher *MatchYAMLMatcher) FailureMessage(actual interface{}) (message string) {
+       actualString, expectedString, _ := matcher.toNormalisedStrings(actual)
+       return format.Message(actualString, "to match YAML of", expectedString)
+}
+
+func (matcher *MatchYAMLMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       actualString, expectedString, _ := matcher.toNormalisedStrings(actual)
+       return format.Message(actualString, "not to match YAML of", expectedString)
+}
+
+func (matcher *MatchYAMLMatcher) toNormalisedStrings(actual interface{}) (actualFormatted, expectedFormatted string, err error) {
+       actualString, expectedString, err := matcher.toStrings(actual)
+       return normalise(actualString), normalise(expectedString), err
+}
+
+func normalise(input string) string {
+       var val interface{}
+       err := yaml.Unmarshal([]byte(input), &val)
+       if err != nil {
+               panic(err) // guarded by Match
+       }
+       output, err := yaml.Marshal(val)
+       if err != nil {
+               panic(err) // guarded by Unmarshal
+       }
+       return strings.TrimSpace(string(output))
+}
+
+func (matcher *MatchYAMLMatcher) toStrings(actual interface{}) (actualFormatted, expectedFormatted string, err error) {
+       actualString, ok := toString(actual)
+       if !ok {
+               return "", "", fmt.Errorf("MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got actual:\n%s", format.Object(actual, 1))
+       }
+       expectedString, ok := toString(matcher.YAMLToMatch)
+       if !ok {
+               return "", "", fmt.Errorf("MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got expected:\n%s", format.Object(matcher.YAMLToMatch, 1))
+       }
+
+       return actualString, expectedString, nil
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go
new file mode 100644 (file)
index 0000000..8e63de1
--- /dev/null
@@ -0,0 +1,94 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("MatchYAMLMatcher", func() {
+       Context("When passed stringifiables", func() {
+               It("should succeed if the YAML matches", func() {
+                       Expect("---").Should(MatchYAML(""))
+                       Expect("a: 1").Should(MatchYAML(`{"a":1}`))
+                       Expect("a: 1\nb: 2").Should(MatchYAML(`{"b":2, "a":1}`))
+               })
+
+               It("should explain if the YAML does not match when it should", func() {
+                       message := (&MatchYAMLMatcher{YAMLToMatch: "a: 1"}).FailureMessage("b: 2")
+                       Expect(message).To(MatchRegexp(`Expected\s+<string>: b: 2\s+to match YAML of\s+<string>: a: 1`))
+               })
+
+               It("should normalise the expected and actual when explaining if the YAML does not match when it should", func() {
+                       message := (&MatchYAMLMatcher{YAMLToMatch: "a: 'one'"}).FailureMessage("{b: two}")
+                       Expect(message).To(MatchRegexp(`Expected\s+<string>: b: two\s+to match YAML of\s+<string>: a: one`))
+               })
+
+               It("should explain if the YAML matches when it should not", func() {
+                       message := (&MatchYAMLMatcher{YAMLToMatch: "a: 1"}).NegatedFailureMessage("a: 1")
+                       Expect(message).To(MatchRegexp(`Expected\s+<string>: a: 1\s+not to match YAML of\s+<string>: a: 1`))
+               })
+
+               It("should normalise the expected and actual when explaining if the YAML matches when it should not", func() {
+                       message := (&MatchYAMLMatcher{YAMLToMatch: "a: 'one'"}).NegatedFailureMessage("{a: one}")
+                       Expect(message).To(MatchRegexp(`Expected\s+<string>: a: one\s+not to match YAML of\s+<string>: a: one`))
+               })
+
+               It("should fail if the YAML does not match", func() {
+                       Expect("a: 1").ShouldNot(MatchYAML(`{"b":2, "a":1}`))
+               })
+
+               It("should work with byte arrays", func() {
+                       Expect([]byte("a: 1")).Should(MatchYAML([]byte("a: 1")))
+                       Expect("a: 1").Should(MatchYAML([]byte("a: 1")))
+                       Expect([]byte("a: 1")).Should(MatchYAML("a: 1"))
+               })
+       })
+
+       Context("when the expected is not valid YAML", func() {
+               It("should error and explain why", func() {
+                       success, err := (&MatchYAMLMatcher{YAMLToMatch: ""}).Match("good:\nbad")
+                       Expect(success).Should(BeFalse())
+                       Expect(err).Should(HaveOccurred())
+                       Expect(err.Error()).Should(ContainSubstring("Actual 'good:\nbad' should be valid YAML"))
+               })
+       })
+
+       Context("when the actual is not valid YAML", func() {
+               It("should error and explain why", func() {
+                       success, err := (&MatchYAMLMatcher{YAMLToMatch: "good:\nbad"}).Match("")
+                       Expect(success).Should(BeFalse())
+                       Expect(err).Should(HaveOccurred())
+                       Expect(err.Error()).Should(ContainSubstring("Expected 'good:\nbad' should be valid YAML"))
+               })
+       })
+
+       Context("when the expected is neither a string nor a stringer nor a byte array", func() {
+               It("should error", func() {
+                       success, err := (&MatchYAMLMatcher{YAMLToMatch: 2}).Match("")
+                       Expect(success).Should(BeFalse())
+                       Expect(err).Should(HaveOccurred())
+                       Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got expected:\n    <int>: 2"))
+
+                       success, err = (&MatchYAMLMatcher{YAMLToMatch: nil}).Match("")
+                       Expect(success).Should(BeFalse())
+                       Expect(err).Should(HaveOccurred())
+                       Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got expected:\n    <nil>: nil"))
+               })
+       })
+
+       Context("when the actual is neither a string nor a stringer nor a byte array", func() {
+               It("should error", func() {
+                       success, err := (&MatchYAMLMatcher{YAMLToMatch: ""}).Match(2)
+                       Expect(success).Should(BeFalse())
+                       Expect(err).Should(HaveOccurred())
+                       Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got actual:\n    <int>: 2"))
+
+                       success, err = (&MatchYAMLMatcher{YAMLToMatch: ""}).Match(nil)
+                       Expect(success).Should(BeFalse())
+                       Expect(err).Should(HaveOccurred())
+                       Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte.  Got actual:\n    <nil>: nil"))
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go b/vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go
new file mode 100644 (file)
index 0000000..01b11b9
--- /dev/null
@@ -0,0 +1,30 @@
+package matchers_test
+
+import (
+       "testing"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+)
+
+type myStringer struct {
+       a string
+}
+
+func (s *myStringer) String() string {
+       return s.a
+}
+
+type StringAlias string
+
+type myCustomType struct {
+       s   string
+       n   int
+       f   float32
+       arr []string
+}
+
+func Test(t *testing.T) {
+       RegisterFailHandler(Fail)
+       RunSpecs(t, "Gomega Matchers")
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/not.go b/vendor/github.com/onsi/gomega/matchers/not.go
new file mode 100644 (file)
index 0000000..2c91670
--- /dev/null
@@ -0,0 +1,30 @@
+package matchers
+
+import (
+       "github.com/onsi/gomega/internal/oraclematcher"
+       "github.com/onsi/gomega/types"
+)
+
+type NotMatcher struct {
+       Matcher types.GomegaMatcher
+}
+
+func (m *NotMatcher) Match(actual interface{}) (bool, error) {
+       success, err := m.Matcher.Match(actual)
+       if err != nil {
+               return false, err
+       }
+       return !success, nil
+}
+
+func (m *NotMatcher) FailureMessage(actual interface{}) (message string) {
+       return m.Matcher.NegatedFailureMessage(actual) // works beautifully
+}
+
+func (m *NotMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return m.Matcher.FailureMessage(actual) // works beautifully
+}
+
+func (m *NotMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
+       return oraclematcher.MatchMayChangeInTheFuture(m.Matcher, actual) // just return m.Matcher's value
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/not_test.go b/vendor/github.com/onsi/gomega/matchers/not_test.go
new file mode 100644 (file)
index 0000000..b3c1fdb
--- /dev/null
@@ -0,0 +1,57 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("NotMatcher", func() {
+       Context("basic examples", func() {
+               It("works", func() {
+                       Expect(input).To(Not(false1))
+                       Expect(input).To(Not(Not(true2)))
+                       Expect(input).ToNot(Not(true3))
+                       Expect(input).ToNot(Not(Not(false1)))
+                       Expect(input).To(Not(Not(Not(false2))))
+               })
+       })
+
+       Context("De Morgan's laws", func() {
+               It("~(A && B) == ~A || ~B", func() {
+                       Expect(input).To(Not(And(false1, false2)))
+                       Expect(input).To(Or(Not(false1), Not(false2)))
+               })
+               It("~(A || B) == ~A && ~B", func() {
+                       Expect(input).To(Not(Or(false1, false2)))
+                       Expect(input).To(And(Not(false1), Not(false2)))
+               })
+       })
+
+       Context("failure messages are opposite of original matchers' failure messages", func() {
+               Context("when match fails", func() {
+                       It("gives a descriptive message", func() {
+                               verifyFailureMessage(Not(HaveLen(2)), input, "not to have length 2")
+                       })
+               })
+
+               Context("when match succeeds, but expected it to fail", func() {
+                       It("gives a descriptive message", func() {
+                               verifyFailureMessage(Not(Not(HaveLen(3))), input, "to have length 3")
+                       })
+               })
+       })
+
+       Context("MatchMayChangeInTheFuture()", func() {
+               It("Propagates value from wrapped matcher", func() {
+                       m := Not(Or()) // an empty Or() always returns false, and indicates it cannot change
+                       Expect(m.Match("anything")).To(BeTrue())
+                       Expect(m.(*NotMatcher).MatchMayChangeInTheFuture("anything")).To(BeFalse())
+               })
+               It("Defaults to true", func() {
+                       m := Not(Equal(1)) // Equal does not have this method
+                       Expect(m.Match(2)).To(BeTrue())
+                       Expect(m.(*NotMatcher).MatchMayChangeInTheFuture(2)).To(BeTrue()) // defaults to true
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/or.go b/vendor/github.com/onsi/gomega/matchers/or.go
new file mode 100644 (file)
index 0000000..3bf7998
--- /dev/null
@@ -0,0 +1,67 @@
+package matchers
+
+import (
+       "fmt"
+
+       "github.com/onsi/gomega/format"
+       "github.com/onsi/gomega/internal/oraclematcher"
+       "github.com/onsi/gomega/types"
+)
+
+type OrMatcher struct {
+       Matchers []types.GomegaMatcher
+
+       // state
+       firstSuccessfulMatcher types.GomegaMatcher
+}
+
+func (m *OrMatcher) Match(actual interface{}) (success bool, err error) {
+       m.firstSuccessfulMatcher = nil
+       for _, matcher := range m.Matchers {
+               success, err := matcher.Match(actual)
+               if err != nil {
+                       return false, err
+               }
+               if success {
+                       m.firstSuccessfulMatcher = matcher
+                       return true, nil
+               }
+       }
+       return false, nil
+}
+
+func (m *OrMatcher) FailureMessage(actual interface{}) (message string) {
+       // not the most beautiful list of matchers, but not bad either...
+       return format.Message(actual, fmt.Sprintf("To satisfy at least one of these matchers: %s", m.Matchers))
+}
+
+func (m *OrMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return m.firstSuccessfulMatcher.NegatedFailureMessage(actual)
+}
+
+func (m *OrMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
+       /*
+               Example with 3 matchers: A, B, C
+
+               Match evaluates them: F, T, <?>  => T
+               So match is currently T, what should MatchMayChangeInTheFuture() return?
+               Seems like it only depends on B, since currently B MUST change to allow the result to become F
+
+               Match eval: F, F, F  => F
+               So match is currently F, what should MatchMayChangeInTheFuture() return?
+               Seems to depend on ANY of them being able to change to T.
+       */
+
+       if m.firstSuccessfulMatcher != nil {
+               // one of the matchers succeeded.. it must be able to change in order to affect the result
+               return oraclematcher.MatchMayChangeInTheFuture(m.firstSuccessfulMatcher, actual)
+       } else {
+               // so all matchers failed.. Any one of them changing would change the result.
+               for _, matcher := range m.Matchers {
+                       if oraclematcher.MatchMayChangeInTheFuture(matcher, actual) {
+                               return true
+                       }
+               }
+               return false // none of were going to change
+       }
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/or_test.go b/vendor/github.com/onsi/gomega/matchers/or_test.go
new file mode 100644 (file)
index 0000000..9589a17
--- /dev/null
@@ -0,0 +1,85 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("OrMatcher", func() {
+       It("works with positive cases", func() {
+               Expect(input).To(Or(true1))
+               Expect(input).To(Or(true1, true2))
+               Expect(input).To(Or(true1, false1))
+               Expect(input).To(Or(false1, true2))
+               Expect(input).To(Or(true1, true2, true3))
+               Expect(input).To(Or(true1, true2, false3))
+               Expect(input).To(Or(true1, false2, true3))
+               Expect(input).To(Or(false1, true2, true3))
+               Expect(input).To(Or(true1, false2, false3))
+               Expect(input).To(Or(false1, false2, true3))
+
+               // use alias
+               Expect(input).To(SatisfyAny(false1, false2, true3))
+       })
+
+       It("works with negative cases", func() {
+               Expect(input).ToNot(Or())
+               Expect(input).ToNot(Or(false1))
+               Expect(input).ToNot(Or(false1, false2))
+               Expect(input).ToNot(Or(false1, false2, false3))
+       })
+
+       Context("failure messages", func() {
+               Context("when match fails", func() {
+                       It("gives a descriptive message", func() {
+                               verifyFailureMessage(Or(false1, false2), input,
+                                       "To satisfy at least one of these matchers: [%!s(*matchers.HaveLenMatcher=&{1}) %!s(*matchers.EqualMatcher=&{hip})]")
+                       })
+               })
+
+               Context("when match succeeds, but expected it to fail", func() {
+                       It("gives a descriptive message", func() {
+                               verifyFailureMessage(Not(Or(true1, true2)), input, `not to have length 2`)
+                       })
+               })
+       })
+
+       Context("MatchMayChangeInTheFuture", func() {
+               Context("Match returned false", func() {
+                       It("returns true if any of the matchers could change", func() {
+                               // 3 matchers, all return false, and all could change
+                               m := Or(BeNil(), Equal("hip"), HaveLen(1))
+                               Expect(m.Match("hi")).To(BeFalse())
+                               Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // all 3 of these matchers default to 'true'
+                       })
+                       It("returns false if none of the matchers could change", func() {
+                               // empty Or() has the property of never matching, and never can change since there are no sub-matchers that could change
+                               m := Or()
+                               Expect(m.Match("anything")).To(BeFalse())
+                               Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("anything")).To(BeFalse())
+
+                               // Or() with 3 sub-matchers that return false, and can't change
+                               m = Or(Or(), Or(), Or())
+                               Expect(m.Match("hi")).To(BeFalse())
+                               Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse()) // the 3 empty Or()'s won't change
+                       })
+               })
+               Context("Match returned true", func() {
+                       Context("returns value of the successful matcher", func() {
+                               It("false if successful matcher not going to change", func() {
+                                       // 3 matchers: 1st returns false, 2nd returns true and is not going to change, 3rd is never called
+                                       m := Or(BeNil(), And(), Equal(1))
+                                       Expect(m.Match("hi")).To(BeTrue())
+                                       Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse())
+                               })
+                               It("true if successful matcher indicates it might change", func() {
+                                       // 3 matchers: 1st returns false, 2nd returns true and "might" change, 3rd is never called
+                                       m := Or(Not(BeNil()), Equal("hi"), Equal(1))
+                                       Expect(m.Match("hi")).To(BeTrue())
+                                       Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // Equal("hi") indicates it might change
+                               })
+                       })
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/panic_matcher.go b/vendor/github.com/onsi/gomega/matchers/panic_matcher.go
new file mode 100644 (file)
index 0000000..640f4db
--- /dev/null
@@ -0,0 +1,46 @@
+package matchers
+
+import (
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/format"
+)
+
+type PanicMatcher struct {
+       object interface{}
+}
+
+func (matcher *PanicMatcher) Match(actual interface{}) (success bool, err error) {
+       if actual == nil {
+               return false, fmt.Errorf("PanicMatcher expects a non-nil actual.")
+       }
+
+       actualType := reflect.TypeOf(actual)
+       if actualType.Kind() != reflect.Func {
+               return false, fmt.Errorf("PanicMatcher expects a function.  Got:\n%s", format.Object(actual, 1))
+       }
+       if !(actualType.NumIn() == 0 && actualType.NumOut() == 0) {
+               return false, fmt.Errorf("PanicMatcher expects a function with no arguments and no return value.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       success = false
+       defer func() {
+               if e := recover(); e != nil {
+                       matcher.object = e
+                       success = true
+               }
+       }()
+
+       reflect.ValueOf(actual).Call([]reflect.Value{})
+
+       return
+}
+
+func (matcher *PanicMatcher) FailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, "to panic")
+}
+
+func (matcher *PanicMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return format.Message(actual, fmt.Sprintf("not to panic, but panicked with\n%s", format.Object(matcher.object, 1)))
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go
new file mode 100644 (file)
index 0000000..6b859a7
--- /dev/null
@@ -0,0 +1,45 @@
+package matchers_test
+
+import (
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("Panic", func() {
+       Context("when passed something that's not a function that takes zero arguments and returns nothing", func() {
+               It("should error", func() {
+                       success, err := (&PanicMatcher{}).Match("foo")
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&PanicMatcher{}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&PanicMatcher{}).Match(func(foo string) {})
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&PanicMatcher{}).Match(func() string { return "bar" })
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when passed a function of the correct type", func() {
+               It("should call the function and pass if the function panics", func() {
+                       Ω(func() { panic("ack!") }).Should(Panic())
+                       Ω(func() {}).ShouldNot(Panic())
+               })
+       })
+
+       Context("when assertion fails", func() {
+               It("should print the object passed to Panic", func() {
+                       failuresMessages := InterceptGomegaFailures(func() {
+                               Ω(func() { panic("ack!") }).ShouldNot(Panic())
+                       })
+                       Ω(failuresMessages).Should(ConsistOf(MatchRegexp("not to panic, but panicked with\\s*<string>: ack!")))
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/receive_matcher.go b/vendor/github.com/onsi/gomega/matchers/receive_matcher.go
new file mode 100644 (file)
index 0000000..7a8c2cd
--- /dev/null
@@ -0,0 +1,126 @@
+package matchers
+
+import (
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/format"
+)
+
+type ReceiveMatcher struct {
+       Arg           interface{}
+       receivedValue reflect.Value
+       channelClosed bool
+}
+
+func (matcher *ReceiveMatcher) Match(actual interface{}) (success bool, err error) {
+       if !isChan(actual) {
+               return false, fmt.Errorf("ReceiveMatcher expects a channel.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       channelType := reflect.TypeOf(actual)
+       channelValue := reflect.ValueOf(actual)
+
+       if channelType.ChanDir() == reflect.SendDir {
+               return false, fmt.Errorf("ReceiveMatcher matcher cannot be passed a send-only channel.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       var subMatcher omegaMatcher
+       var hasSubMatcher bool
+
+       if matcher.Arg != nil {
+               subMatcher, hasSubMatcher = (matcher.Arg).(omegaMatcher)
+               if !hasSubMatcher {
+                       argType := reflect.TypeOf(matcher.Arg)
+                       if argType.Kind() != reflect.Ptr {
+                               return false, fmt.Errorf("Cannot assign a value from the channel:\n%s\nTo:\n%s\nYou need to pass a pointer!", format.Object(actual, 1), format.Object(matcher.Arg, 1))
+                       }
+
+                       assignable := channelType.Elem().AssignableTo(argType.Elem())
+                       if !assignable {
+                               return false, fmt.Errorf("Cannot assign a value from the channel:\n%s\nTo:\n%s", format.Object(actual, 1), format.Object(matcher.Arg, 1))
+                       }
+               }
+       }
+
+       winnerIndex, value, open := reflect.Select([]reflect.SelectCase{
+               reflect.SelectCase{Dir: reflect.SelectRecv, Chan: channelValue},
+               reflect.SelectCase{Dir: reflect.SelectDefault},
+       })
+
+       var closed bool
+       var didReceive bool
+       if winnerIndex == 0 {
+               closed = !open
+               didReceive = open
+       }
+       matcher.channelClosed = closed
+
+       if closed {
+               return false, nil
+       }
+
+       if hasSubMatcher {
+               if didReceive {
+                       matcher.receivedValue = value
+                       return subMatcher.Match(matcher.receivedValue.Interface())
+               } else {
+                       return false, nil
+               }
+       }
+
+       if didReceive {
+               if matcher.Arg != nil {
+                       outValue := reflect.ValueOf(matcher.Arg)
+                       reflect.Indirect(outValue).Set(value)
+               }
+
+               return true, nil
+       } else {
+               return false, nil
+       }
+}
+
+func (matcher *ReceiveMatcher) FailureMessage(actual interface{}) (message string) {
+       subMatcher, hasSubMatcher := (matcher.Arg).(omegaMatcher)
+
+       closedAddendum := ""
+       if matcher.channelClosed {
+               closedAddendum = " The channel is closed."
+       }
+
+       if hasSubMatcher {
+               if matcher.receivedValue.IsValid() {
+                       return subMatcher.FailureMessage(matcher.receivedValue.Interface())
+               }
+               return "When passed a matcher, ReceiveMatcher's channel *must* receive something."
+       } else {
+               return format.Message(actual, "to receive something."+closedAddendum)
+       }
+}
+
+func (matcher *ReceiveMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       subMatcher, hasSubMatcher := (matcher.Arg).(omegaMatcher)
+
+       closedAddendum := ""
+       if matcher.channelClosed {
+               closedAddendum = " The channel is closed."
+       }
+
+       if hasSubMatcher {
+               if matcher.receivedValue.IsValid() {
+                       return subMatcher.NegatedFailureMessage(matcher.receivedValue.Interface())
+               }
+               return "When passed a matcher, ReceiveMatcher's channel *must* receive something."
+       } else {
+               return format.Message(actual, "not to receive anything."+closedAddendum)
+       }
+}
+
+func (matcher *ReceiveMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
+       if !isChan(actual) {
+               return false
+       }
+
+       return !matcher.channelClosed
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go
new file mode 100644 (file)
index 0000000..938c078
--- /dev/null
@@ -0,0 +1,280 @@
+package matchers_test
+
+import (
+       "time"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+type kungFuActor interface {
+       DrunkenMaster() bool
+}
+
+type jackie struct {
+       name string
+}
+
+func (j *jackie) DrunkenMaster() bool {
+       return true
+}
+
+var _ = Describe("ReceiveMatcher", func() {
+       Context("with no argument", func() {
+               Context("for a buffered channel", func() {
+                       It("should succeed", func() {
+                               channel := make(chan bool, 1)
+
+                               Ω(channel).ShouldNot(Receive())
+
+                               channel <- true
+
+                               Ω(channel).Should(Receive())
+                       })
+               })
+
+               Context("for an unbuffered channel", func() {
+                       It("should succeed (eventually)", func() {
+                               channel := make(chan bool)
+
+                               Ω(channel).ShouldNot(Receive())
+
+                               go func() {
+                                       time.Sleep(10 * time.Millisecond)
+                                       channel <- true
+                               }()
+
+                               Eventually(channel).Should(Receive())
+                       })
+               })
+       })
+
+       Context("with a pointer argument", func() {
+               Context("of the correct type", func() {
+                       It("should write the value received on the channel to the pointer", func() {
+                               channel := make(chan int, 1)
+
+                               var value int
+
+                               Ω(channel).ShouldNot(Receive(&value))
+                               Ω(value).Should(BeZero())
+
+                               channel <- 17
+
+                               Ω(channel).Should(Receive(&value))
+                               Ω(value).Should(Equal(17))
+                       })
+               })
+
+               Context("to various types of objects", func() {
+                       It("should work", func() {
+                               //channels of strings
+                               stringChan := make(chan string, 1)
+                               stringChan <- "foo"
+
+                               var s string
+                               Ω(stringChan).Should(Receive(&s))
+                               Ω(s).Should(Equal("foo"))
+
+                               //channels of slices
+                               sliceChan := make(chan []bool, 1)
+                               sliceChan <- []bool{true, true, false}
+
+                               var sl []bool
+                               Ω(sliceChan).Should(Receive(&sl))
+                               Ω(sl).Should(Equal([]bool{true, true, false}))
+
+                               //channels of channels
+                               chanChan := make(chan chan bool, 1)
+                               c := make(chan bool)
+                               chanChan <- c
+
+                               var receivedC chan bool
+                               Ω(chanChan).Should(Receive(&receivedC))
+                               Ω(receivedC).Should(Equal(c))
+
+                               //channels of interfaces
+                               jackieChan := make(chan kungFuActor, 1)
+                               aJackie := &jackie{name: "Jackie Chan"}
+                               jackieChan <- aJackie
+
+                               var theJackie kungFuActor
+                               Ω(jackieChan).Should(Receive(&theJackie))
+                               Ω(theJackie).Should(Equal(aJackie))
+                       })
+               })
+
+               Context("of the wrong type", func() {
+                       It("should error", func() {
+                               channel := make(chan int)
+                               var incorrectType bool
+
+                               success, err := (&ReceiveMatcher{Arg: &incorrectType}).Match(channel)
+                               Ω(success).Should(BeFalse())
+                               Ω(err).Should(HaveOccurred())
+
+                               var notAPointer int
+                               success, err = (&ReceiveMatcher{Arg: notAPointer}).Match(channel)
+                               Ω(success).Should(BeFalse())
+                               Ω(err).Should(HaveOccurred())
+                       })
+               })
+       })
+
+       Context("with a matcher", func() {
+               It("should defer to the underlying matcher", func() {
+                       intChannel := make(chan int, 1)
+                       intChannel <- 3
+                       Ω(intChannel).Should(Receive(Equal(3)))
+
+                       intChannel <- 2
+                       Ω(intChannel).ShouldNot(Receive(Equal(3)))
+
+                       stringChannel := make(chan []string, 1)
+                       stringChannel <- []string{"foo", "bar", "baz"}
+                       Ω(stringChannel).Should(Receive(ContainElement(ContainSubstring("fo"))))
+
+                       stringChannel <- []string{"foo", "bar", "baz"}
+                       Ω(stringChannel).ShouldNot(Receive(ContainElement(ContainSubstring("archipelago"))))
+               })
+
+               It("should defer to the underlying matcher for the message", func() {
+                       matcher := Receive(Equal(3))
+                       channel := make(chan int, 1)
+                       channel <- 2
+                       matcher.Match(channel)
+                       Ω(matcher.FailureMessage(channel)).Should(MatchRegexp(`Expected\s+<int>: 2\s+to equal\s+<int>: 3`))
+
+                       channel <- 3
+                       matcher.Match(channel)
+                       Ω(matcher.NegatedFailureMessage(channel)).Should(MatchRegexp(`Expected\s+<int>: 3\s+not to equal\s+<int>: 3`))
+               })
+
+               It("should work just fine with Eventually", func() {
+                       stringChannel := make(chan string)
+
+                       go func() {
+                               time.Sleep(5 * time.Millisecond)
+                               stringChannel <- "A"
+                               time.Sleep(5 * time.Millisecond)
+                               stringChannel <- "B"
+                       }()
+
+                       Eventually(stringChannel).Should(Receive(Equal("B")))
+               })
+
+               Context("if the matcher errors", func() {
+                       It("should error", func() {
+                               channel := make(chan int, 1)
+                               channel <- 3
+                               success, err := (&ReceiveMatcher{Arg: ContainSubstring("three")}).Match(channel)
+                               Ω(success).Should(BeFalse())
+                               Ω(err).Should(HaveOccurred())
+                       })
+               })
+
+               Context("if nothing is received", func() {
+                       It("should fail", func() {
+                               channel := make(chan int, 1)
+                               success, err := (&ReceiveMatcher{Arg: Equal(1)}).Match(channel)
+                               Ω(success).Should(BeFalse())
+                               Ω(err).ShouldNot(HaveOccurred())
+                       })
+               })
+       })
+
+       Context("When actual is a *closed* channel", func() {
+               Context("for a buffered channel", func() {
+                       It("should work until it hits the end of the buffer", func() {
+                               channel := make(chan bool, 1)
+                               channel <- true
+
+                               close(channel)
+
+                               Ω(channel).Should(Receive())
+                               Ω(channel).ShouldNot(Receive())
+                       })
+               })
+
+               Context("for an unbuffered channel", func() {
+                       It("should always fail", func() {
+                               channel := make(chan bool)
+                               close(channel)
+
+                               Ω(channel).ShouldNot(Receive())
+                       })
+               })
+       })
+
+       Context("When actual is a send-only channel", func() {
+               It("should error", func() {
+                       channel := make(chan bool)
+
+                       var writerChannel chan<- bool
+                       writerChannel = channel
+
+                       success, err := (&ReceiveMatcher{}).Match(writerChannel)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Context("when acutal is a non-channel", func() {
+               It("should error", func() {
+                       var nilChannel chan bool
+
+                       success, err := (&ReceiveMatcher{}).Match(nilChannel)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&ReceiveMatcher{}).Match(nil)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+
+                       success, err = (&ReceiveMatcher{}).Match(3)
+                       Ω(success).Should(BeFalse())
+                       Ω(err).Should(HaveOccurred())
+               })
+       })
+
+       Describe("when used with eventually and a custom matcher", func() {
+               It("should return the matcher's error when a failing value is received on the channel, instead of the must receive something failure", func() {
+                       failures := InterceptGomegaFailures(func() {
+                               c := make(chan string, 0)
+                               Eventually(c, 0.01).Should(Receive(Equal("hello")))
+                       })
+                       Ω(failures[0]).Should(ContainSubstring("When passed a matcher, ReceiveMatcher's channel *must* receive something."))
+
+                       failures = InterceptGomegaFailures(func() {
+                               c := make(chan string, 1)
+                               c <- "hi"
+                               Eventually(c, 0.01).Should(Receive(Equal("hello")))
+                       })
+                       Ω(failures[0]).Should(ContainSubstring("<string>: hello"))
+               })
+       })
+
+       Describe("Bailing early", func() {
+               It("should bail early when passed a closed channel", func() {
+                       c := make(chan bool)
+                       close(c)
+
+                       t := time.Now()
+                       failures := InterceptGomegaFailures(func() {
+                               Eventually(c).Should(Receive())
+                       })
+                       Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
+                       Ω(failures).Should(HaveLen(1))
+               })
+
+               It("should bail early when passed a non-channel", func() {
+                       t := time.Now()
+                       failures := InterceptGomegaFailures(func() {
+                               Eventually(3).Should(Receive())
+                       })
+                       Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond))
+                       Ω(failures).Should(HaveLen(1))
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go b/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go
new file mode 100644 (file)
index 0000000..721ed55
--- /dev/null
@@ -0,0 +1,33 @@
+package matchers
+
+import (
+       "fmt"
+
+       "github.com/onsi/gomega/format"
+)
+
+type SucceedMatcher struct {
+}
+
+func (matcher *SucceedMatcher) Match(actual interface{}) (success bool, err error) {
+       // is purely nil?
+       if actual == nil {
+               return true, nil
+       }
+
+       // must be an 'error' type
+       if !isError(actual) {
+               return false, fmt.Errorf("Expected an error-type.  Got:\n%s", format.Object(actual, 1))
+       }
+
+       // must be nil (or a pointer to a nil)
+       return isNil(actual), nil
+}
+
+func (matcher *SucceedMatcher) FailureMessage(actual interface{}) (message string) {
+       return fmt.Sprintf("Expected success, but got an error:\n%s\n%s", format.Object(actual, 1), format.IndentString(actual.(error).Error(), 1))
+}
+
+func (matcher *SucceedMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+       return "Expected failure, but got no error."
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go
new file mode 100644 (file)
index 0000000..6b62c8b
--- /dev/null
@@ -0,0 +1,62 @@
+package matchers_test
+
+import (
+       "errors"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+func Erroring() error {
+       return errors.New("bam")
+}
+
+func NotErroring() error {
+       return nil
+}
+
+type AnyType struct{}
+
+func Invalid() *AnyType {
+       return nil
+}
+
+var _ = Describe("Succeed", func() {
+       It("should succeed if the function succeeds", func() {
+               Ω(NotErroring()).Should(Succeed())
+       })
+
+       It("should succeed (in the negated) if the function errored", func() {
+               Ω(Erroring()).ShouldNot(Succeed())
+       })
+
+       It("should not if passed a non-error", func() {
+               success, err := (&SucceedMatcher{}).Match(Invalid())
+               Ω(success).Should(BeFalse())
+               Ω(err).Should(MatchError("Expected an error-type.  Got:\n    <*matchers_test.AnyType | 0x0>: nil"))
+       })
+
+       It("doesn't support non-error type", func() {
+               success, err := (&SucceedMatcher{}).Match(AnyType{})
+               Ω(success).Should(BeFalse())
+               Ω(err).Should(MatchError("Expected an error-type.  Got:\n    <matchers_test.AnyType>: {}"))
+       })
+
+       It("doesn't support non-error pointer type", func() {
+               success, err := (&SucceedMatcher{}).Match(&AnyType{})
+               Ω(success).Should(BeFalse())
+               Ω(err).Should(MatchError(MatchRegexp(`Expected an error-type.  Got:\n    <*matchers_test.AnyType | 0x[[:xdigit:]]+>: {}`)))
+       })
+
+       It("should not succeed with pointer types that conform to error interface", func() {
+               err := &CustomErr{"ohai"}
+               Ω(err).ShouldNot(Succeed())
+       })
+
+       It("should succeed with nil pointers to types that conform to error interface", func() {
+               var err *CustomErr = nil
+               Ω(err).Should(Succeed())
+       })
+
+})
diff --git a/vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE b/vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE
new file mode 100644 (file)
index 0000000..8edd817
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2014 Amit Kumar Gupta
+
+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/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go b/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go
new file mode 100644 (file)
index 0000000..119d21e
--- /dev/null
@@ -0,0 +1,41 @@
+package bipartitegraph
+
+import "errors"
+import "fmt"
+
+import . "github.com/onsi/gomega/matchers/support/goraph/node"
+import . "github.com/onsi/gomega/matchers/support/goraph/edge"
+
+type BipartiteGraph struct {
+       Left  NodeOrderedSet
+       Right NodeOrderedSet
+       Edges EdgeSet
+}
+
+func NewBipartiteGraph(leftValues, rightValues []interface{}, neighbours func(interface{}, interface{}) (bool, error)) (*BipartiteGraph, error) {
+       left := NodeOrderedSet{}
+       for i, _ := range leftValues {
+               left = append(left, Node{i})
+       }
+
+       right := NodeOrderedSet{}
+       for j, _ := range rightValues {
+               right = append(right, Node{j + len(left)})
+       }
+
+       edges := EdgeSet{}
+       for i, leftValue := range leftValues {
+               for j, rightValue := range rightValues {
+                       neighbours, err := neighbours(leftValue, rightValue)
+                       if err != nil {
+                               return nil, errors.New(fmt.Sprintf("error determining adjacency for %v and %v: %s", leftValue, rightValue, err.Error()))
+                       }
+
+                       if neighbours {
+                               edges = append(edges, Edge{left[i], right[j]})
+                       }
+               }
+       }
+
+       return &BipartiteGraph{left, right, edges}, nil
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraphmatching.go b/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraphmatching.go
new file mode 100644 (file)
index 0000000..32529c5
--- /dev/null
@@ -0,0 +1,161 @@
+package bipartitegraph
+
+import . "github.com/onsi/gomega/matchers/support/goraph/node"
+import . "github.com/onsi/gomega/matchers/support/goraph/edge"
+import "github.com/onsi/gomega/matchers/support/goraph/util"
+
+func (bg *BipartiteGraph) LargestMatching() (matching EdgeSet) {
+       paths := bg.maximalDisjointSLAPCollection(matching)
+
+       for len(paths) > 0 {
+               for _, path := range paths {
+                       matching = matching.SymmetricDifference(path)
+               }
+               paths = bg.maximalDisjointSLAPCollection(matching)
+       }
+
+       return
+}
+
+func (bg *BipartiteGraph) maximalDisjointSLAPCollection(matching EdgeSet) (result []EdgeSet) {
+       guideLayers := bg.createSLAPGuideLayers(matching)
+       if len(guideLayers) == 0 {
+               return
+       }
+
+       used := make(map[Node]bool)
+
+       for _, u := range guideLayers[len(guideLayers)-1] {
+               slap, found := bg.findDisjointSLAP(u, matching, guideLayers, used)
+               if found {
+                       for _, edge := range slap {
+                               used[edge.Node1] = true
+                               used[edge.Node2] = true
+                       }
+                       result = append(result, slap)
+               }
+       }
+
+       return
+}
+
+func (bg *BipartiteGraph) findDisjointSLAP(
+       start Node,
+       matching EdgeSet,
+       guideLayers []NodeOrderedSet,
+       used map[Node]bool,
+) ([]Edge, bool) {
+       return bg.findDisjointSLAPHelper(start, EdgeSet{}, len(guideLayers)-1, matching, guideLayers, used)
+}
+
+func (bg *BipartiteGraph) findDisjointSLAPHelper(
+       currentNode Node,
+       currentSLAP EdgeSet,
+       currentLevel int,
+       matching EdgeSet,
+       guideLayers []NodeOrderedSet,
+       used map[Node]bool,
+) (EdgeSet, bool) {
+       used[currentNode] = true
+
+       if currentLevel == 0 {
+               return currentSLAP, true
+       }
+
+       for _, nextNode := range guideLayers[currentLevel-1] {
+               if used[nextNode] {
+                       continue
+               }
+
+               edge, found := bg.Edges.FindByNodes(currentNode, nextNode)
+               if !found {
+                       continue
+               }
+
+               if matching.Contains(edge) == util.Odd(currentLevel) {
+                       continue
+               }
+
+               currentSLAP = append(currentSLAP, edge)
+               slap, found := bg.findDisjointSLAPHelper(nextNode, currentSLAP, currentLevel-1, matching, guideLayers, used)
+               if found {
+                       return slap, true
+               }
+               currentSLAP = currentSLAP[:len(currentSLAP)-1]
+       }
+
+       used[currentNode] = false
+       return nil, false
+}
+
+func (bg *BipartiteGraph) createSLAPGuideLayers(matching EdgeSet) (guideLayers []NodeOrderedSet) {
+       used := make(map[Node]bool)
+       currentLayer := NodeOrderedSet{}
+
+       for _, node := range bg.Left {
+               if matching.Free(node) {
+                       used[node] = true
+                       currentLayer = append(currentLayer, node)
+               }
+       }
+
+       if len(currentLayer) == 0 {
+               return []NodeOrderedSet{}
+       } else {
+               guideLayers = append(guideLayers, currentLayer)
+       }
+
+       done := false
+
+       for !done {
+               lastLayer := currentLayer
+               currentLayer = NodeOrderedSet{}
+
+               if util.Odd(len(guideLayers)) {
+                       for _, leftNode := range lastLayer {
+                               for _, rightNode := range bg.Right {
+                                       if used[rightNode] {
+                                               continue
+                                       }
+
+                                       edge, found := bg.Edges.FindByNodes(leftNode, rightNode)
+                                       if !found || matching.Contains(edge) {
+                                               continue
+                                       }
+
+                                       currentLayer = append(currentLayer, rightNode)
+                                       used[rightNode] = true
+
+                                       if matching.Free(rightNode) {
+                                               done = true
+                                       }
+                               }
+                       }
+               } else {
+                       for _, rightNode := range lastLayer {
+                               for _, leftNode := range bg.Left {
+                                       if used[leftNode] {
+                                               continue
+                                       }
+
+                                       edge, found := bg.Edges.FindByNodes(leftNode, rightNode)
+                                       if !found || !matching.Contains(edge) {
+                                               continue
+                                       }
+
+                                       currentLayer = append(currentLayer, leftNode)
+                                       used[leftNode] = true
+                               }
+                       }
+
+               }
+
+               if len(currentLayer) == 0 {
+                       return []NodeOrderedSet{}
+               } else {
+                       guideLayers = append(guideLayers, currentLayer)
+               }
+       }
+
+       return
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/support/goraph/edge/edge.go b/vendor/github.com/onsi/gomega/matchers/support/goraph/edge/edge.go
new file mode 100644 (file)
index 0000000..4fd15cc
--- /dev/null
@@ -0,0 +1,61 @@
+package edge
+
+import . "github.com/onsi/gomega/matchers/support/goraph/node"
+
+type Edge struct {
+       Node1 Node
+       Node2 Node
+}
+
+type EdgeSet []Edge
+
+func (ec EdgeSet) Free(node Node) bool {
+       for _, e := range ec {
+               if e.Node1 == node || e.Node2 == node {
+                       return false
+               }
+       }
+
+       return true
+}
+
+func (ec EdgeSet) Contains(edge Edge) bool {
+       for _, e := range ec {
+               if e == edge {
+                       return true
+               }
+       }
+
+       return false
+}
+
+func (ec EdgeSet) FindByNodes(node1, node2 Node) (Edge, bool) {
+       for _, e := range ec {
+               if (e.Node1 == node1 && e.Node2 == node2) || (e.Node1 == node2 && e.Node2 == node1) {
+                       return e, true
+               }
+       }
+
+       return Edge{}, false
+}
+
+func (ec EdgeSet) SymmetricDifference(ec2 EdgeSet) EdgeSet {
+       edgesToInclude := make(map[Edge]bool)
+
+       for _, e := range ec {
+               edgesToInclude[e] = true
+       }
+
+       for _, e := range ec2 {
+               edgesToInclude[e] = !edgesToInclude[e]
+       }
+
+       result := EdgeSet{}
+       for e, include := range edgesToInclude {
+               if include {
+                       result = append(result, e)
+               }
+       }
+
+       return result
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/support/goraph/node/node.go b/vendor/github.com/onsi/gomega/matchers/support/goraph/node/node.go
new file mode 100644 (file)
index 0000000..800c2ea
--- /dev/null
@@ -0,0 +1,7 @@
+package node
+
+type Node struct {
+       Id int
+}
+
+type NodeOrderedSet []Node
diff --git a/vendor/github.com/onsi/gomega/matchers/support/goraph/util/util.go b/vendor/github.com/onsi/gomega/matchers/support/goraph/util/util.go
new file mode 100644 (file)
index 0000000..d76a1ee
--- /dev/null
@@ -0,0 +1,7 @@
+package util
+
+import "math"
+
+func Odd(n int) bool {
+       return math.Mod(float64(n), 2.0) == 1.0
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/type_support.go b/vendor/github.com/onsi/gomega/matchers/type_support.go
new file mode 100644 (file)
index 0000000..04020f0
--- /dev/null
@@ -0,0 +1,176 @@
+/*
+Gomega matchers
+
+This package implements the Gomega matchers and does not typically need to be imported.
+See the docs for Gomega for documentation on the matchers
+
+http://onsi.github.io/gomega/
+*/
+package matchers
+
+import (
+       "fmt"
+       "reflect"
+)
+
+type omegaMatcher interface {
+       Match(actual interface{}) (success bool, err error)
+       FailureMessage(actual interface{}) (message string)
+       NegatedFailureMessage(actual interface{}) (message string)
+}
+
+func isBool(a interface{}) bool {
+       return reflect.TypeOf(a).Kind() == reflect.Bool
+}
+
+func isNumber(a interface{}) bool {
+       if a == nil {
+               return false
+       }
+       kind := reflect.TypeOf(a).Kind()
+       return reflect.Int <= kind && kind <= reflect.Float64
+}
+
+func isInteger(a interface{}) bool {
+       kind := reflect.TypeOf(a).Kind()
+       return reflect.Int <= kind && kind <= reflect.Int64
+}
+
+func isUnsignedInteger(a interface{}) bool {
+       kind := reflect.TypeOf(a).Kind()
+       return reflect.Uint <= kind && kind <= reflect.Uint64
+}
+
+func isFloat(a interface{}) bool {
+       kind := reflect.TypeOf(a).Kind()
+       return reflect.Float32 <= kind && kind <= reflect.Float64
+}
+
+func toInteger(a interface{}) int64 {
+       if isInteger(a) {
+               return reflect.ValueOf(a).Int()
+       } else if isUnsignedInteger(a) {
+               return int64(reflect.ValueOf(a).Uint())
+       } else if isFloat(a) {
+               return int64(reflect.ValueOf(a).Float())
+       } else {
+               panic(fmt.Sprintf("Expected a number!  Got <%T> %#v", a, a))
+       }
+}
+
+func toUnsignedInteger(a interface{}) uint64 {
+       if isInteger(a) {
+               return uint64(reflect.ValueOf(a).Int())
+       } else if isUnsignedInteger(a) {
+               return reflect.ValueOf(a).Uint()
+       } else if isFloat(a) {
+               return uint64(reflect.ValueOf(a).Float())
+       } else {
+               panic(fmt.Sprintf("Expected a number!  Got <%T> %#v", a, a))
+       }
+}
+
+func toFloat(a interface{}) float64 {
+       if isInteger(a) {
+               return float64(reflect.ValueOf(a).Int())
+       } else if isUnsignedInteger(a) {
+               return float64(reflect.ValueOf(a).Uint())
+       } else if isFloat(a) {
+               return reflect.ValueOf(a).Float()
+       } else {
+               panic(fmt.Sprintf("Expected a number!  Got <%T> %#v", a, a))
+       }
+}
+
+func isError(a interface{}) bool {
+       _, ok := a.(error)
+       return ok
+}
+
+func isChan(a interface{}) bool {
+       if isNil(a) {
+               return false
+       }
+       return reflect.TypeOf(a).Kind() == reflect.Chan
+}
+
+func isMap(a interface{}) bool {
+       if a == nil {
+               return false
+       }
+       return reflect.TypeOf(a).Kind() == reflect.Map
+}
+
+func isArrayOrSlice(a interface{}) bool {
+       if a == nil {
+               return false
+       }
+       switch reflect.TypeOf(a).Kind() {
+       case reflect.Array, reflect.Slice:
+               return true
+       default:
+               return false
+       }
+}
+
+func isString(a interface{}) bool {
+       if a == nil {
+               return false
+       }
+       return reflect.TypeOf(a).Kind() == reflect.String
+}
+
+func toString(a interface{}) (string, bool) {
+       aString, isString := a.(string)
+       if isString {
+               return aString, true
+       }
+
+       aBytes, isBytes := a.([]byte)
+       if isBytes {
+               return string(aBytes), true
+       }
+
+       aStringer, isStringer := a.(fmt.Stringer)
+       if isStringer {
+               return aStringer.String(), true
+       }
+
+       return "", false
+}
+
+func lengthOf(a interface{}) (int, bool) {
+       if a == nil {
+               return 0, false
+       }
+       switch reflect.TypeOf(a).Kind() {
+       case reflect.Map, reflect.Array, reflect.String, reflect.Chan, reflect.Slice:
+               return reflect.ValueOf(a).Len(), true
+       default:
+               return 0, false
+       }
+}
+func capOf(a interface{}) (int, bool) {
+       if a == nil {
+               return 0, false
+       }
+       switch reflect.TypeOf(a).Kind() {
+       case reflect.Array, reflect.Chan, reflect.Slice:
+               return reflect.ValueOf(a).Cap(), true
+       default:
+               return 0, false
+       }
+}
+
+func isNil(a interface{}) bool {
+       if a == nil {
+               return true
+       }
+
+       switch reflect.TypeOf(a).Kind() {
+       case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
+               return reflect.ValueOf(a).IsNil()
+       }
+
+       return false
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/with_transform.go b/vendor/github.com/onsi/gomega/matchers/with_transform.go
new file mode 100644 (file)
index 0000000..8e58d8a
--- /dev/null
@@ -0,0 +1,72 @@
+package matchers
+
+import (
+       "fmt"
+       "reflect"
+
+       "github.com/onsi/gomega/internal/oraclematcher"
+       "github.com/onsi/gomega/types"
+)
+
+type WithTransformMatcher struct {
+       // input
+       Transform interface{} // must be a function of one parameter that returns one value
+       Matcher   types.GomegaMatcher
+
+       // cached value
+       transformArgType reflect.Type
+
+       // state
+       transformedValue interface{}
+}
+
+func NewWithTransformMatcher(transform interface{}, matcher types.GomegaMatcher) *WithTransformMatcher {
+       if transform == nil {
+               panic("transform function cannot be nil")
+       }
+       txType := reflect.TypeOf(transform)
+       if txType.NumIn() != 1 {
+               panic("transform function must have 1 argument")
+       }
+       if txType.NumOut() != 1 {
+               panic("transform function must have 1 return value")
+       }
+
+       return &WithTransformMatcher{
+               Transform:        transform,
+               Matcher:          matcher,
+               transformArgType: reflect.TypeOf(transform).In(0),
+       }
+}
+
+func (m *WithTransformMatcher) Match(actual interface{}) (bool, error) {
+       // return error if actual's type is incompatible with Transform function's argument type
+       actualType := reflect.TypeOf(actual)
+       if !actualType.AssignableTo(m.transformArgType) {
+               return false, fmt.Errorf("Transform function expects '%s' but we have '%s'", m.transformArgType, actualType)
+       }
+
+       // call the Transform function with `actual`
+       fn := reflect.ValueOf(m.Transform)
+       result := fn.Call([]reflect.Value{reflect.ValueOf(actual)})
+       m.transformedValue = result[0].Interface() // expect exactly one value
+
+       return m.Matcher.Match(m.transformedValue)
+}
+
+func (m *WithTransformMatcher) FailureMessage(_ interface{}) (message string) {
+       return m.Matcher.FailureMessage(m.transformedValue)
+}
+
+func (m *WithTransformMatcher) NegatedFailureMessage(_ interface{}) (message string) {
+       return m.Matcher.NegatedFailureMessage(m.transformedValue)
+}
+
+func (m *WithTransformMatcher) MatchMayChangeInTheFuture(_ interface{}) bool {
+       // TODO: Maybe this should always just return true? (Only an issue for non-deterministic transformers.)
+       //
+       // Querying the next matcher is fine if the transformer always will return the same value.
+       // But if the transformer is non-deterministic and returns a different value each time, then there
+       // is no point in querying the next matcher, since it can only comment on the last transformed value.
+       return oraclematcher.MatchMayChangeInTheFuture(m.Matcher, m.transformedValue)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/with_transform_test.go b/vendor/github.com/onsi/gomega/matchers/with_transform_test.go
new file mode 100644 (file)
index 0000000..e52bf8e
--- /dev/null
@@ -0,0 +1,102 @@
+package matchers_test
+
+import (
+       "errors"
+
+       . "github.com/onsi/ginkgo"
+       . "github.com/onsi/gomega"
+       . "github.com/onsi/gomega/matchers"
+)
+
+var _ = Describe("WithTransformMatcher", func() {
+
+       var plus1 = func(i int) int { return i + 1 }
+
+       Context("Panic if transform function invalid", func() {
+               panicsWithTransformer := func(transform interface{}) {
+                       ExpectWithOffset(1, func() { WithTransform(transform, nil) }).To(Panic())
+               }
+               It("nil", func() {
+                       panicsWithTransformer(nil)
+               })
+               Context("Invalid number of args, but correct return value count", func() {
+                       It("zero", func() {
+                               panicsWithTransformer(func() int { return 5 })
+                       })
+                       It("two", func() {
+                               panicsWithTransformer(func(i, j int) int { return 5 })
+                       })
+               })
+               Context("Invalid number of return values, but correct number of arguments", func() {
+                       It("zero", func() {
+                               panicsWithTransformer(func(i int) {})
+                       })
+                       It("two", func() {
+                               panicsWithTransformer(func(i int) (int, int) { return 5, 6 })
+                       })
+               })
+       })
+
+       It("works with positive cases", func() {
+               Expect(1).To(WithTransform(plus1, Equal(2)))
+               Expect(1).To(WithTransform(plus1, WithTransform(plus1, Equal(3))))
+               Expect(1).To(WithTransform(plus1, And(Equal(2), BeNumerically(">", 1))))
+
+               // transform expects custom type
+               type S struct {
+                       A int
+                       B string
+               }
+               transformer := func(s S) string { return s.B }
+               Expect(S{1, "hi"}).To(WithTransform(transformer, Equal("hi")))
+
+               // transform expects interface
+               errString := func(e error) string { return e.Error() }
+               Expect(errors.New("abc")).To(WithTransform(errString, Equal("abc")))
+       })
+
+       It("works with negative cases", func() {
+               Expect(1).ToNot(WithTransform(plus1, Equal(3)))
+               Expect(1).ToNot(WithTransform(plus1, WithTransform(plus1, Equal(2))))
+       })
+
+       Context("failure messages", func() {
+               Context("when match fails", func() {
+                       It("gives a descriptive message", func() {
+                               m := WithTransform(plus1, Equal(3))
+                               Expect(m.Match(1)).To(BeFalse())
+                               Expect(m.FailureMessage(1)).To(Equal("Expected\n    <int>: 2\nto equal\n    <int>: 3"))
+                       })
+               })
+
+               Context("when match succeeds, but expected it to fail", func() {
+                       It("gives a descriptive message", func() {
+                               m := Not(WithTransform(plus1, Equal(3)))
+                               Expect(m.Match(2)).To(BeFalse())
+                               Expect(m.FailureMessage(2)).To(Equal("Expected\n    <int>: 3\nnot to equal\n    <int>: 3"))
+                       })
+               })
+
+               Context("actual value is incompatible with transform function's argument type", func() {
+                       It("gracefully fails if transform cannot be performed", func() {
+                               m := WithTransform(plus1, Equal(3))
+                               result, err := m.Match("hi") // give it a string but transform expects int; doesn't panic
+                               Expect(result).To(BeFalse())
+                               Expect(err).To(MatchError("Transform function expects 'int' but we have 'string'"))
+                       })
+               })
+       })
+
+       Context("MatchMayChangeInTheFuture()", func() {
+               It("Propagates value from wrapped matcher on the transformed value", func() {
+                       m := WithTransform(plus1, Or()) // empty Or() always returns false, and indicates it cannot change
+                       Expect(m.Match(1)).To(BeFalse())
+                       Expect(m.(*WithTransformMatcher).MatchMayChangeInTheFuture(1)).To(BeFalse()) // empty Or() indicates cannot change
+               })
+               It("Defaults to true", func() {
+                       m := WithTransform(plus1, Equal(2)) // Equal does not have this method
+                       Expect(m.Match(1)).To(BeTrue())
+                       Expect(m.(*WithTransformMatcher).MatchMayChangeInTheFuture(1)).To(BeTrue()) // defaults to true
+               })
+       })
+})
diff --git a/vendor/github.com/onsi/gomega/types/types.go b/vendor/github.com/onsi/gomega/types/types.go
new file mode 100644 (file)
index 0000000..1c632ad
--- /dev/null
@@ -0,0 +1,17 @@
+package types
+
+type GomegaFailHandler func(message string, callerSkip ...int)
+
+//A simple *testing.T interface wrapper
+type GomegaTestingT interface {
+       Errorf(format string, args ...interface{})
+}
+
+//All Gomega matchers must implement the GomegaMatcher interface
+//
+//For details on writing custom matchers, check out: http://onsi.github.io/gomega/#adding_your_own_matchers
+type GomegaMatcher interface {
+       Match(actual interface{}) (success bool, err error)
+       FailureMessage(actual interface{}) (message string)
+       NegatedFailureMessage(actual interface{}) (message string)
+}
diff --git a/vendor/golang.org/x/sys/.gitattributes b/vendor/golang.org/x/sys/.gitattributes
new file mode 100644 (file)
index 0000000..d2f212e
--- /dev/null
@@ -0,0 +1,10 @@
+# Treat all files in this repo as binary, with no git magic updating
+# line endings. Windows users contributing to Go will need to use a
+# modern version of git and editors capable of LF line endings.
+#
+# We'll prevent accidental CRLF line endings from entering the repo
+# via the git-review gofmt checks.
+#
+# See golang.org/issue/9281
+
+* -text
diff --git a/vendor/golang.org/x/sys/.gitignore b/vendor/golang.org/x/sys/.gitignore
new file mode 100644 (file)
index 0000000..8339fd6
--- /dev/null
@@ -0,0 +1,2 @@
+# Add no patterns to .hgignore except for files generated by the build.
+last-change
diff --git a/vendor/golang.org/x/sys/AUTHORS b/vendor/golang.org/x/sys/AUTHORS
new file mode 100644 (file)
index 0000000..15167cd
--- /dev/null
@@ -0,0 +1,3 @@
+# This source code refers to The Go Authors for copyright purposes.
+# The master list of authors is in the main Go distribution,
+# visible at http://tip.golang.org/AUTHORS.
diff --git a/vendor/golang.org/x/sys/CONTRIBUTING.md b/vendor/golang.org/x/sys/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..88dff59
--- /dev/null
@@ -0,0 +1,31 @@
+# Contributing to Go
+
+Go is an open source project.
+
+It is the work of hundreds of contributors. We appreciate your help!
+
+
+## Filing issues
+
+When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
+
+1. What version of Go are you using (`go version`)?
+2. What operating system and processor architecture are you using?
+3. What did you do?
+4. What did you expect to see?
+5. What did you see instead?
+
+General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
+The gophers there will answer or ask you to file an issue if you've tripped over a bug.
+
+## Contributing code
+
+Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
+before sending patches.
+
+**We do not accept GitHub pull requests**
+(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
+
+Unless otherwise noted, the Go source files are distributed under
+the BSD-style license found in the LICENSE file.
+
diff --git a/vendor/golang.org/x/sys/CONTRIBUTORS b/vendor/golang.org/x/sys/CONTRIBUTORS
new file mode 100644 (file)
index 0000000..1c4577e
--- /dev/null
@@ -0,0 +1,3 @@
+# This source code was written by the Go contributors.
+# The master list of contributors is in the main Go distribution,
+# visible at http://tip.golang.org/CONTRIBUTORS.
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/README b/vendor/golang.org/x/sys/README
new file mode 100644 (file)
index 0000000..bd422b4
--- /dev/null
@@ -0,0 +1,3 @@
+This repository holds supplemental Go packages for low-level interactions with the operating system.
+
+To submit changes to this repository, see http://golang.org/doc/contribute.html.
diff --git a/vendor/golang.org/x/sys/codereview.cfg b/vendor/golang.org/x/sys/codereview.cfg
new file mode 100644 (file)
index 0000000..3f8b14b
--- /dev/null
@@ -0,0 +1 @@
+issuerepo: golang/go
diff --git a/vendor/golang.org/x/sys/plan9/asm.s b/vendor/golang.org/x/sys/plan9/asm.s
new file mode 100644 (file)
index 0000000..d4ca868
--- /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.
+
+#include "textflag.h"
+
+TEXT ·use(SB),NOSPLIT,$0
+       RET
diff --git a/vendor/golang.org/x/sys/plan9/asm_plan9_386.s b/vendor/golang.org/x/sys/plan9/asm_plan9_386.s
new file mode 100644 (file)
index 0000000..bc5cab1
--- /dev/null
@@ -0,0 +1,30 @@
+// 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.
+
+#include "textflag.h"
+
+//
+// System call support for 386, Plan 9
+//
+
+// 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 ·RawSyscall(SB),NOSPLIT,$0-28
+       JMP     syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·RawSyscall6(SB)
+
+TEXT ·seek(SB),NOSPLIT,$0-36
+       JMP     syscall·seek(SB)
+
+TEXT ·exit(SB),NOSPLIT,$4-4
+       JMP     syscall·exit(SB)
diff --git a/vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s b/vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s
new file mode 100644 (file)
index 0000000..d3448e6
--- /dev/null
@@ -0,0 +1,30 @@
+// 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.
+
+#include "textflag.h"
+
+//
+// System call support for amd64, Plan 9
+//
+
+// 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 ·RawSyscall(SB),NOSPLIT,$0-56
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·RawSyscall6(SB)
+
+TEXT ·seek(SB),NOSPLIT,$0-56
+       JMP     syscall·seek(SB)
+
+TEXT ·exit(SB),NOSPLIT,$8-8
+       JMP     syscall·exit(SB)
diff --git a/vendor/golang.org/x/sys/plan9/const_plan9.go b/vendor/golang.org/x/sys/plan9/const_plan9.go
new file mode 100644 (file)
index 0000000..b4e85a3
--- /dev/null
@@ -0,0 +1,70 @@
+package plan9
+
+// Plan 9 Constants
+
+// Open modes
+const (
+       O_RDONLY  = 0
+       O_WRONLY  = 1
+       O_RDWR    = 2
+       O_TRUNC   = 16
+       O_CLOEXEC = 32
+       O_EXCL    = 0x1000
+)
+
+// Rfork flags
+const (
+       RFNAMEG  = 1 << 0
+       RFENVG   = 1 << 1
+       RFFDG    = 1 << 2
+       RFNOTEG  = 1 << 3
+       RFPROC   = 1 << 4
+       RFMEM    = 1 << 5
+       RFNOWAIT = 1 << 6
+       RFCNAMEG = 1 << 10
+       RFCENVG  = 1 << 11
+       RFCFDG   = 1 << 12
+       RFREND   = 1 << 13
+       RFNOMNT  = 1 << 14
+)
+
+// Qid.Type bits
+const (
+       QTDIR    = 0x80
+       QTAPPEND = 0x40
+       QTEXCL   = 0x20
+       QTMOUNT  = 0x10
+       QTAUTH   = 0x08
+       QTTMP    = 0x04
+       QTFILE   = 0x00
+)
+
+// Dir.Mode bits
+const (
+       DMDIR    = 0x80000000
+       DMAPPEND = 0x40000000
+       DMEXCL   = 0x20000000
+       DMMOUNT  = 0x10000000
+       DMAUTH   = 0x08000000
+       DMTMP    = 0x04000000
+       DMREAD   = 0x4
+       DMWRITE  = 0x2
+       DMEXEC   = 0x1
+)
+
+const (
+       STATMAX    = 65535
+       ERRMAX     = 128
+       STATFIXLEN = 49
+)
+
+// Mount and bind flags
+const (
+       MREPL   = 0x0000
+       MBEFORE = 0x0001
+       MAFTER  = 0x0002
+       MORDER  = 0x0003
+       MCREATE = 0x0004
+       MCACHE  = 0x0010
+       MMASK   = 0x0017
+)
diff --git a/vendor/golang.org/x/sys/plan9/dir_plan9.go b/vendor/golang.org/x/sys/plan9/dir_plan9.go
new file mode 100644 (file)
index 0000000..0955e0c
--- /dev/null
@@ -0,0 +1,212 @@
+// 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.
+
+// Plan 9 directory marshalling. See intro(5).
+
+package plan9
+
+import "errors"
+
+var (
+       ErrShortStat = errors.New("stat buffer too short")
+       ErrBadStat   = errors.New("malformed stat buffer")
+       ErrBadName   = errors.New("bad character in file name")
+)
+
+// A Qid represents a 9P server's unique identification for a file.
+type Qid struct {
+       Path uint64 // the file server's unique identification for the file
+       Vers uint32 // version number for given Path
+       Type uint8  // the type of the file (plan9.QTDIR for example)
+}
+
+// A Dir contains the metadata for a file.
+type Dir struct {
+       // system-modified data
+       Type uint16 // server type
+       Dev  uint32 // server subtype
+
+       // file data
+       Qid    Qid    // unique id from server
+       Mode   uint32 // permissions
+       Atime  uint32 // last read time
+       Mtime  uint32 // last write time
+       Length int64  // file length
+       Name   string // last element of path
+       Uid    string // owner name
+       Gid    string // group name
+       Muid   string // last modifier name
+}
+
+var nullDir = Dir{
+       Type: ^uint16(0),
+       Dev:  ^uint32(0),
+       Qid: Qid{
+               Path: ^uint64(0),
+               Vers: ^uint32(0),
+               Type: ^uint8(0),
+       },
+       Mode:   ^uint32(0),
+       Atime:  ^uint32(0),
+       Mtime:  ^uint32(0),
+       Length: ^int64(0),
+}
+
+// Null assigns special "don't touch" values to members of d to
+// avoid modifying them during plan9.Wstat.
+func (d *Dir) Null() { *d = nullDir }
+
+// Marshal encodes a 9P stat message corresponding to d into b
+//
+// If there isn't enough space in b for a stat message, ErrShortStat is returned.
+func (d *Dir) Marshal(b []byte) (n int, err error) {
+       n = STATFIXLEN + len(d.Name) + len(d.Uid) + len(d.Gid) + len(d.Muid)
+       if n > len(b) {
+               return n, ErrShortStat
+       }
+
+       for _, c := range d.Name {
+               if c == '/' {
+                       return n, ErrBadName
+               }
+       }
+
+       b = pbit16(b, uint16(n)-2)
+       b = pbit16(b, d.Type)
+       b = pbit32(b, d.Dev)
+       b = pbit8(b, d.Qid.Type)
+       b = pbit32(b, d.Qid.Vers)
+       b = pbit64(b, d.Qid.Path)
+       b = pbit32(b, d.Mode)
+       b = pbit32(b, d.Atime)
+       b = pbit32(b, d.Mtime)
+       b = pbit64(b, uint64(d.Length))
+       b = pstring(b, d.Name)
+       b = pstring(b, d.Uid)
+       b = pstring(b, d.Gid)
+       b = pstring(b, d.Muid)
+
+       return n, nil
+}
+
+// UnmarshalDir decodes a single 9P stat message from b and returns the resulting Dir.
+//
+// If b is too small to hold a valid stat message, ErrShortStat is returned.
+//
+// If the stat message itself is invalid, ErrBadStat is returned.
+func UnmarshalDir(b []byte) (*Dir, error) {
+       if len(b) < STATFIXLEN {
+               return nil, ErrShortStat
+       }
+       size, buf := gbit16(b)
+       if len(b) != int(size)+2 {
+               return nil, ErrBadStat
+       }
+       b = buf
+
+       var d Dir
+       d.Type, b = gbit16(b)
+       d.Dev, b = gbit32(b)
+       d.Qid.Type, b = gbit8(b)
+       d.Qid.Vers, b = gbit32(b)
+       d.Qid.Path, b = gbit64(b)
+       d.Mode, b = gbit32(b)
+       d.Atime, b = gbit32(b)
+       d.Mtime, b = gbit32(b)
+
+       n, b := gbit64(b)
+       d.Length = int64(n)
+
+       var ok bool
+       if d.Name, b, ok = gstring(b); !ok {
+               return nil, ErrBadStat
+       }
+       if d.Uid, b, ok = gstring(b); !ok {
+               return nil, ErrBadStat
+       }
+       if d.Gid, b, ok = gstring(b); !ok {
+               return nil, ErrBadStat
+       }
+       if d.Muid, b, ok = gstring(b); !ok {
+               return nil, ErrBadStat
+       }
+
+       return &d, nil
+}
+
+// pbit8 copies the 8-bit number v to b and returns the remaining slice of b.
+func pbit8(b []byte, v uint8) []byte {
+       b[0] = byte(v)
+       return b[1:]
+}
+
+// pbit16 copies the 16-bit number v to b in little-endian order and returns the remaining slice of b.
+func pbit16(b []byte, v uint16) []byte {
+       b[0] = byte(v)
+       b[1] = byte(v >> 8)
+       return b[2:]
+}
+
+// pbit32 copies the 32-bit number v to b in little-endian order and returns the remaining slice of b.
+func pbit32(b []byte, v uint32) []byte {
+       b[0] = byte(v)
+       b[1] = byte(v >> 8)
+       b[2] = byte(v >> 16)
+       b[3] = byte(v >> 24)
+       return b[4:]
+}
+
+// pbit64 copies the 64-bit number v to b in little-endian order and returns the remaining slice of b.
+func pbit64(b []byte, v uint64) []byte {
+       b[0] = byte(v)
+       b[1] = byte(v >> 8)
+       b[2] = byte(v >> 16)
+       b[3] = byte(v >> 24)
+       b[4] = byte(v >> 32)
+       b[5] = byte(v >> 40)
+       b[6] = byte(v >> 48)
+       b[7] = byte(v >> 56)
+       return b[8:]
+}
+
+// pstring copies the string s to b, prepending it with a 16-bit length in little-endian order, and
+// returning the remaining slice of b..
+func pstring(b []byte, s string) []byte {
+       b = pbit16(b, uint16(len(s)))
+       n := copy(b, s)
+       return b[n:]
+}
+
+// gbit8 reads an 8-bit number from b and returns it with the remaining slice of b.
+func gbit8(b []byte) (uint8, []byte) {
+       return uint8(b[0]), b[1:]
+}
+
+// gbit16 reads a 16-bit number in little-endian order from b and returns it with the remaining slice of b.
+func gbit16(b []byte) (uint16, []byte) {
+       return uint16(b[0]) | uint16(b[1])<<8, b[2:]
+}
+
+// gbit32 reads a 32-bit number in little-endian order from b and returns it with the remaining slice of b.
+func gbit32(b []byte) (uint32, []byte) {
+       return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24, b[4:]
+}
+
+// gbit64 reads a 64-bit number in little-endian order from b and returns it with the remaining slice of b.
+func gbit64(b []byte) (uint64, []byte) {
+       lo := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
+       hi := uint32(b[4]) | uint32(b[5])<<8 | uint32(b[6])<<16 | uint32(b[7])<<24
+       return uint64(lo) | uint64(hi)<<32, b[8:]
+}
+
+// gstring reads a string from b, prefixed with a 16-bit length in little-endian order.
+// It returns the string with the remaining slice of b and a boolean. If the length is
+// greater than the number of bytes in b, the boolean will be false.
+func gstring(b []byte) (string, []byte, bool) {
+       n, b := gbit16(b)
+       if int(n) > len(b) {
+               return "", b, false
+       }
+       return string(b[:n]), b[n:], true
+}
diff --git a/vendor/golang.org/x/sys/plan9/env_plan9.go b/vendor/golang.org/x/sys/plan9/env_plan9.go
new file mode 100644 (file)
index 0000000..25a96e7
--- /dev/null
@@ -0,0 +1,27 @@
+// 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.
+
+// Plan 9 environment variables.
+
+package plan9
+
+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/plan9/env_unset.go b/vendor/golang.org/x/sys/plan9/env_unset.go
new file mode 100644 (file)
index 0000000..c37fc26
--- /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 plan9
+
+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/plan9/errors_plan9.go b/vendor/golang.org/x/sys/plan9/errors_plan9.go
new file mode 100644 (file)
index 0000000..110cf6a
--- /dev/null
@@ -0,0 +1,50 @@
+// 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.
+
+package plan9
+
+import "syscall"
+
+// Constants
+const (
+       // Invented values to support what package os expects.
+       O_CREAT    = 0x02000
+       O_APPEND   = 0x00400
+       O_NOCTTY   = 0x00000
+       O_NONBLOCK = 0x00000
+       O_SYNC     = 0x00000
+       O_ASYNC    = 0x00000
+
+       S_IFMT   = 0x1f000
+       S_IFIFO  = 0x1000
+       S_IFCHR  = 0x2000
+       S_IFDIR  = 0x4000
+       S_IFBLK  = 0x6000
+       S_IFREG  = 0x8000
+       S_IFLNK  = 0xa000
+       S_IFSOCK = 0xc000
+)
+
+// Errors
+var (
+       EINVAL       = syscall.NewError("bad arg in system call")
+       ENOTDIR      = syscall.NewError("not a directory")
+       EISDIR       = syscall.NewError("file is a directory")
+       ENOENT       = syscall.NewError("file does not exist")
+       EEXIST       = syscall.NewError("file already exists")
+       EMFILE       = syscall.NewError("no free file descriptors")
+       EIO          = syscall.NewError("i/o error")
+       ENAMETOOLONG = syscall.NewError("file name too long")
+       EINTR        = syscall.NewError("interrupted")
+       EPERM        = syscall.NewError("permission denied")
+       EBUSY        = syscall.NewError("no free devices")
+       ETIMEDOUT    = syscall.NewError("connection timed out")
+       EPLAN9       = syscall.NewError("not supported by plan 9")
+
+       // The following errors do not correspond to any
+       // Plan 9 system messages. Invented to support
+       // what package os and others expect.
+       EACCES       = syscall.NewError("access permission denied")
+       EAFNOSUPPORT = syscall.NewError("address family not supported by protocol")
+)
diff --git a/vendor/golang.org/x/sys/plan9/mkall.sh b/vendor/golang.org/x/sys/plan9/mkall.sh
new file mode 100755 (executable)
index 0000000..9f73c60
--- /dev/null
@@ -0,0 +1,138 @@
+#!/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 plan9 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
+
+case "$GOOSARCH" in
+_* | *_ | _)
+       echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2
+       exit 1
+       ;;
+plan9_386)
+       mkerrors=
+       mksyscall="./mksyscall.pl -l32 -plan9"
+       mksysnum="./mksysnum_plan9.sh /n/sources/plan9/sys/src/libc/9syscall/sys.h"
+       mktypes="XXX"
+       ;;
+*)
+       echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2
+       exit 1
+       ;;
+esac
+
+(
+       if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi
+       case "$GOOS" in
+       plan9)
+               syscall_goos="syscall_$GOOS.go"
+               if [ -n "$mksyscall" ]; then echo "$mksyscall $syscall_goos syscall_$GOOSARCH.go |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 "$mktypes types_$GOOS.go |gofmt >ztypes_$GOOSARCH.go"; fi
+) | $run
diff --git a/vendor/golang.org/x/sys/plan9/mkerrors.sh b/vendor/golang.org/x/sys/plan9/mkerrors.sh
new file mode 100755 (executable)
index 0000000..052c86d
--- /dev/null
@@ -0,0 +1,246 @@
+#!/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
+
+CC=${CC:-gcc}
+
+uname=$(uname)
+
+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>
+'
+
+ccflags="$@"
+
+# Write go tool cgo -godefs input.
+(
+       echo package plan9
+       echo
+       echo '/*'
+       indirect="includes_$(uname)"
+       echo "${!indirect} $includes"
+       echo '*/'
+       echo 'import "C"'
+       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 !~ /^ETH_/ &&
+               $2 !~ /^EPROC_/ &&
+               $2 !~ /^EQUIV_/ &&
+               $2 !~ /^EXPR_/ &&
+               $2 ~ /^E[A-Z0-9_]+$/ ||
+               $2 ~ /^B[0-9_]+$/ ||
+               $2 ~ /^V[A-Z0-9]+$/ ||
+               $2 ~ /^CS[A-Z0-9]/ ||
+               $2 ~ /^I(SIG|CANON|CRNL|EXTEN|MAXBEL|STRIP|UTF8)$/ ||
+               $2 ~ /^IGN/ ||
+               $2 ~ /^IX(ON|ANY|OFF)$/ ||
+               $2 ~ /^IN(LCR|PCK)$/ ||
+               $2 ~ /(^FLU?SH)|(FLU?SH$)/ ||
+               $2 ~ /^C(LOCAL|READ)$/ ||
+               $2 == "BRKINT" ||
+               $2 == "HUPCL" ||
+               $2 == "PENDIN" ||
+               $2 == "TOSTOP" ||
+               $2 ~ /^PAR/ ||
+               $2 ~ /^SIG[^_]/ ||
+               $2 ~ /^O[CNPFP][A-Z]+[^_][A-Z]+$/ ||
+               $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 !~ "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 !~ "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
+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/=\(.*\)/= Errno(\1)/'
+echo ')'
+
+echo
+echo '// Signals'
+echo 'const ('
+cat _error.out | grep -f _signal.grep | sed 's/=\(.*\)/= 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/plan9/mksyscall.pl b/vendor/golang.org/x/sys/plan9/mksyscall.pl
new file mode 100755 (executable)
index 0000000..ce8e1e4
--- /dev/null
@@ -0,0 +1,319 @@
+#!/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_plan9.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 $nacl = 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 "-nacl") {
+       $nacl = 1;
+       shift;
+}
+if($ARGV[0] eq "-arm") {
+       $arm = 1;
+       shift;
+}
+
+if($ARGV[0] =~ /^-/) {
+       print STDERR "usage: mksyscall.pl [-b32 | -l32] [file ...]\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/;
+               if($nacl) {
+                       $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 = 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
+
+package plan9
+
+import "unsafe"
+
+$text
+EOF
+exit 0;
diff --git a/vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh b/vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh
new file mode 100755 (executable)
index 0000000..3c3ab05
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh
+# 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.
+
+COMMAND="mksysnum_plan9.sh $@"
+
+cat <<EOF
+// $COMMAND
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+package plan9
+
+const(
+EOF
+
+SP='[  ]' # space or tab
+sed "s/^#define${SP}\\([A-Z0-9_][A-Z0-9_]*\\)${SP}${SP}*\\([0-9][0-9]*\\)/SYS_\\1=\\2/g" \
+       < $1 | grep -v SYS__
+
+cat <<EOF
+)
+EOF
diff --git a/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go b/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go
new file mode 100644 (file)
index 0000000..87ae9d2
--- /dev/null
@@ -0,0 +1,21 @@
+// 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 go1.5
+
+package plan9
+
+import "syscall"
+
+func fixwd() {
+       syscall.Fixwd()
+}
+
+func Getwd() (wd string, err error) {
+       return syscall.Getwd()
+}
+
+func Chdir(path string) error {
+       return syscall.Chdir(path)
+}
diff --git a/vendor/golang.org/x/sys/plan9/pwd_plan9.go b/vendor/golang.org/x/sys/plan9/pwd_plan9.go
new file mode 100644 (file)
index 0000000..c07c798
--- /dev/null
@@ -0,0 +1,23 @@
+// 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 !go1.5
+
+package plan9
+
+func fixwd() {
+}
+
+func Getwd() (wd string, err error) {
+       fd, err := open(".", O_RDONLY)
+       if err != nil {
+               return "", err
+       }
+       defer Close(fd)
+       return Fd2path(fd)
+}
+
+func Chdir(path string) error {
+       return chdir(path)
+}
diff --git a/vendor/golang.org/x/sys/plan9/race.go b/vendor/golang.org/x/sys/plan9/race.go
new file mode 100644 (file)
index 0000000..c7ff5df
--- /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 plan9,race
+
+package plan9
+
+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/plan9/race0.go b/vendor/golang.org/x/sys/plan9/race0.go
new file mode 100644 (file)
index 0000000..06cabcc
--- /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 plan9,!race
+
+package plan9
+
+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/plan9/str.go b/vendor/golang.org/x/sys/plan9/str.go
new file mode 100644 (file)
index 0000000..4f7f9ad
--- /dev/null
@@ -0,0 +1,22 @@
+// 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 plan9
+
+package plan9
+
+func itoa(val int) string { // do it here rather than with fmt to avoid dependency
+       if val < 0 {
+               return "-" + itoa(-val)
+       }
+       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/plan9/syscall.go b/vendor/golang.org/x/sys/plan9/syscall.go
new file mode 100644 (file)
index 0000000..df6f8c5
--- /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 plan9
+
+// Package plan9 contains an interface to the low-level operating system
+// primitives.  OS details vary depending on the underlying system, and
+// by default, godoc will display the OS-specific documentation for the current
+// system.  If you want godoc to display 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.ErrorString.
+package plan9 // import "golang.org/x/sys/plan9"
+
+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 mksyscall.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/plan9/syscall_plan9.go b/vendor/golang.org/x/sys/plan9/syscall_plan9.go
new file mode 100644 (file)
index 0000000..d39d07d
--- /dev/null
@@ -0,0 +1,349 @@
+// 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.
+
+// Plan 9 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 plan9
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+// A Note is a string describing a process note.
+// It implements the os.Signal interface.
+type Note string
+
+func (n Note) Signal() {}
+
+func (n Note) String() string {
+       return string(n)
+}
+
+var (
+       Stdin  = 0
+       Stdout = 1
+       Stderr = 2
+)
+
+// For testing: clients can set this flag to force
+// creation of IPv6 sockets to return EAFNOSUPPORT.
+var SocketDisableIPv6 bool
+
+func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.ErrorString)
+func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.ErrorString)
+func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)
+func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
+
+func atoi(b []byte) (n uint) {
+       n = 0
+       for i := 0; i < len(b); i++ {
+               n = n*10 + uint(b[i]-'0')
+       }
+       return
+}
+
+func cstring(s []byte) string {
+       for i := range s {
+               if s[i] == 0 {
+                       return string(s[0:i])
+               }
+       }
+       return string(s)
+}
+
+func errstr() string {
+       var buf [ERRMAX]byte
+
+       RawSyscall(SYS_ERRSTR, uintptr(unsafe.Pointer(&buf[0])), uintptr(len(buf)), 0)
+
+       buf[len(buf)-1] = 0
+       return cstring(buf[:])
+}
+
+// Implemented in assembly to import from runtime.
+func exit(code int)
+
+func Exit(code int) { exit(code) }
+
+func readnum(path string) (uint, error) {
+       var b [12]byte
+
+       fd, e := Open(path, O_RDONLY)
+       if e != nil {
+               return 0, e
+       }
+       defer Close(fd)
+
+       n, e := Pread(fd, b[:], 0)
+
+       if e != nil {
+               return 0, e
+       }
+
+       m := 0
+       for ; m < n && b[m] == ' '; m++ {
+       }
+
+       return atoi(b[m : n-1]), nil
+}
+
+func Getpid() (pid int) {
+       n, _ := readnum("#c/pid")
+       return int(n)
+}
+
+func Getppid() (ppid int) {
+       n, _ := readnum("#c/ppid")
+       return int(n)
+}
+
+func Read(fd int, p []byte) (n int, err error) {
+       return Pread(fd, p, -1)
+}
+
+func Write(fd int, p []byte) (n int, err error) {
+       return Pwrite(fd, p, -1)
+}
+
+var ioSync int64
+
+//sys  fd2path(fd int, buf []byte) (err error)
+func Fd2path(fd int) (path string, err error) {
+       var buf [512]byte
+
+       e := fd2path(fd, buf[:])
+       if e != nil {
+               return "", e
+       }
+       return cstring(buf[:]), nil
+}
+
+//sys  pipe(p *[2]int32) (err error)
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return syscall.ErrorString("bad arg in system call")
+       }
+       var pp [2]int32
+       err = pipe(&pp)
+       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(placeholder uintptr, fd int, offset int64, whence int) (newoffset int64, err string)
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+       newoffset, e := seek(0, fd, offset, whence)
+
+       if newoffset == -1 {
+               err = syscall.ErrorString(e)
+       }
+       return
+}
+
+func Mkdir(path string, mode uint32) (err error) {
+       fd, err := Create(path, O_RDONLY, DMDIR|mode)
+
+       if fd != -1 {
+               Close(fd)
+       }
+
+       return
+}
+
+type Waitmsg struct {
+       Pid  int
+       Time [3]uint32
+       Msg  string
+}
+
+func (w Waitmsg) Exited() bool   { return true }
+func (w Waitmsg) Signaled() bool { return false }
+
+func (w Waitmsg) ExitStatus() int {
+       if len(w.Msg) == 0 {
+               // a normal exit returns no message
+               return 0
+       }
+       return 1
+}
+
+//sys  await(s []byte) (n int, err error)
+func Await(w *Waitmsg) (err error) {
+       var buf [512]byte
+       var f [5][]byte
+
+       n, err := await(buf[:])
+
+       if err != nil || w == nil {
+               return
+       }
+
+       nf := 0
+       p := 0
+       for i := 0; i < n && nf < len(f)-1; i++ {
+               if buf[i] == ' ' {
+                       f[nf] = buf[p:i]
+                       p = i + 1
+                       nf++
+               }
+       }
+       f[nf] = buf[p:]
+       nf++
+
+       if nf != len(f) {
+               return syscall.ErrorString("invalid wait message")
+       }
+       w.Pid = int(atoi(f[0]))
+       w.Time[0] = uint32(atoi(f[1]))
+       w.Time[1] = uint32(atoi(f[2]))
+       w.Time[2] = uint32(atoi(f[3]))
+       w.Msg = cstring(f[4])
+       if w.Msg == "''" {
+               // await() returns '' for no error
+               w.Msg = ""
+       }
+       return
+}
+
+func Unmount(name, old string) (err error) {
+       fixwd()
+       oldp, err := BytePtrFromString(old)
+       if err != nil {
+               return err
+       }
+       oldptr := uintptr(unsafe.Pointer(oldp))
+
+       var r0 uintptr
+       var e syscall.ErrorString
+
+       // bind(2) man page: If name is zero, everything bound or mounted upon old is unbound or unmounted.
+       if name == "" {
+               r0, _, e = Syscall(SYS_UNMOUNT, _zero, oldptr, 0)
+       } else {
+               namep, err := BytePtrFromString(name)
+               if err != nil {
+                       return err
+               }
+               r0, _, e = Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(namep)), oldptr, 0)
+       }
+
+       if int32(r0) == -1 {
+               err = e
+       }
+       return
+}
+
+func Fchdir(fd int) (err error) {
+       path, err := Fd2path(fd)
+
+       if err != nil {
+               return
+       }
+
+       return Chdir(path)
+}
+
+type Timespec struct {
+       Sec  int32
+       Nsec int32
+}
+
+type Timeval struct {
+       Sec  int32
+       Usec int32
+}
+
+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 nsec() int64 {
+       var scratch int64
+
+       r0, _, _ := Syscall(SYS_NSEC, uintptr(unsafe.Pointer(&scratch)), 0, 0)
+       // TODO(aram): remove hack after I fix _nsec in the pc64 kernel.
+       if r0 == 0 {
+               return scratch
+       }
+       return int64(r0)
+}
+
+func Gettimeofday(tv *Timeval) error {
+       nsec := nsec()
+       *tv = NsecToTimeval(nsec)
+       return nil
+}
+
+func Getpagesize() int { return 0x1000 }
+
+func Getegid() (egid int) { return -1 }
+func Geteuid() (euid int) { return -1 }
+func Getgid() (gid int)   { return -1 }
+func Getuid() (uid int)   { return -1 }
+
+func Getgroups() (gids []int, err error) {
+       return make([]int, 0), nil
+}
+
+//sys  open(path string, mode int) (fd int, err error)
+func Open(path string, mode int) (fd int, err error) {
+       fixwd()
+       return open(path, mode)
+}
+
+//sys  create(path string, mode int, perm uint32) (fd int, err error)
+func Create(path string, mode int, perm uint32) (fd int, err error) {
+       fixwd()
+       return create(path, mode, perm)
+}
+
+//sys  remove(path string) (err error)
+func Remove(path string) error {
+       fixwd()
+       return remove(path)
+}
+
+//sys  stat(path string, edir []byte) (n int, err error)
+func Stat(path string, edir []byte) (n int, err error) {
+       fixwd()
+       return stat(path, edir)
+}
+
+//sys  bind(name string, old string, flag int) (err error)
+func Bind(name string, old string, flag int) (err error) {
+       fixwd()
+       return bind(name, old, flag)
+}
+
+//sys  mount(fd int, afd int, old string, flag int, aname string) (err error)
+func Mount(fd int, afd int, old string, flag int, aname string) (err error) {
+       fixwd()
+       return mount(fd, afd, old, flag, aname)
+}
+
+//sys  wstat(path string, edir []byte) (err error)
+func Wstat(path string, edir []byte) (err error) {
+       fixwd()
+       return wstat(path, edir)
+}
+
+//sys  chdir(path string) (err error)
+//sys  Dup(oldfd int, newfd int) (fd 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  Close(fd int) (err error)
+//sys  Fstat(fd int, edir []byte) (n int, err error)
+//sys  Fwstat(fd int, edir []byte) (err error)
diff --git a/vendor/golang.org/x/sys/plan9/syscall_test.go b/vendor/golang.org/x/sys/plan9/syscall_test.go
new file mode 100644 (file)
index 0000000..8f829ba
--- /dev/null
@@ -0,0 +1,33 @@
+// 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 plan9
+
+package plan9_test
+
+import (
+       "testing"
+
+       "golang.org/x/sys/plan9"
+)
+
+func testSetGetenv(t *testing.T, key, value string) {
+       err := plan9.Setenv(key, value)
+       if err != nil {
+               t.Fatalf("Setenv failed to set %q: %v", value, err)
+       }
+       newvalue, found := plan9.Getenv(key)
+       if !found {
+               t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value)
+       }
+       if newvalue != value {
+               t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value)
+       }
+}
+
+func TestEnv(t *testing.T) {
+       testSetGetenv(t, "TESTENV", "AVALUE")
+       // make sure TESTENV gets set to "", not deleted
+       testSetGetenv(t, "TESTENV", "")
+}
diff --git a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go b/vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go
new file mode 100644 (file)
index 0000000..b35598a
--- /dev/null
@@ -0,0 +1,292 @@
+// mksyscall.pl -l32 -plan9 syscall_plan9.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package plan9
+
+import "unsafe"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fd2path(fd int, buf []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]int32) (err error) {
+       r0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func await(s []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(s) > 0 {
+               _p0 = unsafe.Pointer(&s[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0)
+       n = int(r0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func open(path string, mode int) (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), 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func create(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_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func remove(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func stat(path string, edir []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(edir) > 0 {
+               _p1 = unsafe.Pointer(&edir[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(name string, old string, flag int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(old)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(fd int, afd int, old string, flag int, aname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(old)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(aname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wstat(path string, edir []byte) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(edir) > 0 {
+               _p1 = unsafe.Pointer(&edir[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))
+       use(unsafe.Pointer(_p0))
+       if int32(r0) == -1 {
+               err = 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
+       }
+       r0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int, newfd int) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0)
+       fd = int(r0)
+       if int32(r0) == -1 {
+               err = 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 int32(r0) == -1 {
+               err = 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 int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       r0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, edir []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(edir) > 0 {
+               _p0 = unsafe.Pointer(&edir[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))
+       n = int(r0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fwstat(fd int, edir []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(edir) > 0 {
+               _p0 = unsafe.Pointer(&edir[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go b/vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go
new file mode 100644 (file)
index 0000000..b35598a
--- /dev/null
@@ -0,0 +1,292 @@
+// mksyscall.pl -l32 -plan9 syscall_plan9.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package plan9
+
+import "unsafe"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fd2path(fd int, buf []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]int32) (err error) {
+       r0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func await(s []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(s) > 0 {
+               _p0 = unsafe.Pointer(&s[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0)
+       n = int(r0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func open(path string, mode int) (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), 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func create(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_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func remove(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func stat(path string, edir []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(edir) > 0 {
+               _p1 = unsafe.Pointer(&edir[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(name string, old string, flag int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(old)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(fd int, afd int, old string, flag int, aname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(old)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(aname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wstat(path string, edir []byte) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(edir) > 0 {
+               _p1 = unsafe.Pointer(&edir[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))
+       use(unsafe.Pointer(_p0))
+       if int32(r0) == -1 {
+               err = 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
+       }
+       r0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int, newfd int) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0)
+       fd = int(r0)
+       if int32(r0) == -1 {
+               err = 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 int32(r0) == -1 {
+               err = 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 int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       r0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, edir []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(edir) > 0 {
+               _p0 = unsafe.Pointer(&edir[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))
+       n = int(r0)
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fwstat(fd int, edir []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(edir) > 0 {
+               _p0 = unsafe.Pointer(&edir[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))
+       if int32(r0) == -1 {
+               err = e1
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/plan9/zsysnum_plan9.go b/vendor/golang.org/x/sys/plan9/zsysnum_plan9.go
new file mode 100644 (file)
index 0000000..22e8abd
--- /dev/null
@@ -0,0 +1,49 @@
+// mksysnum_plan9.sh /opt/plan9/sys/src/libc/9syscall/sys.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+package plan9
+
+const (
+       SYS_SYSR1       = 0
+       SYS_BIND        = 2
+       SYS_CHDIR       = 3
+       SYS_CLOSE       = 4
+       SYS_DUP         = 5
+       SYS_ALARM       = 6
+       SYS_EXEC        = 7
+       SYS_EXITS       = 8
+       SYS_FAUTH       = 10
+       SYS_SEGBRK      = 12
+       SYS_OPEN        = 14
+       SYS_OSEEK       = 16
+       SYS_SLEEP       = 17
+       SYS_RFORK       = 19
+       SYS_PIPE        = 21
+       SYS_CREATE      = 22
+       SYS_FD2PATH     = 23
+       SYS_BRK_        = 24
+       SYS_REMOVE      = 25
+       SYS_NOTIFY      = 28
+       SYS_NOTED       = 29
+       SYS_SEGATTACH   = 30
+       SYS_SEGDETACH   = 31
+       SYS_SEGFREE     = 32
+       SYS_SEGFLUSH    = 33
+       SYS_RENDEZVOUS  = 34
+       SYS_UNMOUNT     = 35
+       SYS_SEMACQUIRE  = 37
+       SYS_SEMRELEASE  = 38
+       SYS_SEEK        = 39
+       SYS_FVERSION    = 40
+       SYS_ERRSTR      = 41
+       SYS_STAT        = 42
+       SYS_FSTAT       = 43
+       SYS_WSTAT       = 44
+       SYS_FWSTAT      = 45
+       SYS_MOUNT       = 46
+       SYS_AWAIT       = 47
+       SYS_PREAD       = 50
+       SYS_PWRITE      = 51
+       SYS_TSEMACQUIRE = 52
+       SYS_NSEC        = 53
+)
diff --git a/vendor/golang.org/x/sys/unix/.gitignore b/vendor/golang.org/x/sys/unix/.gitignore
new file mode 100644 (file)
index 0000000..e482715
--- /dev/null
@@ -0,0 +1 @@
+_obj/
diff --git a/vendor/golang.org/x/sys/unix/README.md b/vendor/golang.org/x/sys/unix/README.md
new file mode 100644 (file)
index 0000000..bc6f603
--- /dev/null
@@ -0,0 +1,173 @@
+# Building `sys/unix`
+
+The sys/unix package provides access to the raw system call interface of the
+underlying operating system. See: https://godoc.org/golang.org/x/sys/unix
+
+Porting Go to a new architecture/OS combination or adding syscalls, types, or
+constants to an existing architecture/OS pair requires some manual effort;
+however, there are tools that automate much of the process.
+
+## Build Systems
+
+There are currently two ways we generate the necessary files. We are currently
+migrating the build system to use containers so the builds are reproducible.
+This is being done on an OS-by-OS basis. Please update this documentation as
+components of the build system change.
+
+### Old Build System (currently for `GOOS != "Linux" || GOARCH == "sparc64"`)
+
+The old build system generates the Go files based on the C header files
+present on your system. This means that files
+for a given GOOS/GOARCH pair must be generated on a system with that OS and
+architecture. This also means that the generated code can differ from system
+to system, based on differences in the header files.
+
+To avoid this, if you are using the old build system, only generate the Go
+files on an installation with unmodified header files. It is also important to
+keep track of which version of the OS the files were generated from (ex.
+Darwin 14 vs Darwin 15). This makes it easier to track the progress of changes
+and have each OS upgrade correspond to a single change.
+
+To build the files for your current OS and architecture, make sure GOOS and
+GOARCH are set correctly and run `mkall.sh`. This will generate the files for
+your specific system. Running `mkall.sh -n` shows the commands that will be run.
+
+Requirements: bash, perl, go
+
+### New Build System (currently for `GOOS == "Linux" && GOARCH != "sparc64"`)
+
+The new build system uses a Docker container to generate the go files directly
+from source checkouts of the kernel and various system libraries. This means
+that on any platform that supports Docker, all the files using the new build
+system can be generated at once, and generated files will not change based on
+what the person running the scripts has installed on their computer.
+
+The OS specific files for the new build system are located in the `${GOOS}`
+directory, and the build is coordinated by the `${GOOS}/mkall.go` program. When
+the kernel or system library updates, modify the Dockerfile at
+`${GOOS}/Dockerfile` to checkout the new release of the source.
+
+To build all the files under the new build system, you must be on an amd64/Linux
+system and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will
+then generate all of the files for all of the GOOS/GOARCH pairs in the new build
+system. Running `mkall.sh -n` shows the commands that will be run.
+
+Requirements: bash, perl, go, docker
+
+## Component files
+
+This section describes the various files used in the code generation process.
+It also contains instructions on how to modify these files to add a new
+architecture/OS or to add additional syscalls, types, or constants. Note that
+if you are using the new build system, the scripts cannot be called normally.
+They must be called from within the docker container.
+
+### asm files
+
+The hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` 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.
+
+When porting Go to an new architecture/OS, this file must be implemented for
+each GOOS/GOARCH pair.
+
+### mksysnum
+
+Mksysnum is a script located at `${GOOS}/mksysnum.pl` (or `mksysnum_${GOOS}.pl`
+for the old system). This script takes in a list of header files containing the
+syscall number declarations and parses them to produce the corresponding list of
+Go numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated
+constants.
+
+Adding new syscall numbers is mostly done by running the build on a sufficiently
+new installation of the target OS (or updating the source checkouts for the
+new build system). However, depending on the OS, you make need to update the
+parsing in mksysnum.
+
+### mksyscall.pl
+
+The `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are
+hand-written Go files which implement system calls (for unix, the specific OS,
+or the specific OS/Architecture pair respectively) that need special handling
+and list `//sys` comments giving prototypes for ones that can be generated.
+
+The mksyscall.pl script takes the `//sys` and `//sysnb` comments and converts
+them into syscalls. This requires the name of the prototype in the comment to
+match a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function
+prototype can be exported (capitalized) or not.
+
+Adding a new syscall often just requires adding a new `//sys` function prototype
+with the desired arguments and a capitalized name so it is exported. However, if
+you want the interface to the syscall to be different, often one will make an
+unexported `//sys` prototype, an then write a custom wrapper in
+`syscall_${GOOS}.go`.
+
+### types files
+
+For each OS, there is a hand-written Go file at `${GOOS}/types.go` (or
+`types_${GOOS}.go` on the old system). This file includes standard C headers and
+creates Go type aliases to the corresponding C types. The file is then fed
+through godef to get the Go compatible definitions. Finally, the generated code
+is fed though mkpost.go to format the code correctly and remove any hidden or
+private identifiers. This cleaned-up code is written to
+`ztypes_${GOOS}_${GOARCH}.go`.
+
+The hardest part about preparing this file is figuring out which headers to
+include and which symbols need to be `#define`d to get the actual data
+structures that pass through to the kernel system calls. Some C libraries
+preset 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.go` and `linux/types.go` for examples.
+
+To add a new type, add in the necessary include statement at the top of the
+file (if it is not already there) and add in a type alias line. Note that if
+your type is significantly different on different architectures, you may need
+some `#if/#elif` macros in your include statements.
+
+### mkerrors.sh
+
+This script is used to generate the system's various constants. This doesn't
+just include the error numbers and error strings, but also the signal numbers
+an a wide variety of miscellaneous constants. The constants come from the list
+of include files in the `includes_${uname}` variable. A regex then picks out
+the desired `#define` statements, and generates the corresponding Go constants.
+The error numbers and strings are generated from `#include <errno.h>`, and the
+signal numbers and strings are generated from `#include <signal.h>`. All of
+these constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program,
+`_errors.c`, which prints out all the constants.
+
+To add a constant, add the header that includes it to the appropriate variable.
+Then, edit the regex (if necessary) to match the desired constant. Avoid making
+the regex too broad to avoid matching unintended constants.
+
+
+## Generated files
+
+### `zerror_${GOOS}_${GOARCH}.go`
+
+A file containing all of the system's generated error numbers, error strings,
+signal numbers, and constants. Generated by `mkerrors.sh` (see above).
+
+### `zsyscall_${GOOS}_${GOARCH}.go`
+
+A file containing all the generated syscalls for a specific GOOS and GOARCH.
+Generated by `mksyscall.pl` (see above).
+
+### `zsysnum_${GOOS}_${GOARCH}.go`
+
+A list of numeric constants for all the syscall number of the specific GOOS
+and GOARCH. Generated by mksysnum (see above).
+
+### `ztypes_${GOOS}_${GOARCH}.go`
+
+A file containing Go types for passing into (or returning from) syscalls.
+Generated by godefs and the types file (see above).
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_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_mipsx.s b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
new file mode 100644 (file)
index 0000000..2ea4257
--- /dev/null
@@ -0,0 +1,31 @@
+// 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.
+
+// +build linux
+// +build mips mipsle
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for mips, 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   ·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_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_linux_s390x.s b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
new file mode 100644 (file)
index 0000000..1188985
--- /dev/null
@@ -0,0 +1,28 @@
+// 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.
+
+// +build s390x
+// +build linux
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for s390x, 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/bluetooth_linux.go b/vendor/golang.org/x/sys/unix/bluetooth_linux.go
new file mode 100644 (file)
index 0000000..6e32296
--- /dev/null
@@ -0,0 +1,35 @@
+// 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.
+
+// Bluetooth sockets and messages
+
+package unix
+
+// Bluetooth Protocols
+const (
+       BTPROTO_L2CAP  = 0
+       BTPROTO_HCI    = 1
+       BTPROTO_SCO    = 2
+       BTPROTO_RFCOMM = 3
+       BTPROTO_BNEP   = 4
+       BTPROTO_CMTP   = 5
+       BTPROTO_HIDP   = 6
+       BTPROTO_AVDTP  = 7
+)
+
+const (
+       HCI_CHANNEL_RAW     = 0
+       HCI_CHANNEL_USER    = 1
+       HCI_CHANNEL_MONITOR = 2
+       HCI_CHANNEL_CONTROL = 3
+)
+
+// Socketoption Level
+const (
+       SOL_BLUETOOTH = 0x112
+       SOL_HCI       = 0x0
+       SOL_L2CAP     = 0x6
+       SOL_RFCOMM    = 0x12
+       SOL_SCO       = 0x11
+)
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/creds_test.go b/vendor/golang.org/x/sys/unix/creds_test.go
new file mode 100644 (file)
index 0000000..eaae7c3
--- /dev/null
@@ -0,0 +1,121 @@
+// 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 linux
+
+package unix_test
+
+import (
+       "bytes"
+       "net"
+       "os"
+       "syscall"
+       "testing"
+
+       "golang.org/x/sys/unix"
+)
+
+// TestSCMCredentials tests the sending and receiving of credentials
+// (PID, UID, GID) in an ancillary message between two UNIX
+// sockets. The SO_PASSCRED socket option is enabled on the sending
+// socket for this to work.
+func TestSCMCredentials(t *testing.T) {
+       fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM, 0)
+       if err != nil {
+               t.Fatalf("Socketpair: %v", err)
+       }
+       defer unix.Close(fds[0])
+       defer unix.Close(fds[1])
+
+       err = unix.SetsockoptInt(fds[0], unix.SOL_SOCKET, unix.SO_PASSCRED, 1)
+       if err != nil {
+               t.Fatalf("SetsockoptInt: %v", err)
+       }
+
+       srvFile := os.NewFile(uintptr(fds[0]), "server")
+       defer srvFile.Close()
+       srv, err := net.FileConn(srvFile)
+       if err != nil {
+               t.Errorf("FileConn: %v", err)
+               return
+       }
+       defer srv.Close()
+
+       cliFile := os.NewFile(uintptr(fds[1]), "client")
+       defer cliFile.Close()
+       cli, err := net.FileConn(cliFile)
+       if err != nil {
+               t.Errorf("FileConn: %v", err)
+               return
+       }
+       defer cli.Close()
+
+       var ucred unix.Ucred
+       if os.Getuid() != 0 {
+               ucred.Pid = int32(os.Getpid())
+               ucred.Uid = 0
+               ucred.Gid = 0
+               oob := unix.UnixCredentials(&ucred)
+               _, _, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil)
+               if op, ok := err.(*net.OpError); ok {
+                       err = op.Err
+               }
+               if sys, ok := err.(*os.SyscallError); ok {
+                       err = sys.Err
+               }
+               if err != syscall.EPERM {
+                       t.Fatalf("WriteMsgUnix failed with %v, want EPERM", err)
+               }
+       }
+
+       ucred.Pid = int32(os.Getpid())
+       ucred.Uid = uint32(os.Getuid())
+       ucred.Gid = uint32(os.Getgid())
+       oob := unix.UnixCredentials(&ucred)
+
+       // this is going to send a dummy byte
+       n, oobn, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil)
+       if err != nil {
+               t.Fatalf("WriteMsgUnix: %v", err)
+       }
+       if n != 0 {
+               t.Fatalf("WriteMsgUnix n = %d, want 0", n)
+       }
+       if oobn != len(oob) {
+               t.Fatalf("WriteMsgUnix oobn = %d, want %d", oobn, len(oob))
+       }
+
+       oob2 := make([]byte, 10*len(oob))
+       n, oobn2, flags, _, err := srv.(*net.UnixConn).ReadMsgUnix(nil, oob2)
+       if err != nil {
+               t.Fatalf("ReadMsgUnix: %v", err)
+       }
+       if flags != 0 {
+               t.Fatalf("ReadMsgUnix flags = 0x%x, want 0", flags)
+       }
+       if n != 1 {
+               t.Fatalf("ReadMsgUnix n = %d, want 1 (dummy byte)", n)
+       }
+       if oobn2 != oobn {
+               // without SO_PASSCRED set on the socket, ReadMsgUnix will
+               // return zero oob bytes
+               t.Fatalf("ReadMsgUnix oobn = %d, want %d", oobn2, oobn)
+       }
+       oob2 = oob2[:oobn2]
+       if !bytes.Equal(oob, oob2) {
+               t.Fatal("ReadMsgUnix oob bytes don't match")
+       }
+
+       scm, err := unix.ParseSocketControlMessage(oob2)
+       if err != nil {
+               t.Fatalf("ParseSocketControlMessage: %v", err)
+       }
+       newUcred, err := unix.ParseUnixCredentials(&scm[0])
+       if err != nil {
+               t.Fatalf("ParseUnixCredentials: %v", err)
+       }
+       if *newUcred != ucred {
+               t.Fatalf("ParseUnixCredentials = %+v, want %+v", newUcred, ucred)
+       }
+}
diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go
new file mode 100644 (file)
index 0000000..bd47581
--- /dev/null
@@ -0,0 +1,102 @@
+// 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 nacl netbsd openbsd solaris
+
+package unix
+
+import "unsafe"
+
+// readInt returns the size-bytes unsigned integer in native byte order at offset off.
+func readInt(b []byte, off, size uintptr) (u uint64, ok bool) {
+       if len(b) < int(off+size) {
+               return 0, false
+       }
+       if isBigEndian {
+               return readIntBE(b[off:], size), true
+       }
+       return readIntLE(b[off:], size), true
+}
+
+func readIntBE(b []byte, size uintptr) uint64 {
+       switch size {
+       case 1:
+               return uint64(b[0])
+       case 2:
+               _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808
+               return uint64(b[1]) | uint64(b[0])<<8
+       case 4:
+               _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808
+               return uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24
+       case 8:
+               _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808
+               return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |
+                       uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56
+       default:
+               panic("syscall: readInt with unsupported size")
+       }
+}
+
+func readIntLE(b []byte, size uintptr) uint64 {
+       switch size {
+       case 1:
+               return uint64(b[0])
+       case 2:
+               _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808
+               return uint64(b[0]) | uint64(b[1])<<8
+       case 4:
+               _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808
+               return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24
+       case 8:
+               _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808
+               return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |
+                       uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
+       default:
+               panic("syscall: readInt with unsupported size")
+       }
+}
+
+// ParseDirent parses up to max directory entries in buf,
+// appending the names to names. It returns the number of
+// 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)
+       count = 0
+       for max != 0 && len(buf) > 0 {
+               reclen, ok := direntReclen(buf)
+               if !ok || reclen > uint64(len(buf)) {
+                       return origlen, count, names
+               }
+               rec := buf[:reclen]
+               buf = buf[reclen:]
+               ino, ok := direntIno(rec)
+               if !ok {
+                       break
+               }
+               if ino == 0 { // File absent in directory.
+                       continue
+               }
+               const namoff = uint64(unsafe.Offsetof(Dirent{}.Name))
+               namlen, ok := direntNamlen(rec)
+               if !ok || namoff+namlen > uint64(len(rec)) {
+                       break
+               }
+               name := rec[namoff : namoff+namlen]
+               for i, c := range name {
+                       if c == 0 {
+                               name = name[:i]
+                               break
+                       }
+               }
+               // Check for useless names before allocating a string.
+               if string(name) == "." || string(name) == ".." {
+                       continue
+               }
+               max--
+               count++
+               names = append(names, string(name))
+       }
+       return origlen - len(buf), count, names
+}
diff --git a/vendor/golang.org/x/sys/unix/endian_big.go b/vendor/golang.org/x/sys/unix/endian_big.go
new file mode 100644 (file)
index 0000000..5e92690
--- /dev/null
@@ -0,0 +1,9 @@
+// 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.
+//
+// +build ppc64 s390x mips mips64
+
+package unix
+
+const isBigEndian = true
diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go
new file mode 100644 (file)
index 0000000..085df2d
--- /dev/null
@@ -0,0 +1,9 @@
+// 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.
+//
+// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le
+
+package unix
+
+const isBigEndian = false
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/export_test.go b/vendor/golang.org/x/sys/unix/export_test.go
new file mode 100644 (file)
index 0000000..b4fdd97
--- /dev/null
@@ -0,0 +1,9 @@
+// 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
+
+var Itoa = itoa
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..fc0e50e
--- /dev/null
@@ -0,0 +1,13 @@
+// +build linux,386 linux,arm linux,mips linux,mipsle
+
+// 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/gccgo_linux_sparc64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go
new file mode 100644 (file)
index 0000000..5633269
--- /dev/null
@@ -0,0 +1,20 @@
+// 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.
+
+// +build gccgo,linux,sparc64
+
+package unix
+
+import "syscall"
+
+//extern sysconf
+func realSysconf(name int) int64
+
+func sysconf(name int) (n int64, err syscall.Errno) {
+       r := realSysconf(name)
+       if r < 0 {
+               return 0, syscall.GetErrno()
+       }
+       return r, 0
+}
diff --git a/vendor/golang.org/x/sys/unix/linux/Dockerfile b/vendor/golang.org/x/sys/unix/linux/Dockerfile
new file mode 100644 (file)
index 0000000..4397143
--- /dev/null
@@ -0,0 +1,48 @@
+FROM ubuntu:16.04
+
+# Dependencies to get the git sources and go binaries
+RUN apt-get update && apt-get install -y \
+        curl \
+        git \
+    && rm -rf /var/lib/apt/lists/*
+
+# Get the git sources. If not cached, this takes O(5 minutes).
+WORKDIR /git
+RUN git config --global advice.detachedHead false
+# Linux Kernel: Released 19 Feb 2017
+RUN git clone --branch v4.10 --depth 1 https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
+# GNU C library: Released 05 Feb 2017 (we should try to get a secure way to clone this)
+RUN git clone --branch glibc-2.25 --depth 1 git://sourceware.org/git/glibc.git
+
+# Get Go 1.8 (https://github.com/docker-library/golang/blob/master/1.8/Dockerfile)
+ENV GOLANG_VERSION 1.8
+ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
+ENV GOLANG_DOWNLOAD_SHA256 53ab94104ee3923e228a2cb2116e5e462ad3ebaeea06ff04463479d7f12d27ca
+
+RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \
+    && echo "$GOLANG_DOWNLOAD_SHA256  golang.tar.gz" | sha256sum -c - \
+    && tar -C /usr/local -xzf golang.tar.gz \
+    && rm golang.tar.gz
+
+ENV PATH /usr/local/go/bin:$PATH
+
+# Linux and Glibc build dependencies
+RUN apt-get update && apt-get install -y \
+        gawk make python \
+        gcc gcc-multilib \
+        gettext  texinfo \
+    && rm -rf /var/lib/apt/lists/*
+# Emulator and cross compilers
+RUN apt-get update && apt-get install -y \
+        qemu \
+        gcc-aarch64-linux-gnu       gcc-arm-linux-gnueabi     \
+        gcc-mips-linux-gnu          gcc-mips64-linux-gnuabi64 \
+        gcc-mips64el-linux-gnuabi64 gcc-mipsel-linux-gnu      \
+        gcc-powerpc64-linux-gnu     gcc-powerpc64le-linux-gnu \
+        gcc-s390x-linux-gnu         gcc-sparc64-linux-gnu     \
+    && rm -rf /var/lib/apt/lists/*
+
+# Let the scripts know they are in the docker environment
+ENV GOLANG_SYS_BUILD docker
+WORKDIR /build
+ENTRYPOINT ["go", "run", "linux/mkall.go", "/git/linux", "/git/glibc"]
diff --git a/vendor/golang.org/x/sys/unix/linux/mkall.go b/vendor/golang.org/x/sys/unix/linux/mkall.go
new file mode 100644 (file)
index 0000000..429754f
--- /dev/null
@@ -0,0 +1,379 @@
+// Copyright 2017 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/mkall.go - Generates all Linux zsysnum, zsyscall, zerror, and ztype
+// files for all 11 linux architectures supported by the go compiler. See
+// README.md for more information about the build system.
+
+// To run it you must have a git checkout of the Linux kernel and glibc. Once
+// the appropriate sources are ready, the program is run as:
+//     go run linux/mkall.go <linux_dir> <glibc_dir>
+
+// +build ignore
+
+package main
+
+import (
+       "fmt"
+       "os"
+       "os/exec"
+       "path/filepath"
+       "runtime"
+       "strings"
+)
+
+// These will be paths to the appropriate source directories.
+var LinuxDir string
+var GlibcDir string
+
+const TempDir = "/tmp"
+const IncludeDir = TempDir + "/include" // To hold our C headers
+const BuildDir = TempDir + "/build"     // To hold intermediate build files
+
+const GOOS = "linux"       // Only for Linux targets
+const BuildArch = "amd64"  // Must be built on this architecture
+const MinKernel = "2.6.23" // https://golang.org/doc/install#requirements
+
+type target struct {
+       GoArch     string // Architecture name according to Go
+       LinuxArch  string // Architecture name according to the Linux Kernel
+       GNUArch    string // Architecture name according to GNU tools (https://wiki.debian.org/Multiarch/Tuples)
+       BigEndian  bool   // Default Little Endian
+       SignedChar bool   // Is -fsigned-char needed (default no)
+       Bits       int
+}
+
+// List of the 11 Linux targets supported by the go compiler. sparc64 is not
+// currently supported, though a port is in progress.
+var targets = []target{
+       {
+               GoArch:    "386",
+               LinuxArch: "x86",
+               GNUArch:   "i686-linux-gnu", // Note "i686" not "i386"
+               Bits:      32,
+       },
+       {
+               GoArch:    "amd64",
+               LinuxArch: "x86",
+               GNUArch:   "x86_64-linux-gnu",
+               Bits:      64,
+       },
+       {
+               GoArch:     "arm64",
+               LinuxArch:  "arm64",
+               GNUArch:    "aarch64-linux-gnu",
+               SignedChar: true,
+               Bits:       64,
+       },
+       {
+               GoArch:    "arm",
+               LinuxArch: "arm",
+               GNUArch:   "arm-linux-gnueabi",
+               Bits:      32,
+       },
+       {
+               GoArch:    "mips",
+               LinuxArch: "mips",
+               GNUArch:   "mips-linux-gnu",
+               BigEndian: true,
+               Bits:      32,
+       },
+       {
+               GoArch:    "mipsle",
+               LinuxArch: "mips",
+               GNUArch:   "mipsel-linux-gnu",
+               Bits:      32,
+       },
+       {
+               GoArch:    "mips64",
+               LinuxArch: "mips",
+               GNUArch:   "mips64-linux-gnuabi64",
+               BigEndian: true,
+               Bits:      64,
+       },
+       {
+               GoArch:    "mips64le",
+               LinuxArch: "mips",
+               GNUArch:   "mips64el-linux-gnuabi64",
+               Bits:      64,
+       },
+       {
+               GoArch:    "ppc64",
+               LinuxArch: "powerpc",
+               GNUArch:   "powerpc64-linux-gnu",
+               BigEndian: true,
+               Bits:      64,
+       },
+       {
+               GoArch:    "ppc64le",
+               LinuxArch: "powerpc",
+               GNUArch:   "powerpc64le-linux-gnu",
+               Bits:      64,
+       },
+       {
+               GoArch:     "s390x",
+               LinuxArch:  "s390",
+               GNUArch:    "s390x-linux-gnu",
+               BigEndian:  true,
+               SignedChar: true,
+               Bits:       64,
+       },
+       // {
+       //      GoArch:    "sparc64",
+       //      LinuxArch: "sparc",
+       //      GNUArch:   "sparc64-linux-gnu",
+       //      BigEndian: true,
+       //      Bits:      64,
+       // },
+}
+
+func main() {
+       if runtime.GOOS != GOOS || runtime.GOARCH != BuildArch {
+               fmt.Printf("Build system has GOOS_GOARCH = %s_%s, need %s_%s\n",
+                       runtime.GOOS, runtime.GOARCH, GOOS, BuildArch)
+               return
+       }
+
+       // Check that we are using the new build system if we should
+       if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
+               fmt.Println("In the new build system, mkall.go should not be called directly.")
+               fmt.Println("See README.md")
+               return
+       }
+
+       // Parse the command line options
+       if len(os.Args) != 3 {
+               fmt.Println("USAGE: go run linux/mkall.go <linux_dir> <glibc_dir>")
+               return
+       }
+       LinuxDir = os.Args[1]
+       GlibcDir = os.Args[2]
+
+       for _, t := range targets {
+               fmt.Printf("----- GENERATING: %s -----\n", t.GoArch)
+               if err := t.generateFiles(); err != nil {
+                       fmt.Printf("%v\n***** FAILURE:    %s *****\n\n", err, t.GoArch)
+               } else {
+                       fmt.Printf("----- SUCCESS:    %s -----\n\n", t.GoArch)
+               }
+       }
+}
+
+// Makes an exec.Cmd with Stderr attached to os.Stderr
+func makeCommand(name string, args ...string) *exec.Cmd {
+       cmd := exec.Command(name, args...)
+       cmd.Stderr = os.Stderr
+       return cmd
+}
+
+// Runs the command, pipes output to a formatter, pipes that to an output file.
+func (t *target) commandFormatOutput(formatter string, outputFile string,
+       name string, args ...string) (err error) {
+       mainCmd := makeCommand(name, args...)
+
+       fmtCmd := makeCommand(formatter)
+       if formatter == "mkpost" {
+               fmtCmd = makeCommand("go", "run", "mkpost.go")
+               // Set GOARCH_TARGET so mkpost knows what GOARCH is..
+               fmtCmd.Env = append(os.Environ(), "GOARCH_TARGET="+t.GoArch)
+               // Set GOARCH to host arch for mkpost, so it can run natively.
+               for i, s := range fmtCmd.Env {
+                       if strings.HasPrefix(s, "GOARCH=") {
+                               fmtCmd.Env[i] = "GOARCH=" + BuildArch
+                       }
+               }
+       }
+
+       // mainCmd | fmtCmd > outputFile
+       if fmtCmd.Stdin, err = mainCmd.StdoutPipe(); err != nil {
+               return
+       }
+       if fmtCmd.Stdout, err = os.Create(outputFile); err != nil {
+               return
+       }
+
+       // Make sure the formatter eventually closes
+       if err = fmtCmd.Start(); err != nil {
+               return
+       }
+       defer func() {
+               fmtErr := fmtCmd.Wait()
+               if err == nil {
+                       err = fmtErr
+               }
+       }()
+
+       return mainCmd.Run()
+}
+
+// Generates all the files for a Linux target
+func (t *target) generateFiles() error {
+       // Setup environment variables
+       os.Setenv("GOOS", GOOS)
+       os.Setenv("GOARCH", t.GoArch)
+
+       // Get appropriate compiler and emulator (unless on x86)
+       if t.LinuxArch != "x86" {
+               // Check/Setup cross compiler
+               compiler := t.GNUArch + "-gcc"
+               if _, err := exec.LookPath(compiler); err != nil {
+                       return err
+               }
+               os.Setenv("CC", compiler)
+
+               // Check/Setup emulator (usually first component of GNUArch)
+               qemuArchName := t.GNUArch[:strings.Index(t.GNUArch, "-")]
+               if t.LinuxArch == "powerpc" {
+                       qemuArchName = t.GoArch
+               }
+               os.Setenv("GORUN", "qemu-"+qemuArchName)
+       } else {
+               os.Setenv("CC", "gcc")
+       }
+
+       // Make the include directory and fill it with headers
+       if err := os.MkdirAll(IncludeDir, os.ModePerm); err != nil {
+               return err
+       }
+       defer os.RemoveAll(IncludeDir)
+       if err := t.makeHeaders(); err != nil {
+               return fmt.Errorf("could not make header files: %v", err)
+       }
+       fmt.Println("header files generated")
+
+       // Make each of the four files
+       if err := t.makeZSysnumFile(); err != nil {
+               return fmt.Errorf("could not make zsysnum file: %v", err)
+       }
+       fmt.Println("zsysnum file generated")
+
+       if err := t.makeZSyscallFile(); err != nil {
+               return fmt.Errorf("could not make zsyscall file: %v", err)
+       }
+       fmt.Println("zsyscall file generated")
+
+       if err := t.makeZTypesFile(); err != nil {
+               return fmt.Errorf("could not make ztypes file: %v", err)
+       }
+       fmt.Println("ztypes file generated")
+
+       if err := t.makeZErrorsFile(); err != nil {
+               return fmt.Errorf("could not make zerrors file: %v", err)
+       }
+       fmt.Println("zerrors file generated")
+
+       return nil
+}
+
+// Create the Linux and glibc headers in the include directory.
+func (t *target) makeHeaders() error {
+       // Make the Linux headers we need for this architecture
+       linuxMake := makeCommand("make", "headers_install", "ARCH="+t.LinuxArch, "INSTALL_HDR_PATH="+TempDir)
+       linuxMake.Dir = LinuxDir
+       if err := linuxMake.Run(); err != nil {
+               return err
+       }
+
+       // A Temporary build directory for glibc
+       if err := os.MkdirAll(BuildDir, os.ModePerm); err != nil {
+               return err
+       }
+       defer os.RemoveAll(BuildDir)
+
+       // Make the glibc headers we need for this architecture
+       confScript := filepath.Join(GlibcDir, "configure")
+       glibcConf := makeCommand(confScript, "--prefix="+TempDir, "--host="+t.GNUArch, "--enable-kernel="+MinKernel)
+       glibcConf.Dir = BuildDir
+       if err := glibcConf.Run(); err != nil {
+               return err
+       }
+       glibcMake := makeCommand("make", "install-headers")
+       glibcMake.Dir = BuildDir
+       if err := glibcMake.Run(); err != nil {
+               return err
+       }
+       // We only need an empty stubs file
+       stubsFile := filepath.Join(IncludeDir, "gnu/stubs.h")
+       if file, err := os.Create(stubsFile); err != nil {
+               return err
+       } else {
+               file.Close()
+       }
+
+       return nil
+}
+
+// makes the zsysnum_linux_$GOARCH.go file
+func (t *target) makeZSysnumFile() error {
+       zsysnumFile := fmt.Sprintf("zsysnum_linux_%s.go", t.GoArch)
+       unistdFile := filepath.Join(IncludeDir, "asm/unistd.h")
+
+       args := append(t.cFlags(), unistdFile)
+       return t.commandFormatOutput("gofmt", zsysnumFile, "linux/mksysnum.pl", args...)
+}
+
+// makes the zsyscall_linux_$GOARCH.go file
+func (t *target) makeZSyscallFile() error {
+       zsyscallFile := fmt.Sprintf("zsyscall_linux_%s.go", t.GoArch)
+       // Find the correct architecture syscall file (might end with x.go)
+       archSyscallFile := fmt.Sprintf("syscall_linux_%s.go", t.GoArch)
+       if _, err := os.Stat(archSyscallFile); os.IsNotExist(err) {
+               shortArch := strings.TrimSuffix(t.GoArch, "le")
+               archSyscallFile = fmt.Sprintf("syscall_linux_%sx.go", shortArch)
+       }
+
+       args := append(t.mksyscallFlags(), "-tags", "linux,"+t.GoArch,
+               "syscall_linux.go", archSyscallFile)
+       return t.commandFormatOutput("gofmt", zsyscallFile, "./mksyscall.pl", args...)
+}
+
+// makes the zerrors_linux_$GOARCH.go file
+func (t *target) makeZErrorsFile() error {
+       zerrorsFile := fmt.Sprintf("zerrors_linux_%s.go", t.GoArch)
+
+       return t.commandFormatOutput("gofmt", zerrorsFile, "./mkerrors.sh", t.cFlags()...)
+}
+
+// makes the ztypes_linux_$GOARCH.go file
+func (t *target) makeZTypesFile() error {
+       ztypesFile := fmt.Sprintf("ztypes_linux_%s.go", t.GoArch)
+
+       args := []string{"tool", "cgo", "-godefs", "--"}
+       args = append(args, t.cFlags()...)
+       args = append(args, "linux/types.go")
+       return t.commandFormatOutput("mkpost", ztypesFile, "go", args...)
+}
+
+// Flags that should be given to gcc and cgo for this target
+func (t *target) cFlags() []string {
+       // Compile statically to avoid cross-architecture dynamic linking.
+       flags := []string{"-Wall", "-Werror", "-static", "-I" + IncludeDir}
+
+       // Architecture-specific flags
+       if t.SignedChar {
+               flags = append(flags, "-fsigned-char")
+       }
+       if t.LinuxArch == "x86" {
+               flags = append(flags, fmt.Sprintf("-m%d", t.Bits))
+       }
+
+       return flags
+}
+
+// Flags that should be given to mksyscall for this target
+func (t *target) mksyscallFlags() (flags []string) {
+       if t.Bits == 32 {
+               if t.BigEndian {
+                       flags = append(flags, "-b32")
+               } else {
+                       flags = append(flags, "-l32")
+               }
+       }
+
+       // This flag menas a 64-bit value should use (even, odd)-pair.
+       if t.GoArch == "arm" || (t.LinuxArch == "mips" && t.Bits == 32) {
+               flags = append(flags, "-arm")
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/linux/mksysnum.pl b/vendor/golang.org/x/sys/unix/linux/mksysnum.pl
new file mode 100755 (executable)
index 0000000..63fd800
--- /dev/null
@@ -0,0 +1,85 @@
+#!/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;
+}
+
+# Check that we are using the new build system if we should
+if($ENV{'GOLANG_SYS_BUILD'} ne "docker") {
+       print STDERR "In the new build system, mksysnum should not be called directly.\n";
+       print STDERR "See README.md\n";
+       exit 1;
+}
+
+my $command = "$0 ". join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const(
+EOF
+
+my $offset = 0;
+
+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/;
+       $num = $num + $offset;
+       print " SYS_$name = $num;\n";
+}
+
+my $prev;
+open(CC, "$ENV{'CC'} -E -dD @ARGV |") || die "can't run $ENV{'CC'}";
+while(<CC>){
+       if(/^#define __NR_Linux\s+([0-9]+)/){
+               # mips/mips64: extract offset
+               $offset = $1;
+       }
+       elsif(/^#define __NR(\w*)_SYSCALL_BASE\s+([0-9]+)/){
+               # arm: extract offset
+               $offset = $1;
+       }
+       elsif(/^#define __NR_syscalls\s+/) {
+               # ignore redefinitions of __NR_syscalls
+       }
+       elsif(/^#define __NR_(\w*)Linux_syscalls\s+/) {
+               # mips/mips64: ignore definitions about the number of 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)
+       }
+       elsif(/^#define __NR_(\w+)\s+\(__NR_Linux \+ ([0-9]+)/){
+               fmt($1, $2);
+       }
+       elsif(/^#define __NR_(\w+)\s+\(__NR_SYSCALL_BASE \+ ([0-9]+)/){
+               fmt($1, $2);
+       }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/vendor/golang.org/x/sys/unix/linux/types.go b/vendor/golang.org/x/sys/unix/linux/types.go
new file mode 100644 (file)
index 0000000..d3bf24a
--- /dev/null
@@ -0,0 +1,536 @@
+// 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 README.md
+*/
+
+// +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 <netinet/in.h>
+#include <netinet/tcp.h>
+#include <netpacket/packet.h>
+#include <poll.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/statfs.h>
+#include <sys/sysinfo.h>
+#include <sys/time.h>
+#include <sys/times.h>
+#include <sys/timex.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 <asm/ptrace.h>
+#include <time.h>
+#include <unistd.h>
+#include <ustat.h>
+#include <utime.h>
+#include <linux/can.h>
+#include <linux/if_alg.h>
+#include <linux/fs.h>
+#include <linux/vm_sockets.h>
+
+// On mips64, the glibc stat and kernel stat do not agree
+#if (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64)
+
+// Use the stat defined by the kernel with a few modifications. These are:
+//     * The time fields (like st_atime and st_atimensec) use the timespec
+//       struct (like st_atim) for consitancy with the glibc fields.
+//     * The padding fields get different names to not break compatibility.
+//     * st_blocks is signed, again for compatibility.
+struct stat {
+       unsigned int            st_dev;
+       unsigned int            st_pad1[3]; // Reserved for st_dev expansion
+
+       unsigned long           st_ino;
+
+       mode_t                  st_mode;
+       __u32                   st_nlink;
+
+       uid_t                   st_uid;
+       gid_t                   st_gid;
+
+       unsigned int            st_rdev;
+       unsigned int            st_pad2[3]; // Reserved for st_rdev expansion
+
+       off_t                   st_size;
+
+       // These are declared as speperate fields in the kernel. Here we use
+       // the timespec struct for consistancy with the other stat structs.
+       struct timespec         st_atim;
+       struct timespec         st_mtim;
+       struct timespec         st_ctim;
+
+       unsigned int            st_blksize;
+       unsigned int            st_pad4;
+
+       long                    st_blocks;
+};
+
+// These are needed because we do not include fcntl.h or sys/types.h
+#include <linux/fcntl.h>
+#include <linux/fadvise.h>
+
+#else
+
+// Use the stat defined by glibc
+#include <fcntl.h>
+#include <sys/types.h>
+
+#endif
+
+// Certain constants and structs are missing from the fs/crypto UAPI
+#define FS_MAX_KEY_SIZE                 64
+struct fscrypt_key {
+  __u32 mode;
+  __u8 raw[FS_MAX_KEY_SIZE];
+  __u32 size;
+};
+
+#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/bluetooth/hci.h
+struct sockaddr_hci {
+        sa_family_t     hci_family;
+        unsigned short  hci_dev;
+        unsigned short  hci_channel;
+};;
+
+// 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;
+#elif defined(__s390x__)
+typedef struct _user_regs_struct PtraceRegs;
+#elif defined(__sparc__)
+#include <asm/ptrace.h>
+typedef struct pt_regs PtraceRegs;
+#else
+typedef struct user_regs_struct PtraceRegs;
+#endif
+
+#if defined(__s390x__)
+typedef struct _user_psw_struct ptracePsw;
+typedef struct _user_fpregs_struct ptraceFpregs;
+typedef struct _user_per_struct ptracePer;
+#else
+typedef struct {} ptracePsw;
+typedef struct {} ptraceFpregs;
+typedef struct {} ptracePer;
+#endif
+
+// The real epoll_event is a union, and godefs doesn't handle it well.
+struct my_epoll_event {
+       uint32_t events;
+#if defined(__ARM_EABI__) || defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABIO32)
+       // padding is not specified in linux/eventpoll.h but added to conform to the
+       // alignment requirements of EABI
+       int32_t padFd;
+#elif defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__)
+       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
+
+// Filesystem Encryption
+
+type FscryptPolicy C.struct_fscrypt_policy
+
+type FscryptKey C.struct_fscrypt_key
+
+// 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 RawSockaddrHCI C.struct_sockaddr_hci
+
+type RawSockaddrCAN C.struct_sockaddr_can
+
+type RawSockaddrALG C.struct_sockaddr_alg
+
+type RawSockaddrVM C.struct_sockaddr_vm
+
+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
+       SizeofSockaddrHCI       = C.sizeof_struct_sockaddr_hci
+       SizeofSockaddrCAN       = C.sizeof_struct_sockaddr_can
+       SizeofSockaddrALG       = C.sizeof_struct_sockaddr_alg
+       SizeofSockaddrVM        = C.sizeof_struct_sockaddr_vm
+       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
+
+// Structures contained in PtraceRegs on s390x (exported by mkpost.go)
+type PtracePsw C.ptracePsw
+
+type PtraceFpregs C.ptraceFpregs
+
+type PtracePer C.ptracePer
+
+// 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_FOLLOW   = C.AT_SYMLINK_FOLLOW
+       AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
+)
+
+type PollFd C.struct_pollfd
+
+const (
+       POLLIN    = C.POLLIN
+       POLLPRI   = C.POLLPRI
+       POLLOUT   = C.POLLOUT
+       POLLRDHUP = C.POLLRDHUP
+       POLLERR   = C.POLLERR
+       POLLHUP   = C.POLLHUP
+       POLLNVAL  = C.POLLNVAL
+)
+
+type Sigset_t C.sigset_t
+
+// sysconf information
+
+const _SC_PAGESIZE = C._SC_PAGESIZE
+
+// Terminal handling
+
+type Termios C.termios_t
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..f0d6566
--- /dev/null
@@ -0,0 +1,179 @@
+#!/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.
+
+# This script runs or (given -n) prints suggested commands to generate files for
+# the Architecture/OS specified by the GOARCH and GOOS environment variables.
+# See README.md for more information about how the build system works.
+
+GOOSARCH="${GOOS}_${GOARCH}"
+
+# defaults
+mksyscall="./mksyscall.pl"
+mkerrors="./mkerrors.sh"
+zerrors="zerrors_$GOOSARCH.go"
+mksysctl=""
+zsysctl="zsysctl_$GOOSARCH.go"
+mksysnum=
+mktypes=
+run="sh"
+cmd=""
+
+case "$1" in
+-syscalls)
+       for i in zsyscall*go
+       do
+               # Run the command line that appears in the first line
+               # of the generated file to regenerate it.
+               sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i
+               rm _$i
+       done
+       exit 0
+       ;;
+-n)
+       run="cat"
+       cmd="echo"
+       shift
+esac
+
+case "$#" in
+0)
+       ;;
+*)
+       echo 'usage: mkall.sh [-n]' 1>&2
+       exit 2
+esac
+
+if [[ "$GOOS" = "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then
+       # Use then new build system
+       # Files generated through docker (use $cmd so you can Ctl-C the build or run)
+       $cmd docker build --tag generate:$GOOS $GOOS
+       $cmd docker run --interactive --tty --volume $(dirname "$(readlink -f "$0")"):/build generate:$GOOS
+       exit
+fi
+
+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 signed for making the bare syscall
+       # API consistent across over platforms.
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
+       ;;
+linux_sparc64)
+       GOOSARCH_in=syscall_linux_sparc64.go
+       unistd_h=/usr/include/sparc64-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 -tags $GOOS,$GOARCH $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 "$mktypes types_$GOOS.go | go run mkpost.go > 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..1bd1c9e
--- /dev/null
@@ -0,0 +1,545 @@
+#!/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
+
+# Check that we are using the new build system if we should
+if [[ "$GOOS" -eq "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then
+       if [[ "$GOLANG_SYS_BUILD" -ne "docker" ]]; then
+               echo 1>&2 "In the new build system, mkerrors should not be called directly."
+               echo 1>&2 "See README.md"
+               exit 1
+       fi
+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
+
+// <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of
+// these structures. We just include them copied from <bits/termios.h>.
+#if defined(__powerpc__)
+struct sgttyb {
+        char    sg_ispeed;
+        char    sg_ospeed;
+        char    sg_erase;
+        char    sg_kill;
+        short   sg_flags;
+};
+
+struct tchars {
+        char    t_intrc;
+        char    t_quitc;
+        char    t_startc;
+        char    t_stopc;
+        char    t_eofc;
+        char    t_brkc;
+};
+
+struct ltchars {
+        char    t_suspc;
+        char    t_dsuspc;
+        char    t_rprntc;
+        char    t_flushc;
+        char    t_werasc;
+        char    t_lnextc;
+};
+#endif
+
+#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_alg.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/falloc.h>
+#include <linux/filter.h>
+#include <linux/fs.h>
+#include <linux/netlink.h>
+#include <linux/random.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 <linux/serial.h>
+#include <linux/can.h>
+#include <linux/vm_sockets.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
+
+#ifndef SOL_NETLINK
+#define SOL_NETLINK    270
+#endif
+
+#ifdef SOL_BLUETOOTH
+// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h
+// but it is already in bluetooth_linux.go
+#undef SOL_BLUETOOTH
+#endif
+
+// Certain constants are missing from the fs/crypto UAPI
+#define FS_KEY_DESC_PREFIX              "fscrypt:"
+#define FS_KEY_DESC_PREFIX_SIZE         8
+#define FS_MAX_KEY_SIZE                 64
+'
+
+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 ~ /^FALLOC_/ ||
+               $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 ~ /^CAN_/ ||
+               $2 ~ /^ALG_/ ||
+               $2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE|IOC_(GET|SET)_ENCRYPTION)/ ||
+               $2 ~ /^GRND_/ ||
+               $2 ~ /^SPLICE_/ ||
+               $2 ~ /^(VM|VMADDR)_/ ||
+               $2 !~ "WMESGLEN" &&
+               $2 ~ /^W[A-Z0-9]+$/ ||
+               $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {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 '// Code generated by the command above; see README.md. 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, 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/mkpost.go b/vendor/golang.org/x/sys/unix/mkpost.go
new file mode 100644 (file)
index 0000000..d3ff659
--- /dev/null
@@ -0,0 +1,88 @@
+// 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.
+
+// +build ignore
+
+// mkpost processes the output of cgo -godefs to
+// modify the generated types. It is used to clean up
+// the sys API in an architecture specific manner.
+//
+// mkpost is run after cgo -godefs; see README.md.
+package main
+
+import (
+       "bytes"
+       "fmt"
+       "go/format"
+       "io/ioutil"
+       "log"
+       "os"
+       "regexp"
+)
+
+func main() {
+       // Get the OS and architecture (using GOARCH_TARGET if it exists)
+       goos := os.Getenv("GOOS")
+       goarch := os.Getenv("GOARCH_TARGET")
+       if goarch == "" {
+               goarch = os.Getenv("GOARCH")
+       }
+       // Check that we are using the new build system if we should be.
+       if goos == "linux" && goarch != "sparc64" {
+               if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
+                       os.Stderr.WriteString("In the new build system, mkpost should not be called directly.\n")
+                       os.Stderr.WriteString("See README.md\n")
+                       os.Exit(1)
+               }
+       }
+
+       b, err := ioutil.ReadAll(os.Stdin)
+       if err != nil {
+               log.Fatal(err)
+       }
+
+       // If we have empty Ptrace structs, we should delete them. Only s390x emits
+       // nonempty Ptrace structs.
+       ptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\s*})`)
+       b = ptraceRexexp.ReplaceAll(b, nil)
+
+       // Replace the control_regs union with a blank identifier for now.
+       controlRegsRegex := regexp.MustCompile(`(Control_regs)\s+\[0\]uint64`)
+       b = controlRegsRegex.ReplaceAll(b, []byte("_ [0]uint64"))
+
+       // Remove fields that are added by glibc
+       // Note that this is unstable as the identifers are private.
+       removeFieldsRegex := regexp.MustCompile(`X__glibc\S*`)
+       b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
+
+       // We refuse to export private fields on s390x
+       if goarch == "s390x" && goos == "linux" {
+               // Remove cgo padding fields
+               removeFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`)
+               b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
+
+               // Remove padding, hidden, or unused fields
+               removeFieldsRegex = regexp.MustCompile(`X_\S+`)
+               b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
+       }
+
+       // Remove the first line of warning from cgo
+       b = b[bytes.IndexByte(b, '\n')+1:]
+       // Modify the command in the header to include:
+       //  mkpost, our own warning, and a build tag.
+       replacement := fmt.Sprintf(`$1 | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build %s,%s`, goarch, goos)
+       cgoCommandRegex := regexp.MustCompile(`(cgo -godefs .*)`)
+       b = cgoCommandRegex.ReplaceAll(b, []byte(replacement))
+
+       // gofmt
+       b, err = format.Source(b)
+       if err != nil {
+               log.Fatal(err)
+       }
+
+       os.Stdout.Write(b)
+}
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..fb929b4
--- /dev/null
@@ -0,0 +1,328 @@
+#!/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
+my $tags = "";  # build tags
+
+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] eq "-tags") {
+       shift;
+       $tags = $ARGV[0];
+       shift;
+}
+
+if($ARGV[0] =~ /^-/) {
+       print STDERR "usage: mksyscall.pl [-b32 | -l32] [-tags x,y] [file ...]\n";
+       exit 1;
+}
+
+# Check that we are using the new build system if we should
+if($ENV{'GOOS'} eq "linux" && $ENV{'GOARCH'} ne "sparc64") {
+       if($ENV{'GOLANG_SYS_BUILD'} ne "docker") {
+               print STDERR "In the new build system, mksyscall should not be called directly.\n";
+               print STDERR "See README.md\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 $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))";
+                       $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))";
+                       $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";
+       }
+       $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
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build $tags
+
+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..3e6ed9d
--- /dev/null
@@ -0,0 +1,289 @@
+#!/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 = "";
+my $tags = "";  # build tags
+
+binmode STDOUT;
+
+if($ARGV[0] eq "-b32") {
+       $_32bit = "big-endian";
+       shift;
+} elsif($ARGV[0] eq "-l32") {
+       $_32bit = "little-endian";
+       shift;
+}
+if($ARGV[0] eq "-tags") {
+       shift;
+       $tags = $ARGV[0];
+       shift;
+}
+
+if($ARGV[0] =~ /^-/) {
+       print STDERR "usage: mksyscall_solaris.pl [-b32 | -l32] [-tags x,y] [file ...]\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 $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))";
+                       $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))";
+                       $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";
+       }
+       $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
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build $tags
+
+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..5453c53
--- /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
+// Code generated by the command above; see README.md. 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..6804f41
--- /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
+// Code generated by the command above; see README.md. 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..c83064f
--- /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
+// Code generated by the command above; see README.md. 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_netbsd.pl b/vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
new file mode 100755 (executable)
index 0000000..d31f2c4
--- /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
+// Code generated by the command above; see README.md. 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..84edf60
--- /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
+// Code generated by the command above; see README.md. 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/mmap_unix_test.go b/vendor/golang.org/x/sys/unix/mmap_unix_test.go
new file mode 100644 (file)
index 0000000..18ccec0
--- /dev/null
@@ -0,0 +1,23 @@
+// 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
+
+package unix_test
+
+import (
+       "testing"
+
+       "golang.org/x/sys/unix"
+)
+
+func TestMmap(t *testing.T) {
+       b, err := unix.Mmap(-1, 0, unix.Getpagesize(), unix.PROT_NONE, unix.MAP_ANON|unix.MAP_PRIVATE)
+       if err != nil {
+               t.Fatalf("Mmap: %v", err)
+       }
+       if err := unix.Munmap(b); err != nil {
+               t.Fatalf("Munmap: %v", err)
+       }
+}
diff --git a/vendor/golang.org/x/sys/unix/openbsd_pledge.go b/vendor/golang.org/x/sys/unix/openbsd_pledge.go
new file mode 100644 (file)
index 0000000..db4f72e
--- /dev/null
@@ -0,0 +1,38 @@
+// 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.
+
+// +build openbsd
+// +build 386 amd64 arm
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+const (
+       SYS_PLEDGE = 108
+)
+
+// Pledge implements the pledge syscall. For more information see pledge(2).
+func Pledge(promises string, paths []string) error {
+       promisesPtr, err := syscall.BytePtrFromString(promises)
+       if err != nil {
+               return err
+       }
+       promisesUnsafe, pathsUnsafe := unsafe.Pointer(promisesPtr), unsafe.Pointer(nil)
+       if paths != nil {
+               var pathsPtr []*byte
+               if pathsPtr, err = syscall.SlicePtrFromStrings(paths); err != nil {
+                       return err
+               }
+               pathsUnsafe = unsafe.Pointer(&pathsPtr[0])
+       }
+       _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(promisesUnsafe), uintptr(pathsUnsafe), 0)
+       if e != 0 {
+               return e
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/sys/unix/openbsd_test.go b/vendor/golang.org/x/sys/unix/openbsd_test.go
new file mode 100644 (file)
index 0000000..734d765
--- /dev/null
@@ -0,0 +1,113 @@
+// 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.
+
+// +build openbsd
+
+// This, on the face of it, bizarre testing mechanism is necessary because
+// the only reliable way to gauge whether or not a pledge(2) call has succeeded
+// is that the program has been killed as a result of breaking its pledge.
+
+package unix_test
+
+import (
+       "flag"
+       "fmt"
+       "io/ioutil"
+       "os"
+       "os/exec"
+       "path/filepath"
+       "testing"
+
+       "golang.org/x/sys/unix"
+)
+
+type testProc struct {
+       fn      func()       // should always exit instead of returning
+       cleanup func() error // for instance, delete coredumps from testing pledge
+       success bool         // whether zero-exit means success or failure
+}
+
+var (
+       testProcs = map[string]testProc{}
+       procName  = ""
+)
+
+const (
+       optName = "sys-unix-internal-procname"
+)
+
+func init() {
+       flag.StringVar(&procName, optName, "", "internal use only")
+}
+
+// testCmd generates a proper command that, when executed, runs the test
+// corresponding to the given key.
+func testCmd(procName string) (*exec.Cmd, error) {
+       exe, err := filepath.Abs(os.Args[0])
+       if err != nil {
+               return nil, err
+       }
+       cmd := exec.Command(exe, "-"+optName+"="+procName)
+       cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr
+       return cmd, nil
+}
+
+// ExitsCorrectly is a comprehensive, one-line-of-use wrapper for testing
+// a testProc with a key.
+func ExitsCorrectly(procName string, t *testing.T) {
+       s := testProcs[procName]
+       c, err := testCmd(procName)
+       defer func() {
+               if s.cleanup() != nil {
+                       t.Fatalf("Failed to run cleanup for %s", procName)
+               }
+       }()
+       if err != nil {
+               t.Fatalf("Failed to construct command for %s", procName)
+       }
+       if (c.Run() == nil) != s.success {
+               result := "succeed"
+               if !s.success {
+                       result = "fail"
+               }
+               t.Fatalf("Process did not %s when it was supposed to", result)
+       }
+}
+
+func TestMain(m *testing.M) {
+       flag.Parse()
+       if procName != "" {
+               testProcs[procName].fn()
+       }
+       os.Exit(m.Run())
+}
+
+// For example, add a test for pledge.
+func init() {
+       testProcs["pledge"] = testProc{
+               func() {
+                       fmt.Println(unix.Pledge("", nil))
+                       os.Exit(0)
+               },
+               func() error {
+                       files, err := ioutil.ReadDir(".")
+                       if err != nil {
+                               return err
+                       }
+                       for _, file := range files {
+                               if filepath.Ext(file.Name()) == ".core" {
+                                       if err := os.Remove(file.Name()); err != nil {
+                                               return err
+                                       }
+                               }
+                       }
+                       return nil
+               },
+               false,
+       }
+}
+
+func TestPledge(t *testing.T) {
+       ExitsCorrectly("pledge", t)
+}
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..f1493a3
--- /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 || uint64(h.Len) > uint64(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..85e3502
--- /dev/null
@@ -0,0 +1,69 @@
+// 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"
+
+// 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
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
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..ccb29c7
--- /dev/null
@@ -0,0 +1,614 @@
+// 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) {
+       buf, err := SysctlRaw(name, args...)
+       if err != nil {
+               return "", err
+       }
+       n := len(buf)
+
+       // 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_bsd_test.go b/vendor/golang.org/x/sys/unix/syscall_bsd_test.go
new file mode 100644 (file)
index 0000000..d8085a0
--- /dev/null
@@ -0,0 +1,62 @@
+// 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 openbsd
+
+package unix_test
+
+import (
+       "os/exec"
+       "runtime"
+       "testing"
+
+       "golang.org/x/sys/unix"
+)
+
+const MNT_WAIT = 1
+const MNT_NOWAIT = 2
+
+func TestGetfsstat(t *testing.T) {
+       const flags = MNT_NOWAIT // see golang.org/issue/16937
+       n, err := unix.Getfsstat(nil, flags)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       data := make([]unix.Statfs_t, n)
+       n2, err := unix.Getfsstat(data, flags)
+       if err != nil {
+               t.Fatal(err)
+       }
+       if n != n2 {
+               t.Errorf("Getfsstat(nil) = %d, but subsequent Getfsstat(slice) = %d", n, n2)
+       }
+       for i, stat := range data {
+               if stat == (unix.Statfs_t{}) {
+                       t.Errorf("index %v is an empty Statfs_t struct", i)
+               }
+       }
+       if t.Failed() {
+               for i, stat := range data[:n2] {
+                       t.Logf("data[%v] = %+v", i, stat)
+               }
+               mount, err := exec.Command("mount").CombinedOutput()
+               if err != nil {
+                       t.Logf("mount: %v\n%s", err, mount)
+               } else {
+                       t.Logf("mount: %s", mount)
+               }
+       }
+}
+
+func TestSysctlRaw(t *testing.T) {
+       if runtime.GOOS == "openbsd" {
+               t.Skip("kern.proc.pid does not exist on OpenBSD")
+       }
+
+       _, err := unix.SysctlRaw("kern.proc.pid", unix.Getpid())
+       if err != nil {
+               t.Fatal(err)
+       }
+}
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..7d91ac0
--- /dev/null
@@ -0,0 +1,493 @@
+// 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
+}
+
+func direntIno(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
+}
+
+func direntReclen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
+}
+
+func direntNamlen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
+}
+
+//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..c172a3d
--- /dev/null
@@ -0,0 +1,77 @@
+// 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 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..fc1e5a4
--- /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 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 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..d286cf4
--- /dev/null
@@ -0,0 +1,71 @@
+// 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 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..c33905c
--- /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.
+
+// +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 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..7e0210f
--- /dev/null
@@ -0,0 +1,425 @@
+// 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.
+
+// DragonFly BSD 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
+}
+
+func direntIno(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))
+}
+
+func direntReclen(buf []byte) (uint64, bool) {
+       namlen, ok := direntNamlen(buf)
+       if !ok {
+               return 0, false
+       }
+       return (16 + namlen + 1 + 7) &^ 7, true
+}
+
+func direntNamlen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
+}
+
+//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 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
+}
+
+/*
+ * 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
+//sys  accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)
+
+/*
+ * 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
+// 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_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
new file mode 100644 (file)
index 0000000..da7cb79
--- /dev/null
@@ -0,0 +1,61 @@
+// 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 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..077d1f3
--- /dev/null
@@ -0,0 +1,666 @@
+// 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
+}
+
+func direntIno(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))
+}
+
+func direntReclen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
+}
+
+func direntNamlen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
+}
+
+//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..6a0cd80
--- /dev/null
@@ -0,0 +1,61 @@
+// 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 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..e142540
--- /dev/null
@@ -0,0 +1,61 @@
+// 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 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..5504cb1
--- /dev/null
@@ -0,0 +1,61 @@
+// 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 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_freebsd_test.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go
new file mode 100644 (file)
index 0000000..3c3d825
--- /dev/null
@@ -0,0 +1,20 @@
+// 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 freebsd
+
+package unix_test
+
+import (
+       "testing"
+
+       "golang.org/x/sys/unix"
+)
+
+func TestSysctlUint64(t *testing.T) {
+       _, err := unix.SysctlUint64("security.mac.labeled")
+       if err != nil {
+               t.Fatal(err)
+       }
+}
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..9737e08
--- /dev/null
@@ -0,0 +1,1297 @@
+// 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  ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
+
+func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       if len(fds) == 0 {
+               return ppoll(nil, 0, timeout, sigmask)
+       }
+       return ppoll(&fds[0], len(fds), timeout, sigmask)
+}
+
+//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)
+
+//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] = NsecToTimeval(TimespecToNsec(ts[i]))
+       }
+       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
+}
+
+type SockaddrHCI struct {
+       Dev     uint16
+       Channel uint16
+       raw     RawSockaddrHCI
+}
+
+func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       sa.raw.Family = AF_BLUETOOTH
+       sa.raw.Dev = sa.Dev
+       sa.raw.Channel = sa.Channel
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil
+}
+
+// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.
+// The RxID and TxID fields are used for transport protocol addressing in
+// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with
+// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning.
+//
+// The SockaddrCAN struct must be bound to the socket file descriptor
+// using Bind before the CAN socket can be used.
+//
+//      // Read one raw CAN frame
+//      fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW)
+//      addr := &SockaddrCAN{Ifindex: index}
+//      Bind(fd, addr)
+//      frame := make([]byte, 16)
+//      Read(fd, frame)
+//
+// The full SocketCAN documentation can be found in the linux kernel
+// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt
+type SockaddrCAN struct {
+       Ifindex int
+       RxID    uint32
+       TxID    uint32
+       raw     RawSockaddrCAN
+}
+
+func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Family = AF_CAN
+       sa.raw.Ifindex = int32(sa.Ifindex)
+       rx := (*[4]byte)(unsafe.Pointer(&sa.RxID))
+       for i := 0; i < 4; i++ {
+               sa.raw.Addr[i] = rx[i]
+       }
+       tx := (*[4]byte)(unsafe.Pointer(&sa.TxID))
+       for i := 0; i < 4; i++ {
+               sa.raw.Addr[i+4] = tx[i]
+       }
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil
+}
+
+// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets.
+// SockaddrALG enables userspace access to the Linux kernel's cryptography
+// subsystem. The Type and Name fields specify which type of hash or cipher
+// should be used with a given socket.
+//
+// To create a file descriptor that provides access to a hash or cipher, both
+// Bind and Accept must be used. Once the setup process is complete, input
+// data can be written to the socket, processed by the kernel, and then read
+// back as hash output or ciphertext.
+//
+// Here is an example of using an AF_ALG socket with SHA1 hashing.
+// The initial socket setup process is as follows:
+//
+//      // Open a socket to perform SHA1 hashing.
+//      fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0)
+//      addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"}
+//      unix.Bind(fd, addr)
+//      // Note: unix.Accept does not work at this time; must invoke accept()
+//      // manually using unix.Syscall.
+//      hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0)
+//
+// Once a file descriptor has been returned from Accept, it may be used to
+// perform SHA1 hashing. The descriptor is not safe for concurrent use, but
+// may be re-used repeatedly with subsequent Write and Read operations.
+//
+// When hashing a small byte slice or string, a single Write and Read may
+// be used:
+//
+//      // Assume hashfd is already configured using the setup process.
+//      hash := os.NewFile(hashfd, "sha1")
+//      // Hash an input string and read the results. Each Write discards
+//      // previous hash state. Read always reads the current state.
+//      b := make([]byte, 20)
+//      for i := 0; i < 2; i++ {
+//          io.WriteString(hash, "Hello, world.")
+//          hash.Read(b)
+//          fmt.Println(hex.EncodeToString(b))
+//      }
+//      // Output:
+//      // 2ae01472317d1935a84797ec1983ae243fc6aa28
+//      // 2ae01472317d1935a84797ec1983ae243fc6aa28
+//
+// For hashing larger byte slices, or byte streams such as those read from
+// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update
+// the hash digest instead of creating a new one for a given chunk and finalizing it.
+//
+//      // Assume hashfd and addr are already configured using the setup process.
+//      hash := os.NewFile(hashfd, "sha1")
+//      // Hash the contents of a file.
+//      f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz")
+//      b := make([]byte, 4096)
+//      for {
+//          n, err := f.Read(b)
+//          if err == io.EOF {
+//              break
+//          }
+//          unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr)
+//      }
+//      hash.Read(b)
+//      fmt.Println(hex.EncodeToString(b))
+//      // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5
+//
+// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html.
+type SockaddrALG struct {
+       Type    string
+       Name    string
+       Feature uint32
+       Mask    uint32
+       raw     RawSockaddrALG
+}
+
+func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       // Leave room for NUL byte terminator.
+       if len(sa.Type) > 13 {
+               return nil, 0, EINVAL
+       }
+       if len(sa.Name) > 63 {
+               return nil, 0, EINVAL
+       }
+
+       sa.raw.Family = AF_ALG
+       sa.raw.Feat = sa.Feature
+       sa.raw.Mask = sa.Mask
+
+       typ, err := ByteSliceFromString(sa.Type)
+       if err != nil {
+               return nil, 0, err
+       }
+       name, err := ByteSliceFromString(sa.Name)
+       if err != nil {
+               return nil, 0, err
+       }
+
+       copy(sa.raw.Type[:], typ)
+       copy(sa.raw.Name[:], name)
+
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil
+}
+
+// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.
+// SockaddrVM provides access to Linux VM sockets: a mechanism that enables
+// bidirectional communication between a hypervisor and its guest virtual
+// machines.
+type SockaddrVM struct {
+       // CID and Port specify a context ID and port address for a VM socket.
+       // Guests have a unique CID, and hosts may have a well-known CID of:
+       //  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.
+       //  - VMADDR_CID_HOST: refers to other processes on the host.
+       CID  uint32
+       Port uint32
+       raw  RawSockaddrVM
+}
+
+func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       sa.raw.Family = AF_VSOCK
+       sa.raw.Port = sa.Port
+       sa.raw.Cid = sa.CID
+
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, 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
+
+       case AF_VSOCK:
+               pp := (*RawSockaddrVM)(unsafe.Pointer(rsa))
+               sa := &SockaddrVM{
+                       CID:  pp.Cid,
+                       Port: pp.Port,
+               }
+               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 GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {
+       var value TCPInfo
+       vallen := _Socklen(SizeofTCPInfo)
+       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 PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) {
+       return ptracePeek(PTRACE_PEEKUSR, 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 ReadDirent(fd int, buf []byte) (n int, err error) {
+       return Getdents(fd, buf)
+}
+
+func direntIno(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
+}
+
+func direntReclen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
+}
+
+func direntNamlen(buf []byte) (uint64, bool) {
+       reclen, ok := direntReclen(buf)
+       if !ok {
+               return 0, false
+       }
+       return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true
+}
+
+//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  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)
+//sys  Getrandom(buf []byte, flags int) (n int, err error)
+//sysnb        Getrusage(who int, rusage *Rusage) (err error)
+//sysnb        Getsid(pid int) (sid int, 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  PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT
+//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *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)
+
+// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd,
+// using the specified flags.
+func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
+       n, _, errno := Syscall6(
+               SYS_VMSPLICE,
+               uintptr(fd),
+               uintptr(unsafe.Pointer(&iovs[0])),
+               uintptr(len(iovs)),
+               uintptr(flags),
+               0,
+               0,
+       )
+       if errno != 0 {
+               return 0, syscall.Errno(errno)
+       }
+
+       return int(n), nil
+}
+
+/*
+ * 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
+// 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
+// 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..2b881b9
--- /dev/null
@@ -0,0 +1,399 @@
+// 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 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)
+//sys  EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys  Pause() (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)
+}
+
+//sys  poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+       if len(fds) == 0 {
+               return poll(nil, 0, timeout)
+       }
+       return poll(&fds[0], len(fds), timeout)
+}
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..9516a3f
--- /dev/null
@@ -0,0 +1,152 @@
+// 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
+
+//sys  Dup2(oldfd int, newfd int) (err error)
+//sys  EpollWait(epfd int, events []EpollEvent, msec int) (n 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  Pause() (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)
+
+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 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)
+}
+
+//sys  poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+       if len(fds) == 0 {
+               return poll(nil, 0, timeout)
+       }
+       return poll(&fds[0], len(fds), timeout)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go
new file mode 100644 (file)
index 0000000..21a4946
--- /dev/null
@@ -0,0 +1,13 @@
+// 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.
+
+// +build amd64,linux
+// +build !gccgo
+
+package unix
+
+import "syscall"
+
+//go:noescape
+func gettimeofday(tv *Timeval) (err syscall.Errno)
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..71d8702
--- /dev/null
@@ -0,0 +1,263 @@
+// 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)
+//sys  EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys  Pause() (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)
+}
+
+//sys  poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+       if len(fds) == 0 {
+               return poll(nil, 0, timeout)
+       }
+       return poll(&fds[0], len(fds), timeout)
+}
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..4a13639
--- /dev/null
@@ -0,0 +1,190 @@
+// 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
+
+//sys  EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT
+//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 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)
+}
+
+func Dup2(oldfd int, newfd int) (err error) {
+       return Dup3(oldfd, newfd, 0)
+}
+
+func Pause() (err error) {
+       _, _, e1 := Syscall6(SYS_PPOLL, 0, 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// 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
+)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+       var ts *Timespec
+       if timeout >= 0 {
+               ts = new(Timespec)
+               *ts = NsecToTimespec(int64(timeout) * 1e6)
+       }
+       if len(fds) == 0 {
+               return ppoll(nil, 0, ts, nil)
+       }
+       return ppoll(&fds[0], len(fds), ts, nil)
+}
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..8119fde
--- /dev/null
@@ -0,0 +1,208 @@
+// 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
+
+//sys  EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//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  Pause() (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 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)
+}
+
+//sys  poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+       if len(fds) == 0 {
+               return poll(nil, 0, timeout)
+       }
+       return poll(&fds[0], len(fds), timeout)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go
new file mode 100644 (file)
index 0000000..be77d24
--- /dev/null
@@ -0,0 +1,239 @@
+// 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.
+
+// +build linux
+// +build mips mipsle
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+//sys  Dup2(oldfd int, newfd int) (err error)
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (euid int)
+//sysnb        Getgid() (gid int)
+//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  Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
+//sys  sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
+//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        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  SyncFileRange(fd int, off int64, n int64, flags int) (err error)
+//sys  Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
+//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)
+
+//sysnb        InotifyInit() (fd int, err error)
+//sys  Ioperm(from int, num int, on int) (err error)
+//sys  Iopl(level int) (err error)
+
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+//sysnb        Time(t *Time_t) (tt Time_t, err error)
+
+//sys  Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys  Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
+//sys  Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
+
+//sys  Utime(path string, buf *Utimbuf) (err error)
+//sys  EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys  Pause() (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 = errnoErr(e)
+       }
+       return
+}
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+       p, err := BytePtrFromString(path)
+       if err != nil {
+               return err
+       }
+       _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+       if e != 0 {
+               err = errnoErr(e)
+       }
+       return
+}
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+       _, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0)
+       if e != 0 {
+               err = errnoErr(e)
+       }
+       return
+}
+
+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
+}
+
+//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 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
+}
+
+//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)
+}
+
+const rlimInf32 = ^uint32(0)
+const rlimInf64 = ^uint64(0)
+
+type rlimit32 struct {
+       Cur uint32
+       Max uint32
+}
+
+//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT
+
+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.Regs[64]) }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Regs[64] = 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)
+}
+
+//sys  poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+       if len(fds) == 0 {
+               return poll(nil, 0, timeout)
+       }
+       return poll(&fds[0], len(fds), timeout)
+}
+
+func Getpagesize() int { return 4096 }
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..60770f6
--- /dev/null
@@ -0,0 +1,135 @@
+// 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  EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys  Dup2(oldfd int, newfd int) (err error)
+//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)
+//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  Pause() (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 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)
+}
+
+//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
+}
+
+//sys  poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+       if len(fds) == 0 {
+               return poll(nil, 0, timeout)
+       }
+       return poll(&fds[0], len(fds), timeout)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go
new file mode 100644 (file)
index 0000000..1708a4b
--- /dev/null
@@ -0,0 +1,328 @@
+// 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.
+
+// +build s390x,linux
+
+package unix
+
+import (
+       "unsafe"
+)
+
+//sys  Dup2(oldfd int, newfd int) (err error)
+//sys  EpollWait(epfd int, events []EpollEvent, msec int) (n 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  Lchown(path string, uid int, gid int) (err error)
+//sys  Lstat(path string, stat *Stat_t) (err error)
+//sys  Pause() (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  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)
+//sysnb        getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb        setgroups(n int, list *_Gid_t) (err error)
+
+func Getpagesize() int { return 4096 }
+
+//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 NsecToTimeval(nsec int64) (tv Timeval) {
+       nsec += 999 // round up to microsecond
+       tv.Sec = nsec / 1e9
+       tv.Usec = nsec % 1e9 / 1e3
+       return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe2(&pp, 0) // pipe2 is the same as pipe when flags are set to 0.
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+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
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Psw.Addr }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = 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)
+}
+
+// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct.
+// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in <asm/unistd.h>.
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+       mmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)}
+       r0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0)
+       xaddr = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// On s390x Linux, all the socket calls go through an extra indirection.
+// The arguments to the underlying system call (SYS_SOCKETCALL) are the
+// number below and a pointer to an array of uintptr.
+const (
+       // see linux/net.h
+       netSocket      = 1
+       netBind        = 2
+       netConnect     = 3
+       netListen      = 4
+       netAccept      = 5
+       netGetSockName = 6
+       netGetPeerName = 7
+       netSocketPair  = 8
+       netSend        = 9
+       netRecv        = 10
+       netSendTo      = 11
+       netRecvFrom    = 12
+       netShutdown    = 13
+       netSetSockOpt  = 14
+       netGetSockOpt  = 15
+       netSendMsg     = 16
+       netRecvMsg     = 17
+       netAccept4     = 18
+       netRecvMMsg    = 19
+       netSendMMsg    = 20
+)
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (int, error) {
+       args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}
+       fd, _, err := Syscall(SYS_SOCKETCALL, netAccept, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return 0, err
+       }
+       return int(fd), nil
+}
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) {
+       args := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)}
+       fd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return 0, err
+       }
+       return int(fd), nil
+}
+
+func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {
+       args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}
+       _, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return err
+       }
+       return nil
+}
+
+func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {
+       args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}
+       _, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return err
+       }
+       return nil
+}
+
+func socketpair(domain int, typ int, flags int, fd *[2]int32) error {
+       args := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))}
+       _, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return err
+       }
+       return nil
+}
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) error {
+       args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}
+       _, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return err
+       }
+       return nil
+}
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) error {
+       args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}
+       _, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return err
+       }
+       return nil
+}
+
+func socket(domain int, typ int, proto int) (int, error) {
+       args := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)}
+       fd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return 0, err
+       }
+       return int(fd), nil
+}
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error {
+       args := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))}
+       _, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return err
+       }
+       return nil
+}
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error {
+       args := [4]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val)}
+       _, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return err
+       }
+       return nil
+}
+
+func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) {
+       var base uintptr
+       if len(p) > 0 {
+               base = uintptr(unsafe.Pointer(&p[0]))
+       }
+       args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))}
+       n, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return 0, err
+       }
+       return int(n), nil
+}
+
+func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error {
+       var base uintptr
+       if len(p) > 0 {
+               base = uintptr(unsafe.Pointer(&p[0]))
+       }
+       args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)}
+       _, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return err
+       }
+       return nil
+}
+
+func recvmsg(s int, msg *Msghdr, flags int) (int, error) {
+       args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}
+       n, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return 0, err
+       }
+       return int(n), nil
+}
+
+func sendmsg(s int, msg *Msghdr, flags int) (int, error) {
+       args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}
+       n, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return 0, err
+       }
+       return int(n), nil
+}
+
+func Listen(s int, n int) error {
+       args := [2]uintptr{uintptr(s), uintptr(n)}
+       _, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return err
+       }
+       return nil
+}
+
+func Shutdown(s, how int) error {
+       args := [2]uintptr{uintptr(s), uintptr(how)}
+       _, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0)
+       if err != 0 {
+               return err
+       }
+       return nil
+}
+
+//sys  poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+       if len(fds) == 0 {
+               return poll(nil, 0, timeout)
+       }
+       return poll(&fds[0], len(fds), timeout)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go
new file mode 100644 (file)
index 0000000..20b7454
--- /dev/null
@@ -0,0 +1,169 @@
+// 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 sparc64,linux
+
+package unix
+
+import (
+       "sync/atomic"
+       "syscall"
+)
+
+//sys  EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys  Dup2(oldfd int, newfd int) (err error)
+//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  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  Pause() (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)
+
+func sysconf(name int) (n int64, err syscall.Errno)
+
+// 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)
+}
+
+func Ioperm(from int, num int, on int) (err error) {
+       return ENOSYS
+}
+
+func Iopl(level int) (err error) {
+       return ENOSYS
+}
+
+//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 NsecToTimeval(nsec int64) (tv Timeval) {
+       nsec += 999 // round up to microsecond
+       tv.Sec = nsec / 1e9
+       tv.Usec = int32(nsec % 1e9 / 1e3)
+       return
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Tpc }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = 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)
+}
+
+//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
+}
+
+//sys  poll(fds *PollFd, nfds int, timeout int) (n int, err error)
+
+func Poll(fds []PollFd, timeout int) (n int, err error) {
+       if len(fds) == 0 {
+               return poll(nil, 0, timeout)
+       }
+       return poll(&fds[0], len(fds), timeout)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_test.go b/vendor/golang.org/x/sys/unix/syscall_linux_test.go
new file mode 100644 (file)
index 0000000..91184ca
--- /dev/null
@@ -0,0 +1,186 @@
+// 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.
+
+// +build linux
+
+package unix_test
+
+import (
+       "io/ioutil"
+       "os"
+       "testing"
+       "time"
+
+       "golang.org/x/sys/unix"
+)
+
+func TestPoll(t *testing.T) {
+       f, cleanup := mktmpfifo(t)
+       defer cleanup()
+
+       const timeout = 100
+
+       ok := make(chan bool, 1)
+       go func() {
+               select {
+               case <-time.After(10 * timeout * time.Millisecond):
+                       t.Errorf("Poll: failed to timeout after %d milliseconds", 10*timeout)
+               case <-ok:
+               }
+       }()
+
+       fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}}
+       n, err := unix.Poll(fds, timeout)
+       ok <- true
+       if err != nil {
+               t.Errorf("Poll: unexpected error: %v", err)
+               return
+       }
+       if n != 0 {
+               t.Errorf("Poll: wrong number of events: got %v, expected %v", n, 0)
+               return
+       }
+}
+
+func TestPpoll(t *testing.T) {
+       f, cleanup := mktmpfifo(t)
+       defer cleanup()
+
+       const timeout = 100 * time.Millisecond
+
+       ok := make(chan bool, 1)
+       go func() {
+               select {
+               case <-time.After(10 * timeout):
+                       t.Errorf("Ppoll: failed to timeout after %d", 10*timeout)
+               case <-ok:
+               }
+       }()
+
+       fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}}
+       timeoutTs := unix.NsecToTimespec(int64(timeout))
+       n, err := unix.Ppoll(fds, &timeoutTs, nil)
+       ok <- true
+       if err != nil {
+               t.Errorf("Ppoll: unexpected error: %v", err)
+               return
+       }
+       if n != 0 {
+               t.Errorf("Ppoll: wrong number of events: got %v, expected %v", n, 0)
+               return
+       }
+}
+
+// mktmpfifo creates a temporary FIFO and provides a cleanup function.
+func mktmpfifo(t *testing.T) (*os.File, func()) {
+       err := unix.Mkfifo("fifo", 0666)
+       if err != nil {
+               t.Fatalf("mktmpfifo: failed to create FIFO: %v", err)
+       }
+
+       f, err := os.OpenFile("fifo", os.O_RDWR, 0666)
+       if err != nil {
+               os.Remove("fifo")
+               t.Fatalf("mktmpfifo: failed to open FIFO: %v", err)
+       }
+
+       return f, func() {
+               f.Close()
+               os.Remove("fifo")
+       }
+}
+
+func TestTime(t *testing.T) {
+       var ut unix.Time_t
+       ut2, err := unix.Time(&ut)
+       if err != nil {
+               t.Fatalf("Time: %v", err)
+       }
+       if ut != ut2 {
+               t.Errorf("Time: return value %v should be equal to argument %v", ut2, ut)
+       }
+
+       var now time.Time
+
+       for i := 0; i < 10; i++ {
+               ut, err = unix.Time(nil)
+               if err != nil {
+                       t.Fatalf("Time: %v", err)
+               }
+
+               now = time.Now()
+
+               if int64(ut) == now.Unix() {
+                       return
+               }
+       }
+
+       t.Errorf("Time: return value %v should be nearly equal to time.Now().Unix() %v", ut, now.Unix())
+}
+
+func TestUtime(t *testing.T) {
+       defer chtmpdir(t)()
+
+       touch(t, "file1")
+
+       buf := &unix.Utimbuf{
+               Modtime: 12345,
+       }
+
+       err := unix.Utime("file1", buf)
+       if err != nil {
+               t.Fatalf("Utime: %v", err)
+       }
+
+       fi, err := os.Stat("file1")
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       if fi.ModTime().Unix() != 12345 {
+               t.Errorf("Utime: failed to change modtime: expected %v, got %v", 12345, fi.ModTime().Unix())
+       }
+}
+
+func TestGetrlimit(t *testing.T) {
+       var rlim unix.Rlimit
+       err := unix.Getrlimit(unix.RLIMIT_AS, &rlim)
+       if err != nil {
+               t.Fatalf("Getrlimit: %v", err)
+       }
+}
+
+// utilities taken from os/os_test.go
+
+func touch(t *testing.T, name string) {
+       f, err := os.Create(name)
+       if err != nil {
+               t.Fatal(err)
+       }
+       if err := f.Close(); err != nil {
+               t.Fatal(err)
+       }
+}
+
+// chtmpdir changes the working directory to a new temporary directory and
+// provides a cleanup function. Used when PWD is read-only.
+func chtmpdir(t *testing.T) func() {
+       oldwd, err := os.Getwd()
+       if err != nil {
+               t.Fatalf("chtmpdir: %v", err)
+       }
+       d, err := ioutil.TempDir("", "test")
+       if err != nil {
+               t.Fatalf("chtmpdir: %v", err)
+       }
+       if err := os.Chdir(d); err != nil {
+               t.Fatalf("chtmpdir: %v", err)
+       }
+       return func() {
+               if err := os.Chdir(oldwd); err != nil {
+                       t.Fatalf("chtmpdir: %v", err)
+               }
+               os.RemoveAll(d)
+       }
+}
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..01f6a48
--- /dev/null
@@ -0,0 +1,476 @@
+// 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
+}
+
+func direntIno(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))
+}
+
+func direntReclen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
+}
+
+func direntNamlen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
+}
+
+//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..afaca09
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +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 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..a6ff04c
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +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 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..68a6969
--- /dev/null
@@ -0,0 +1,42 @@
+// 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 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..c0d2b6c
--- /dev/null
@@ -0,0 +1,287 @@
+// 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
+}
+
+func direntIno(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))
+}
+
+func direntReclen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
+}
+
+func direntNamlen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
+}
+
+//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..a66ddc5
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +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 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..0776c1f
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +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 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..3cb1d0b
--- /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)
+}
+
+func direntIno(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
+}
+
+func direntReclen(buf []byte) (uint64, bool) {
+       return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
+}
+
+func direntNamlen(buf []byte) (uint64, bool) {
+       reclen, ok := direntReclen(buf)
+       if !ok {
+               return 0, false
+       }
+       return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true
+}
+
+//sysnb        pipe(p *[2]_C_int) (n int, err error)
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       n, err := pipe(&pp)
+       if n != 0 {
+               return err
+       }
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return nil
+}
+
+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 }
+
+//sys  wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error)
+
+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) {
+       var status _C_int
+       rpid, err := wait4(int32(pid), &status, options, rusage)
+       wpid := int(rpid)
+       if wpid == -1 {
+               return wpid, err
+       }
+       if wstatus != nil {
+               *wstatus = WaitStatus(status)
+       }
+       return wpid, nil
+}
+
+//sys  gethostname(buf []byte) (n int, err error)
+
+func Gethostname() (name string, err error) {
+       var buf [MaxHostNameLen]byte
+       n, err := gethostname(buf[:])
+       if n != 0 {
+               return "", err
+       }
+       n = clen(buf[:])
+       if n < 1 {
+               return "", EFAULT
+       }
+       return string(buf[:n]), nil
+}
+
+//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..5aff62c
--- /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 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 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_test.go b/vendor/golang.org/x/sys/unix/syscall_test.go
new file mode 100644 (file)
index 0000000..95eac92
--- /dev/null
@@ -0,0 +1,50 @@
+// 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 solaris
+
+package unix_test
+
+import (
+       "fmt"
+       "testing"
+
+       "golang.org/x/sys/unix"
+)
+
+func testSetGetenv(t *testing.T, key, value string) {
+       err := unix.Setenv(key, value)
+       if err != nil {
+               t.Fatalf("Setenv failed to set %q: %v", value, err)
+       }
+       newvalue, found := unix.Getenv(key)
+       if !found {
+               t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value)
+       }
+       if newvalue != value {
+               t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value)
+       }
+}
+
+func TestEnv(t *testing.T) {
+       testSetGetenv(t, "TESTENV", "AVALUE")
+       // make sure TESTENV gets set to "", not deleted
+       testSetGetenv(t, "TESTENV", "")
+}
+
+func TestItoa(t *testing.T) {
+       // Make most negative integer: 0x8000...
+       i := 1
+       for i<<1 != 0 {
+               i <<= 1
+       }
+       if i >= 0 {
+               t.Fatal("bad math")
+       }
+       s := unix.Itoa(i)
+       f := fmt.Sprint(i)
+       if s != f {
+               t.Fatalf("itoa(%d) = %s, want %s", i, s, f)
+       }
+}
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..8a5237d
--- /dev/null
@@ -0,0 +1,292 @@
+// 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
+}
+
+// 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/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
new file mode 100644 (file)
index 0000000..4cb8e8e
--- /dev/null
@@ -0,0 +1,15 @@
+// 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+// +build !gccgo
+
+package unix
+
+import "syscall"
+
+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)
diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_test.go b/vendor/golang.org/x/sys/unix/syscall_unix_test.go
new file mode 100644 (file)
index 0000000..49208a0
--- /dev/null
@@ -0,0 +1,353 @@
+// 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 solaris
+
+package unix_test
+
+import (
+       "flag"
+       "fmt"
+       "io/ioutil"
+       "net"
+       "os"
+       "os/exec"
+       "path/filepath"
+       "runtime"
+       "testing"
+       "time"
+
+       "golang.org/x/sys/unix"
+)
+
+// Tests that below functions, structures and constants are consistent
+// on all Unix-like systems.
+func _() {
+       // program scheduling priority functions and constants
+       var (
+               _ func(int, int, int) error   = unix.Setpriority
+               _ func(int, int) (int, error) = unix.Getpriority
+       )
+       const (
+               _ int = unix.PRIO_USER
+               _ int = unix.PRIO_PROCESS
+               _ int = unix.PRIO_PGRP
+       )
+
+       // termios constants
+       const (
+               _ int = unix.TCIFLUSH
+               _ int = unix.TCIOFLUSH
+               _ int = unix.TCOFLUSH
+       )
+
+       // fcntl file locking structure and constants
+       var (
+               _ = unix.Flock_t{
+                       Type:   int16(0),
+                       Whence: int16(0),
+                       Start:  int64(0),
+                       Len:    int64(0),
+                       Pid:    int32(0),
+               }
+       )
+       const (
+               _ = unix.F_GETLK
+               _ = unix.F_SETLK
+               _ = unix.F_SETLKW
+       )
+}
+
+// TestFcntlFlock tests whether the file locking structure matches
+// the calling convention of each kernel.
+func TestFcntlFlock(t *testing.T) {
+       name := filepath.Join(os.TempDir(), "TestFcntlFlock")
+       fd, err := unix.Open(name, unix.O_CREAT|unix.O_RDWR|unix.O_CLOEXEC, 0)
+       if err != nil {
+               t.Fatalf("Open failed: %v", err)
+       }
+       defer unix.Unlink(name)
+       defer unix.Close(fd)
+       flock := unix.Flock_t{
+               Type:  unix.F_RDLCK,
+               Start: 0, Len: 0, Whence: 1,
+       }
+       if err := unix.FcntlFlock(uintptr(fd), unix.F_GETLK, &flock); err != nil {
+               t.Fatalf("FcntlFlock failed: %v", err)
+       }
+}
+
+// TestPassFD tests passing a file descriptor over a Unix socket.
+//
+// This test involved both a parent and child process. The parent
+// process is invoked as a normal test, with "go test", which then
+// runs the child process by running the current test binary with args
+// "-test.run=^TestPassFD$" and an environment variable used to signal
+// that the test should become the child process instead.
+func TestPassFD(t *testing.T) {
+       switch runtime.GOOS {
+       case "dragonfly":
+               // TODO(jsing): Figure out why sendmsg is returning EINVAL.
+               t.Skip("skipping test on dragonfly")
+       case "solaris":
+               // TODO(aram): Figure out why ReadMsgUnix is returning empty message.
+               t.Skip("skipping test on solaris, see issue 7402")
+       }
+       if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" {
+               passFDChild()
+               return
+       }
+
+       tempDir, err := ioutil.TempDir("", "TestPassFD")
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer os.RemoveAll(tempDir)
+
+       fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM, 0)
+       if err != nil {
+               t.Fatalf("Socketpair: %v", err)
+       }
+       defer unix.Close(fds[0])
+       defer unix.Close(fds[1])
+       writeFile := os.NewFile(uintptr(fds[0]), "child-writes")
+       readFile := os.NewFile(uintptr(fds[1]), "parent-reads")
+       defer writeFile.Close()
+       defer readFile.Close()
+
+       cmd := exec.Command(os.Args[0], "-test.run=^TestPassFD$", "--", tempDir)
+       cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1"}
+       if lp := os.Getenv("LD_LIBRARY_PATH"); lp != "" {
+               cmd.Env = append(cmd.Env, "LD_LIBRARY_PATH="+lp)
+       }
+       cmd.ExtraFiles = []*os.File{writeFile}
+
+       out, err := cmd.CombinedOutput()
+       if len(out) > 0 || err != nil {
+               t.Fatalf("child process: %q, %v", out, err)
+       }
+
+       c, err := net.FileConn(readFile)
+       if err != nil {
+               t.Fatalf("FileConn: %v", err)
+       }
+       defer c.Close()
+
+       uc, ok := c.(*net.UnixConn)
+       if !ok {
+               t.Fatalf("unexpected FileConn type; expected UnixConn, got %T", c)
+       }
+
+       buf := make([]byte, 32) // expect 1 byte
+       oob := make([]byte, 32) // expect 24 bytes
+       closeUnix := time.AfterFunc(5*time.Second, func() {
+               t.Logf("timeout reading from unix socket")
+               uc.Close()
+       })
+       _, oobn, _, _, err := uc.ReadMsgUnix(buf, oob)
+       closeUnix.Stop()
+
+       scms, err := unix.ParseSocketControlMessage(oob[:oobn])
+       if err != nil {
+               t.Fatalf("ParseSocketControlMessage: %v", err)
+       }
+       if len(scms) != 1 {
+               t.Fatalf("expected 1 SocketControlMessage; got scms = %#v", scms)
+       }
+       scm := scms[0]
+       gotFds, err := unix.ParseUnixRights(&scm)
+       if err != nil {
+               t.Fatalf("unix.ParseUnixRights: %v", err)
+       }
+       if len(gotFds) != 1 {
+               t.Fatalf("wanted 1 fd; got %#v", gotFds)
+       }
+
+       f := os.NewFile(uintptr(gotFds[0]), "fd-from-child")
+       defer f.Close()
+
+       got, err := ioutil.ReadAll(f)
+       want := "Hello from child process!\n"
+       if string(got) != want {
+               t.Errorf("child process ReadAll: %q, %v; want %q", got, err, want)
+       }
+}
+
+// passFDChild is the child process used by TestPassFD.
+func passFDChild() {
+       defer os.Exit(0)
+
+       // Look for our fd. It should be fd 3, but we work around an fd leak
+       // bug here (http://golang.org/issue/2603) to let it be elsewhere.
+       var uc *net.UnixConn
+       for fd := uintptr(3); fd <= 10; fd++ {
+               f := os.NewFile(fd, "unix-conn")
+               var ok bool
+               netc, _ := net.FileConn(f)
+               uc, ok = netc.(*net.UnixConn)
+               if ok {
+                       break
+               }
+       }
+       if uc == nil {
+               fmt.Println("failed to find unix fd")
+               return
+       }
+
+       // Make a file f to send to our parent process on uc.
+       // We make it in tempDir, which our parent will clean up.
+       flag.Parse()
+       tempDir := flag.Arg(0)
+       f, err := ioutil.TempFile(tempDir, "")
+       if err != nil {
+               fmt.Printf("TempFile: %v", err)
+               return
+       }
+
+       f.Write([]byte("Hello from child process!\n"))
+       f.Seek(0, 0)
+
+       rights := unix.UnixRights(int(f.Fd()))
+       dummyByte := []byte("x")
+       n, oobn, err := uc.WriteMsgUnix(dummyByte, rights, nil)
+       if err != nil {
+               fmt.Printf("WriteMsgUnix: %v", err)
+               return
+       }
+       if n != 1 || oobn != len(rights) {
+               fmt.Printf("WriteMsgUnix = %d, %d; want 1, %d", n, oobn, len(rights))
+               return
+       }
+}
+
+// TestUnixRightsRoundtrip tests that UnixRights, ParseSocketControlMessage,
+// and ParseUnixRights are able to successfully round-trip lists of file descriptors.
+func TestUnixRightsRoundtrip(t *testing.T) {
+       testCases := [...][][]int{
+               {{42}},
+               {{1, 2}},
+               {{3, 4, 5}},
+               {{}},
+               {{1, 2}, {3, 4, 5}, {}, {7}},
+       }
+       for _, testCase := range testCases {
+               b := []byte{}
+               var n int
+               for _, fds := range testCase {
+                       // Last assignment to n wins
+                       n = len(b) + unix.CmsgLen(4*len(fds))
+                       b = append(b, unix.UnixRights(fds...)...)
+               }
+               // Truncate b
+               b = b[:n]
+
+               scms, err := unix.ParseSocketControlMessage(b)
+               if err != nil {
+                       t.Fatalf("ParseSocketControlMessage: %v", err)
+               }
+               if len(scms) != len(testCase) {
+                       t.Fatalf("expected %v SocketControlMessage; got scms = %#v", len(testCase), scms)
+               }
+               for i, scm := range scms {
+                       gotFds, err := unix.ParseUnixRights(&scm)
+                       if err != nil {
+                               t.Fatalf("ParseUnixRights: %v", err)
+                       }
+                       wantFds := testCase[i]
+                       if len(gotFds) != len(wantFds) {
+                               t.Fatalf("expected %v fds, got %#v", len(wantFds), gotFds)
+                       }
+                       for j, fd := range gotFds {
+                               if fd != wantFds[j] {
+                                       t.Fatalf("expected fd %v, got %v", wantFds[j], fd)
+                               }
+                       }
+               }
+       }
+}
+
+func TestRlimit(t *testing.T) {
+       var rlimit, zero unix.Rlimit
+       err := unix.Getrlimit(unix.RLIMIT_NOFILE, &rlimit)
+       if err != nil {
+               t.Fatalf("Getrlimit: save failed: %v", err)
+       }
+       if zero == rlimit {
+               t.Fatalf("Getrlimit: save failed: got zero value %#v", rlimit)
+       }
+       set := rlimit
+       set.Cur = set.Max - 1
+       err = unix.Setrlimit(unix.RLIMIT_NOFILE, &set)
+       if err != nil {
+               t.Fatalf("Setrlimit: set failed: %#v %v", set, err)
+       }
+       var get unix.Rlimit
+       err = unix.Getrlimit(unix.RLIMIT_NOFILE, &get)
+       if err != nil {
+               t.Fatalf("Getrlimit: get failed: %v", err)
+       }
+       set = rlimit
+       set.Cur = set.Max - 1
+       if set != get {
+               // Seems like Darwin requires some privilege to
+               // increase the soft limit of rlimit sandbox, though
+               // Setrlimit never reports an error.
+               switch runtime.GOOS {
+               case "darwin":
+               default:
+                       t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get)
+               }
+       }
+       err = unix.Setrlimit(unix.RLIMIT_NOFILE, &rlimit)
+       if err != nil {
+               t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err)
+       }
+}
+
+func TestSeekFailure(t *testing.T) {
+       _, err := unix.Seek(-1, 0, 0)
+       if err == nil {
+               t.Fatalf("Seek(-1, 0, 0) did not fail")
+       }
+       str := err.Error() // used to crash on Linux
+       t.Logf("Seek: %v", str)
+       if str == "" {
+               t.Fatalf("Seek(-1, 0, 0) return error with empty message")
+       }
+}
+
+func TestDup(t *testing.T) {
+       file, err := ioutil.TempFile("", "TestDup")
+       if err != nil {
+               t.Fatalf("Tempfile failed: %v", err)
+       }
+       defer os.Remove(file.Name())
+       defer file.Close()
+       f := int(file.Fd())
+
+       newFd, err := unix.Dup(f)
+       if err != nil {
+               t.Fatalf("Dup: %v", err)
+       }
+
+       err = unix.Dup2(newFd, newFd+1)
+       if err != nil {
+               t.Fatalf("Dup2: %v", err)
+       }
+
+       b1 := []byte("Test123")
+       b2 := make([]byte, 7)
+       _, err = unix.Write(newFd+1, b1)
+       if err != nil {
+               t.Fatalf("Write to dup2 fd failed: %v", err)
+       }
+       _, err = unix.Seek(f, 0, 0)
+       _, err = unix.Read(f, b2)
+       if err != nil {
+               t.Fatalf("Read back failed: %v", err)
+       }
+       if string(b1) != string(b2) {
+               t.Errorf("Dup: stdout write not in file, expected %v, got %v", string(b1), string(b2))
+       }
+}
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..a350817
--- /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 README.md
+*/
+
+// +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..a818704
--- /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 README.md
+*/
+
+// +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..972e69a
--- /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 README.md
+*/
+
+// +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_netbsd.go b/vendor/golang.org/x/sys/unix/types_netbsd.go
new file mode 100644 (file)
index 0000000..7cfdb9c
--- /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 README.md
+*/
+
+// +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..6c7c227
--- /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 README.md
+*/
+
+// +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..69bf1bc
--- /dev/null
@@ -0,0 +1,262 @@
+// 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 README.md
+*/
+
+// +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 <netdb.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
+       MaxHostNameLen = C.MAXHOSTNAMELEN
+)
+
+// 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_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
new file mode 100644 (file)
index 0000000..8f40598
--- /dev/null
@@ -0,0 +1,1568 @@
+// mkerrors.sh -m64
+// Code generated by the command above; see README.md. 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_NETBIOS                        = 0x6
+       AF_NETGRAPH                       = 0x20
+       AF_OSI                            = 0x7
+       AF_PUP                            = 0x4
+       AF_ROUTE                          = 0x11
+       AF_SIP                            = 0x18
+       AF_SNA                            = 0xb
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       ALTWERASE                         = 0x200
+       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
+       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
+       CRTSCTS                           = 0x30000
+       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_FS                         = -0xa
+       EVFILT_MARKER                     = 0xf
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0xa
+       EVFILT_TIMER                      = -0x7
+       EVFILT_USER                       = -0x9
+       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_FLAG1                          = 0x2000
+       EV_NODATA                         = 0x1000
+       EV_ONESHOT                        = 0x10
+       EV_RECEIPT                        = 0x40
+       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_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_MINHLIM                      = 0x28
+       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_X                           = 0x31
+       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_ANONYMOUS                     = 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_CMSG_CLOEXEC                  = 0x1000
+       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_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_SYNC                          = 0x800
+       MSG_TRUNC                         = 0x10
+       MSG_UNUSED09                      = 0x200
+       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
+       NOKERNINFO                        = 0x2000000
+       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_OOB                          = 0x2
+       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
+       OXTABS                            = 0x4
+       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_FMASK                           = 0xfc0000
+       O_FNONBLOCKING                    = 0x80000
+       O_FOFFSET                         = 0x200000
+       O_FSYNC                           = 0x80
+       O_FSYNCWRITE                      = 0x400000
+       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_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_BROADCAST                      = 0x20
+       SO_CPUHINT                        = 0x1030
+       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
+       TCIOFF                            = 0x3
+       TCIOFLUSH                         = 0x3
+       TCION                             = 0x4
+       TCOFLUSH                          = 0x2
+       TCOOFF                            = 0x1
+       TCOON                             = 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
+       VM_BCACHE_SIZE_MAX                = 0x0
+       VM_SWZONE_SIZE_MAX                = 0x4000000000
+       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..341bdfc
--- /dev/null
@@ -0,0 +1,2087 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include -m32
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build 386,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include -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_IB                            = 0x1b
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x80041270
+       BLKBSZSET                        = 0x40041271
+       BLKFLSBUF                        = 0x1261
+       BLKFRAGET                        = 0x1265
+       BLKFRASET                        = 0x1264
+       BLKGETSIZE                       = 0x1260
+       BLKGETSIZE64                     = 0x80041272
+       BLKPBSZGET                       = 0x127b
+       BLKRAGET                         = 0x1263
+       BLKRASET                         = 0x1262
+       BLKROGET                         = 0x125e
+       BLKROSET                         = 0x125d
+       BLKRRPART                        = 0x125f
+       BLKSECTGET                       = 0x1267
+       BLKSECTSET                       = 0x1266
+       BLKSSZGET                        = 0x1268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x1000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       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_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                          = 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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       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_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                      = 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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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
+       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_FREE                        = 0x8
+       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_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
+       MCL_ONFAULT                      = 0x4
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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_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               = 0xffffffff
+       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_GETFPXREGS                = 0x12
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGSET                 = 0x4204
+       PTRACE_GETSIGINFO                = 0x4202
+       PTRACE_GETSIGMASK                = 0x420a
+       PTRACE_GET_THREAD_AREA           = 0x19
+       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_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SECCOMP_GET_FILTER        = 0x420c
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETFPXREGS                = 0x13
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETSIGMASK                = 0x420b
+       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_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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       SO_DEBUG                         = 0x1
+       SO_DETACH_BPF                    = 0x1b
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_GET_FILTER                    = 0x1a
+       SO_INCOMING_CPU                  = 0x31
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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                  = 0x400854d5
+       TUNDETACHFILTER                  = 0x400854d6
+       TUNGETFEATURES                   = 0x800454cf
+       TUNGETFILTER                     = 0x800854db
+       TUNGETIFF                        = 0x800454d2
+       TUNGETSNDBUF                     = 0x800454d3
+       TUNGETVNETBE                     = 0x800454df
+       TUNGETVNETHDRSZ                  = 0x800454d7
+       TUNGETVNETLE                     = 0x800454dd
+       TUNSETDEBUG                      = 0x400454c9
+       TUNSETGROUP                      = 0x400454ce
+       TUNSETIFF                        = 0x400454ca
+       TUNSETIFINDEX                    = 0x400454da
+       TUNSETLINK                       = 0x400454cd
+       TUNSETNOCSUM                     = 0x400454c8
+       TUNSETOFFLOAD                    = 0x400454d0
+       TUNSETOWNER                      = 0x400454cc
+       TUNSETPERSIST                    = 0x400454cb
+       TUNSETQUEUE                      = 0x400454d9
+       TUNSETSNDBUF                     = 0x400454d4
+       TUNSETTXFILTER                   = 0x400454d1
+       TUNSETVNETBE                     = 0x400454de
+       TUNSETVNETHDRSZ                  = 0x400454d8
+       TUNSETVNETLE                     = 0x400454dc
+       VDISCARD                         = 0xd
+       VEOF                             = 0x4
+       VEOL                             = 0xb
+       VEOL2                            = 0x10
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x6
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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 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_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
new file mode 100644 (file)
index 0000000..f636a39
--- /dev/null
@@ -0,0 +1,2088 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include -m64
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build amd64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include -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_IB                            = 0x1b
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x80081270
+       BLKBSZSET                        = 0x40081271
+       BLKFLSBUF                        = 0x1261
+       BLKFRAGET                        = 0x1265
+       BLKFRASET                        = 0x1264
+       BLKGETSIZE                       = 0x1260
+       BLKGETSIZE64                     = 0x80081272
+       BLKPBSZGET                       = 0x127b
+       BLKRAGET                         = 0x1263
+       BLKRASET                         = 0x1262
+       BLKROGET                         = 0x125e
+       BLKROSET                         = 0x125d
+       BLKRRPART                        = 0x125f
+       BLKSECTGET                       = 0x1267
+       BLKSECTSET                       = 0x1266
+       BLKSSZGET                        = 0x1268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x1000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       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_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                         = 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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       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_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                      = 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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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
+       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_FREE                        = 0x8
+       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_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
+       MCL_ONFAULT                      = 0x4
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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_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_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_GETSIGMASK                = 0x420a
+       PTRACE_GET_THREAD_AREA           = 0x19
+       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_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SECCOMP_GET_FILTER        = 0x420c
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETFPXREGS                = 0x13
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETSIGMASK                = 0x420b
+       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_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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       SO_DEBUG                         = 0x1
+       SO_DETACH_BPF                    = 0x1b
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_GET_FILTER                    = 0x1a
+       SO_INCOMING_CPU                  = 0x31
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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
+       TUNGETVNETBE                     = 0x800454df
+       TUNGETVNETHDRSZ                  = 0x800454d7
+       TUNGETVNETLE                     = 0x800454dd
+       TUNSETDEBUG                      = 0x400454c9
+       TUNSETGROUP                      = 0x400454ce
+       TUNSETIFF                        = 0x400454ca
+       TUNSETIFINDEX                    = 0x400454da
+       TUNSETLINK                       = 0x400454cd
+       TUNSETNOCSUM                     = 0x400454c8
+       TUNSETOFFLOAD                    = 0x400454d0
+       TUNSETOWNER                      = 0x400454cc
+       TUNSETPERSIST                    = 0x400454cb
+       TUNSETQUEUE                      = 0x400454d9
+       TUNSETSNDBUF                     = 0x400454d4
+       TUNSETTXFILTER                   = 0x400454d1
+       TUNSETVNETBE                     = 0x400454de
+       TUNSETVNETHDRSZ                  = 0x400454d8
+       TUNSETVNETLE                     = 0x400454dc
+       VDISCARD                         = 0xd
+       VEOF                             = 0x4
+       VEOL                             = 0xb
+       VEOL2                            = 0x10
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x6
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
new file mode 100644 (file)
index 0000000..986a947
--- /dev/null
@@ -0,0 +1,2092 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build arm,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _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_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x80041270
+       BLKBSZSET                        = 0x40041271
+       BLKFLSBUF                        = 0x1261
+       BLKFRAGET                        = 0x1265
+       BLKFRASET                        = 0x1264
+       BLKGETSIZE                       = 0x1260
+       BLKGETSIZE64                     = 0x80041272
+       BLKPBSZGET                       = 0x127b
+       BLKRAGET                         = 0x1263
+       BLKRASET                         = 0x1262
+       BLKROGET                         = 0x125e
+       BLKROSET                         = 0x125d
+       BLKRRPART                        = 0x125f
+       BLKSECTGET                       = 0x1267
+       BLKSECTSET                       = 0x1266
+       BLKSSZGET                        = 0x1268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x1000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       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_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                          = 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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       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_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                      = 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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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
+       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_FREE                        = 0x8
+       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
+       MCL_ONFAULT                      = 0x4
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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                      = 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                          = 0x101000
+       O_SYNC                           = 0x101000
+       O_TMPFILE                        = 0x404000
+       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               = 0xffffffff
+       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_GETCRUNCHREGS             = 0x19
+       PTRACE_GETEVENTMSG               = 0x4201
+       PTRACE_GETFPREGS                 = 0xe
+       PTRACE_GETHBPREGS                = 0x1d
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGSET                 = 0x4204
+       PTRACE_GETSIGINFO                = 0x4202
+       PTRACE_GETSIGMASK                = 0x420a
+       PTRACE_GETVFPREGS                = 0x1b
+       PTRACE_GETWMMXREGS               = 0x12
+       PTRACE_GET_THREAD_AREA           = 0x16
+       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_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SECCOMP_GET_FILTER        = 0x420c
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SETCRUNCHREGS             = 0x1a
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETHBPREGS                = 0x1e
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETSIGMASK                = 0x420b
+       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_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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       SO_DEBUG                         = 0x1
+       SO_DETACH_BPF                    = 0x1b
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_GET_FILTER                    = 0x1a
+       SO_INCOMING_CPU                  = 0x31
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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                  = 0x400854d5
+       TUNDETACHFILTER                  = 0x400854d6
+       TUNGETFEATURES                   = 0x800454cf
+       TUNGETFILTER                     = 0x800854db
+       TUNGETIFF                        = 0x800454d2
+       TUNGETSNDBUF                     = 0x800454d3
+       TUNGETVNETBE                     = 0x800454df
+       TUNGETVNETHDRSZ                  = 0x800454d7
+       TUNGETVNETLE                     = 0x800454dd
+       TUNSETDEBUG                      = 0x400454c9
+       TUNSETGROUP                      = 0x400454ce
+       TUNSETIFF                        = 0x400454ca
+       TUNSETIFINDEX                    = 0x400454da
+       TUNSETLINK                       = 0x400454cd
+       TUNSETNOCSUM                     = 0x400454c8
+       TUNSETOFFLOAD                    = 0x400454d0
+       TUNSETOWNER                      = 0x400454cc
+       TUNSETPERSIST                    = 0x400454cb
+       TUNSETQUEUE                      = 0x400454d9
+       TUNSETSNDBUF                     = 0x400454d4
+       TUNSETTXFILTER                   = 0x400454d1
+       TUNSETVNETBE                     = 0x400454de
+       TUNSETVNETHDRSZ                  = 0x400454d8
+       TUNSETVNETLE                     = 0x400454dc
+       VDISCARD                         = 0xd
+       VEOF                             = 0x4
+       VEOL                             = 0xb
+       VEOL2                            = 0x10
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x6
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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 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_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
new file mode 100644 (file)
index 0000000..b72a645
--- /dev/null
@@ -0,0 +1,2077 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build arm64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _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_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x80081270
+       BLKBSZSET                        = 0x40081271
+       BLKFLSBUF                        = 0x1261
+       BLKFRAGET                        = 0x1265
+       BLKFRASET                        = 0x1264
+       BLKGETSIZE                       = 0x1260
+       BLKGETSIZE64                     = 0x80081272
+       BLKPBSZGET                       = 0x127b
+       BLKRAGET                         = 0x1263
+       BLKRASET                         = 0x1262
+       BLKROGET                         = 0x125e
+       BLKROSET                         = 0x125d
+       BLKRRPART                        = 0x125f
+       BLKSECTGET                       = 0x1267
+       BLKSECTSET                       = 0x1266
+       BLKSSZGET                        = 0x1268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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
+       ESR_MAGIC                        = 0x45535201
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x1000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       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_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                         = 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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       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_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                      = 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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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
+       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_FREE                        = 0x8
+       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
+       MCL_ONFAULT                      = 0x4
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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                        = 0x404000
+       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_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                    = 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_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SECCOMP_GET_FILTER        = 0x420c
+       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_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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       SO_DEBUG                         = 0x1
+       SO_DETACH_BPF                    = 0x1b
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_GET_FILTER                    = 0x1a
+       SO_INCOMING_CPU                  = 0x31
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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
+       TUNGETVNETBE                     = 0x800454df
+       TUNGETVNETHDRSZ                  = 0x800454d7
+       TUNGETVNETLE                     = 0x800454dd
+       TUNSETDEBUG                      = 0x400454c9
+       TUNSETGROUP                      = 0x400454ce
+       TUNSETIFF                        = 0x400454ca
+       TUNSETIFINDEX                    = 0x400454da
+       TUNSETLINK                       = 0x400454cd
+       TUNSETNOCSUM                     = 0x400454c8
+       TUNSETOFFLOAD                    = 0x400454d0
+       TUNSETOWNER                      = 0x400454cc
+       TUNSETPERSIST                    = 0x400454cb
+       TUNSETQUEUE                      = 0x400454d9
+       TUNSETSNDBUF                     = 0x400454d4
+       TUNSETTXFILTER                   = 0x400454d1
+       TUNSETVNETBE                     = 0x400454de
+       TUNSETVNETHDRSZ                  = 0x400454d8
+       TUNSETVNETLE                     = 0x400454dc
+       VDISCARD                         = 0xd
+       VEOF                             = 0x4
+       VEOL                             = 0xb
+       VEOL2                            = 0x10
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x6
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
new file mode 100644 (file)
index 0000000..198a305
--- /dev/null
@@ -0,0 +1,2096 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mips,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _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_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x40041270
+       BLKBSZSET                        = 0x80041271
+       BLKFLSBUF                        = 0x20001261
+       BLKFRAGET                        = 0x20001265
+       BLKFRASET                        = 0x20001264
+       BLKGETSIZE                       = 0x20001260
+       BLKGETSIZE64                     = 0x40041272
+       BLKPBSZGET                       = 0x2000127b
+       BLKRAGET                         = 0x20001263
+       BLKRASET                         = 0x20001262
+       BLKROGET                         = 0x2000125e
+       BLKROSET                         = 0x2000125d
+       BLKRRPART                        = 0x2000125f
+       BLKSECTGET                       = 0x20001267
+       BLKSECTSET                       = 0x20001266
+       BLKSSZGET                        = 0x20001268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x2000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0x21
+       F_GETLK64                        = 0x21
+       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                          = 0x22
+       F_SETLK64                        = 0x22
+       F_SETLKW                         = 0x23
+       F_SETLKW64                       = 0x23
+       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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       HUPCL                            = 0x400
+       IBSHIFT                          = 0x10
+       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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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
+       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_FREE                        = 0x8
+       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
+       MCL_ONFAULT                      = 0x4
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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                         = 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                      = 0x2000
+       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               = 0xffffffff
+       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_SECCOMP_GET_FILTER        = 0x420c
+       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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0xffff
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1009
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x20
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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                           = 0x5407
+       TCGETA                           = 0x5401
+       TCGETS                           = 0x540d
+       TCGETS2                          = 0x4030542a
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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
+       TCSBRKP                          = 0x5486
+       TCSETA                           = 0x5402
+       TCSETAF                          = 0x5404
+       TCSETAW                          = 0x5403
+       TCSETS                           = 0x540e
+       TCSETS2                          = 0x8030542b
+       TCSETSF                          = 0x5410
+       TCSETSF2                         = 0x8030542d
+       TCSETSW                          = 0x540f
+       TCSETSW2                         = 0x8030542c
+       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                  = 0x800854d5
+       TUNDETACHFILTER                  = 0x800854d6
+       TUNGETFEATURES                   = 0x400454cf
+       TUNGETFILTER                     = 0x400854db
+       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
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x4
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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                         = 0x20
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+       XCASE                            = 0x4
+       XTABS                            = 0x1800
+)
+
+// 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_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
new file mode 100644 (file)
index 0000000..37d66f3
--- /dev/null
@@ -0,0 +1,2096 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mips64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _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_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x40081270
+       BLKBSZSET                        = 0x80081271
+       BLKFLSBUF                        = 0x20001261
+       BLKFRAGET                        = 0x20001265
+       BLKFRASET                        = 0x20001264
+       BLKGETSIZE                       = 0x20001260
+       BLKGETSIZE64                     = 0x40081272
+       BLKPBSZGET                       = 0x2000127b
+       BLKRAGET                         = 0x20001263
+       BLKRASET                         = 0x20001262
+       BLKROGET                         = 0x2000125e
+       BLKROSET                         = 0x2000125d
+       BLKRRPART                        = 0x2000125f
+       BLKSECTGET                       = 0x20001267
+       BLKSECTSET                       = 0x20001266
+       BLKSSZGET                        = 0x20001268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x2000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       HUPCL                            = 0x400
+       IBSHIFT                          = 0x10
+       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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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
+       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_FREE                        = 0x8
+       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
+       MCL_ONFAULT                      = 0x4
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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                         = 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_SECCOMP_GET_FILTER        = 0x420c
+       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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0xffff
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1009
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x20
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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                           = 0x5407
+       TCGETA                           = 0x5401
+       TCGETS                           = 0x540d
+       TCGETS2                          = 0x4030542a
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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
+       TCSBRKP                          = 0x5486
+       TCSETA                           = 0x5402
+       TCSETAF                          = 0x5404
+       TCSETAW                          = 0x5403
+       TCSETS                           = 0x540e
+       TCSETS2                          = 0x8030542b
+       TCSETSF                          = 0x5410
+       TCSETSF2                         = 0x8030542d
+       TCSETSW                          = 0x540f
+       TCSETSW2                         = 0x8030542c
+       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
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x4
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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
+       XCASE                            = 0x4
+       XTABS                            = 0x1800
+)
+
+// 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..0f33f0f
--- /dev/null
@@ -0,0 +1,2096 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mips64le,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _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_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x40081270
+       BLKBSZSET                        = 0x80081271
+       BLKFLSBUF                        = 0x20001261
+       BLKFRAGET                        = 0x20001265
+       BLKFRASET                        = 0x20001264
+       BLKGETSIZE                       = 0x20001260
+       BLKGETSIZE64                     = 0x40081272
+       BLKPBSZGET                       = 0x2000127b
+       BLKRAGET                         = 0x20001263
+       BLKRASET                         = 0x20001262
+       BLKROGET                         = 0x2000125e
+       BLKROSET                         = 0x2000125d
+       BLKRRPART                        = 0x2000125f
+       BLKSECTGET                       = 0x20001267
+       BLKSECTSET                       = 0x20001266
+       BLKSSZGET                        = 0x20001268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x2000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       HUPCL                            = 0x400
+       IBSHIFT                          = 0x10
+       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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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
+       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_FREE                        = 0x8
+       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
+       MCL_ONFAULT                      = 0x4
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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                         = 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_SECCOMP_GET_FILTER        = 0x420c
+       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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0xffff
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1009
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x20
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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                           = 0x5407
+       TCGETA                           = 0x5401
+       TCGETS                           = 0x540d
+       TCGETS2                          = 0x4030542a
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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
+       TCSBRKP                          = 0x5486
+       TCSETA                           = 0x5402
+       TCSETAF                          = 0x5404
+       TCSETAW                          = 0x5403
+       TCSETS                           = 0x540e
+       TCSETS2                          = 0x8030542b
+       TCSETSF                          = 0x5410
+       TCSETSF2                         = 0x8030542d
+       TCSETSW                          = 0x540f
+       TCSETSW2                         = 0x8030542c
+       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
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x4
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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
+       XCASE                            = 0x4
+       XTABS                            = 0x1800
+)
+
+// 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_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
new file mode 100644 (file)
index 0000000..3fa39fa
--- /dev/null
@@ -0,0 +1,2096 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mipsle,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _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_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x40041270
+       BLKBSZSET                        = 0x80041271
+       BLKFLSBUF                        = 0x20001261
+       BLKFRAGET                        = 0x20001265
+       BLKFRASET                        = 0x20001264
+       BLKGETSIZE                       = 0x20001260
+       BLKGETSIZE64                     = 0x40041272
+       BLKPBSZGET                       = 0x2000127b
+       BLKRAGET                         = 0x20001263
+       BLKRASET                         = 0x20001262
+       BLKROGET                         = 0x2000125e
+       BLKROSET                         = 0x2000125d
+       BLKRRPART                        = 0x2000125f
+       BLKSECTGET                       = 0x20001267
+       BLKSECTSET                       = 0x20001266
+       BLKSSZGET                        = 0x20001268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x2000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0x21
+       F_GETLK64                        = 0x21
+       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                          = 0x22
+       F_SETLK64                        = 0x22
+       F_SETLKW                         = 0x23
+       F_SETLKW64                       = 0x23
+       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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       HUPCL                            = 0x400
+       IBSHIFT                          = 0x10
+       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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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
+       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_FREE                        = 0x8
+       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
+       MCL_ONFAULT                      = 0x4
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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                         = 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                      = 0x2000
+       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               = 0xffffffff
+       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_SECCOMP_GET_FILTER        = 0x420c
+       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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0xffff
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1009
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x20
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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                           = 0x5407
+       TCGETA                           = 0x5401
+       TCGETS                           = 0x540d
+       TCGETS2                          = 0x4030542a
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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
+       TCSBRKP                          = 0x5486
+       TCSETA                           = 0x5402
+       TCSETAF                          = 0x5404
+       TCSETAW                          = 0x5403
+       TCSETS                           = 0x540e
+       TCSETS2                          = 0x8030542b
+       TCSETSF                          = 0x5410
+       TCSETSF2                         = 0x8030542d
+       TCSETSW                          = 0x540f
+       TCSETSW2                         = 0x8030542c
+       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                  = 0x800854d5
+       TUNDETACHFILTER                  = 0x800854d6
+       TUNGETFEATURES                   = 0x400454cf
+       TUNGETFILTER                     = 0x400854db
+       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
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x4
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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                         = 0x20
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+       XCASE                            = 0x4
+       XTABS                            = 0x1800
+)
+
+// 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..4585ef7
--- /dev/null
@@ -0,0 +1,2150 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build ppc64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _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_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x40081270
+       BLKBSZSET                        = 0x80081271
+       BLKFLSBUF                        = 0x20001261
+       BLKFRAGET                        = 0x20001265
+       BLKFRASET                        = 0x20001264
+       BLKGETSIZE                       = 0x20001260
+       BLKGETSIZE64                     = 0x40081272
+       BLKPBSZGET                       = 0x2000127b
+       BLKRAGET                         = 0x20001263
+       BLKRASET                         = 0x20001262
+       BLKROGET                         = 0x2000125e
+       BLKROSET                         = 0x2000125d
+       BLKRRPART                        = 0x2000125f
+       BLKSECTGET                       = 0x20001267
+       BLKSECTSET                       = 0x20001266
+       BLKSSZGET                        = 0x20001268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x8000
+       BSDLY                            = 0x8000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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                          = 0x10000000
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x4000
+       FFDLY                            = 0x4000
+       FLUSHO                           = 0x800000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       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_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                      = 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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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                             = 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_FREE                        = 0x8
+       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
+       MCL_ONFAULT                      = 0x8000
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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                        = 0x404000
+       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                           = 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_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_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                    = 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_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SECCOMP_GET_FILTER        = 0x420c
+       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_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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       SO_DEBUG                         = 0x1
+       SO_DETACH_BPF                    = 0x1b
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_GET_FILTER                    = 0x1a
+       SO_INCOMING_CPU                  = 0x31
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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
+       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                         = 0x10
+       VEOF                             = 0x4
+       VEOL                             = 0x6
+       VEOL2                            = 0x8
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x5
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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..b2a9128
--- /dev/null
@@ -0,0 +1,2150 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build ppc64le,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _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_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x40081270
+       BLKBSZSET                        = 0x80081271
+       BLKFLSBUF                        = 0x20001261
+       BLKFRAGET                        = 0x20001265
+       BLKFRASET                        = 0x20001264
+       BLKGETSIZE                       = 0x20001260
+       BLKGETSIZE64                     = 0x40081272
+       BLKPBSZGET                       = 0x2000127b
+       BLKRAGET                         = 0x20001263
+       BLKRASET                         = 0x20001262
+       BLKROGET                         = 0x2000125e
+       BLKROSET                         = 0x2000125d
+       BLKRRPART                        = 0x2000125f
+       BLKSECTGET                       = 0x20001267
+       BLKSECTSET                       = 0x20001266
+       BLKSSZGET                        = 0x20001268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x8000
+       BSDLY                            = 0x8000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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                          = 0x10000000
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x4000
+       FFDLY                            = 0x4000
+       FLUSHO                           = 0x800000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       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_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                      = 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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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                             = 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_FREE                        = 0x8
+       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
+       MCL_ONFAULT                      = 0x8000
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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                        = 0x404000
+       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                           = 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_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_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                    = 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_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SECCOMP_GET_FILTER        = 0x420c
+       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_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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       SO_DEBUG                         = 0x1
+       SO_DETACH_BPF                    = 0x1b
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_GET_FILTER                    = 0x1a
+       SO_INCOMING_CPU                  = 0x31
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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
+       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                         = 0x10
+       VEOF                             = 0x4
+       VEOL                             = 0x6
+       VEOL2                            = 0x8
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x5
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
new file mode 100644 (file)
index 0000000..f8b0eb7
--- /dev/null
@@ -0,0 +1,2149 @@
+// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build s390x,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _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_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2b
+       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_QIPCRTR                       = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       BLKBSZGET                        = 0x80081270
+       BLKBSZSET                        = 0x40081271
+       BLKFLSBUF                        = 0x1261
+       BLKFRAGET                        = 0x1265
+       BLKFRASET                        = 0x1264
+       BLKGETSIZE                       = 0x1260
+       BLKGETSIZE64                     = 0x80081272
+       BLKPBSZGET                       = 0x127b
+       BLKRAGET                         = 0x1263
+       BLKRASET                         = 0x1262
+       BLKROGET                         = 0x125e
+       BLKROSET                         = 0x125d
+       BLKRRPART                        = 0x125f
+       BLKSECTGET                       = 0x1267
+       BLKSECTSET                       = 0x1266
+       BLKSSZGET                        = 0x1268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RAW_FILTER_MAX               = 0x200
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_NCSI                       = 0x88f8
+       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
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_UNSHARE_RANGE          = 0x40
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x1000
+       FS_ENCRYPTION_MODE_AES_256_CBC   = 0x3
+       FS_ENCRYPTION_MODE_AES_256_CTS   = 0x4
+       FS_ENCRYPTION_MODE_AES_256_GCM   = 0x2
+       FS_ENCRYPTION_MODE_AES_256_XTS   = 0x1
+       FS_ENCRYPTION_MODE_INVALID       = 0x0
+       FS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615
+       FS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614
+       FS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613
+       FS_KEY_DESCRIPTOR_SIZE           = 0x8
+       FS_KEY_DESC_PREFIX               = "fscrypt:"
+       FS_KEY_DESC_PREFIX_SIZE          = 0x8
+       FS_MAX_KEY_SIZE                  = 0x40
+       FS_POLICY_FLAGS_PAD_16           = 0x2
+       FS_POLICY_FLAGS_PAD_32           = 0x3
+       FS_POLICY_FLAGS_PAD_4            = 0x0
+       FS_POLICY_FLAGS_PAD_8            = 0x1
+       FS_POLICY_FLAGS_PAD_MASK         = 0x3
+       FS_POLICY_FLAGS_VALID            = 0x3
+       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_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                         = 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
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       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_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                      = 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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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
+       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_FREE                        = 0x8
+       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
+       MCL_ONFAULT                      = 0x4
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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_BORN                          = 0x20000000
+       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_NOREMOTELOCK                  = 0x8000000
+       MS_NOSEC                         = 0x10000000
+       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
+       MS_VERBOSE                       = 0x8000
+       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
+       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_FILTERED              = 0x20
+       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_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_DISABLE_TE                = 0x5010
+       PTRACE_ENABLE_TE                 = 0x5009
+       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_GET_LAST_BREAK            = 0x5006
+       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_AREA             = 0x5003
+       PTRACE_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKTEXT_AREA             = 0x5002
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_PEEKUSR_AREA              = 0x5000
+       PTRACE_PEEK_SYSTEM_CALL          = 0x5007
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKEDATA_AREA             = 0x5005
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKETEXT_AREA             = 0x5004
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_POKEUSR_AREA              = 0x5001
+       PTRACE_POKE_SYSTEM_CALL          = 0x5008
+       PTRACE_PROT                      = 0x15
+       PTRACE_SECCOMP_GET_FILTER        = 0x420c
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETSIGMASK                = 0x420b
+       PTRACE_SINGLEBLOCK               = 0xc
+       PTRACE_SINGLESTEP                = 0x9
+       PTRACE_SYSCALL                   = 0x18
+       PTRACE_TE_ABORT_RAND             = 0x5011
+       PTRACE_TRACEME                   = 0x0
+       PT_ACR0                          = 0x90
+       PT_ACR1                          = 0x94
+       PT_ACR10                         = 0xb8
+       PT_ACR11                         = 0xbc
+       PT_ACR12                         = 0xc0
+       PT_ACR13                         = 0xc4
+       PT_ACR14                         = 0xc8
+       PT_ACR15                         = 0xcc
+       PT_ACR2                          = 0x98
+       PT_ACR3                          = 0x9c
+       PT_ACR4                          = 0xa0
+       PT_ACR5                          = 0xa4
+       PT_ACR6                          = 0xa8
+       PT_ACR7                          = 0xac
+       PT_ACR8                          = 0xb0
+       PT_ACR9                          = 0xb4
+       PT_CR_10                         = 0x168
+       PT_CR_11                         = 0x170
+       PT_CR_9                          = 0x160
+       PT_ENDREGS                       = 0x1af
+       PT_FPC                           = 0xd8
+       PT_FPR0                          = 0xe0
+       PT_FPR1                          = 0xe8
+       PT_FPR10                         = 0x130
+       PT_FPR11                         = 0x138
+       PT_FPR12                         = 0x140
+       PT_FPR13                         = 0x148
+       PT_FPR14                         = 0x150
+       PT_FPR15                         = 0x158
+       PT_FPR2                          = 0xf0
+       PT_FPR3                          = 0xf8
+       PT_FPR4                          = 0x100
+       PT_FPR5                          = 0x108
+       PT_FPR6                          = 0x110
+       PT_FPR7                          = 0x118
+       PT_FPR8                          = 0x120
+       PT_FPR9                          = 0x128
+       PT_GPR0                          = 0x10
+       PT_GPR1                          = 0x18
+       PT_GPR10                         = 0x60
+       PT_GPR11                         = 0x68
+       PT_GPR12                         = 0x70
+       PT_GPR13                         = 0x78
+       PT_GPR14                         = 0x80
+       PT_GPR15                         = 0x88
+       PT_GPR2                          = 0x20
+       PT_GPR3                          = 0x28
+       PT_GPR4                          = 0x30
+       PT_GPR5                          = 0x38
+       PT_GPR6                          = 0x40
+       PT_GPR7                          = 0x48
+       PT_GPR8                          = 0x50
+       PT_GPR9                          = 0x58
+       PT_IEEE_IP                       = 0x1a8
+       PT_LASTOFF                       = 0x1a8
+       PT_ORIGGPR2                      = 0xd0
+       PT_PSWADDR                       = 0x8
+       PT_PSWMASK                       = 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_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                          = 0x19
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x19
+       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_TIMESTAMPING_OPT_STATS       = 0x36
+       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_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_CAN_BASE                     = 0x64
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x33
+       SO_ATTACH_REUSEPORT_EBPF         = 0x34
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_CNX_ADVICE                    = 0x35
+       SO_DEBUG                         = 0x1
+       SO_DETACH_BPF                    = 0x1b
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_GET_FILTER                    = 0x1a
+       SO_INCOMING_CPU                  = 0x31
+       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_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x29
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_REPAIR_WINDOW                = 0x1d
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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
+       TUNGETVNETBE                     = 0x800454df
+       TUNGETVNETHDRSZ                  = 0x800454d7
+       TUNGETVNETLE                     = 0x800454dd
+       TUNSETDEBUG                      = 0x400454c9
+       TUNSETGROUP                      = 0x400454ce
+       TUNSETIFF                        = 0x400454ca
+       TUNSETIFINDEX                    = 0x400454da
+       TUNSETLINK                       = 0x400454cd
+       TUNSETNOCSUM                     = 0x400454c8
+       TUNSETOFFLOAD                    = 0x400454d0
+       TUNSETOWNER                      = 0x400454cc
+       TUNSETPERSIST                    = 0x400454cb
+       TUNSETQUEUE                      = 0x400454d9
+       TUNSETSNDBUF                     = 0x400454d4
+       TUNSETTXFILTER                   = 0x400454d1
+       TUNSETVNETBE                     = 0x400454de
+       TUNSETVNETHDRSZ                  = 0x400454d8
+       TUNSETVNETLE                     = 0x400454dc
+       VDISCARD                         = 0xd
+       VEOF                             = 0x4
+       VEOL                             = 0xb
+       VEOL2                            = 0x10
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x6
+       VM_SOCKETS_INVALID_VERSION       = 0xffffffff
+       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_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
new file mode 100644 (file)
index 0000000..95de199
--- /dev/null
@@ -0,0 +1,2142 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build sparc64,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_IB                            = 0x1b
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KCM                           = 0x29
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x2a
+       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
+       ALG_OP_DECRYPT                   = 0x0
+       ALG_OP_ENCRYPT                   = 0x1
+       ALG_SET_AEAD_ASSOCLEN            = 0x4
+       ALG_SET_AEAD_AUTHSIZE            = 0x5
+       ALG_SET_IV                       = 0x2
+       ALG_SET_KEY                      = 0x1
+       ALG_SET_OP                       = 0x3
+       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
+       ASI_LEON_DFLUSH                  = 0x11
+       ASI_LEON_IFLUSH                  = 0x10
+       ASI_LEON_MMUFLUSH                = 0x18
+       B0                               = 0x0
+       B1000000                         = 0x100c
+       B110                             = 0x3
+       B115200                          = 0x1002
+       B1152000                         = 0x100d
+       B1200                            = 0x9
+       B134                             = 0x4
+       B150                             = 0x5
+       B1500000                         = 0x100e
+       B153600                          = 0x1006
+       B1800                            = 0xa
+       B19200                           = 0xe
+       B200                             = 0x6
+       B2000000                         = 0x100f
+       B230400                          = 0x1003
+       B2400                            = 0xb
+       B300                             = 0x7
+       B307200                          = 0x1007
+       B38400                           = 0xf
+       B460800                          = 0x1004
+       B4800                            = 0xc
+       B50                              = 0x1
+       B500000                          = 0x100a
+       B57600                           = 0x1001
+       B576000                          = 0x100b
+       B600                             = 0x8
+       B614400                          = 0x1008
+       B75                              = 0x2
+       B76800                           = 0x1005
+       B921600                          = 0x1009
+       B9600                            = 0xd
+       BLKBSZGET                        = 0x80081270
+       BLKBSZSET                        = 0x40081271
+       BLKFLSBUF                        = 0x1261
+       BLKFRAGET                        = 0x1265
+       BLKFRASET                        = 0x1264
+       BLKGETSIZE                       = 0x1260
+       BLKGETSIZE64                     = 0x80081272
+       BLKRAGET                         = 0x1263
+       BLKRASET                         = 0x1262
+       BLKROGET                         = 0x125e
+       BLKROSET                         = 0x125d
+       BLKRRPART                        = 0x125f
+       BLKSECTGET                       = 0x1267
+       BLKSECTSET                       = 0x1266
+       BLKSSZGET                        = 0x1268
+       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_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
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CAN_BCM                          = 0x2
+       CAN_EFF_FLAG                     = 0x80000000
+       CAN_EFF_ID_BITS                  = 0x1d
+       CAN_EFF_MASK                     = 0x1fffffff
+       CAN_ERR_FLAG                     = 0x20000000
+       CAN_ERR_MASK                     = 0x1fffffff
+       CAN_INV_FILTER                   = 0x20000000
+       CAN_ISOTP                        = 0x6
+       CAN_MAX_DLC                      = 0x8
+       CAN_MAX_DLEN                     = 0x8
+       CAN_MCNET                        = 0x5
+       CAN_MTU                          = 0x10
+       CAN_NPROTO                       = 0x7
+       CAN_RAW                          = 0x1
+       CAN_RTR_FLAG                     = 0x40000000
+       CAN_SFF_ID_BITS                  = 0xb
+       CAN_SFF_MASK                     = 0x7ff
+       CAN_TP16                         = 0x3
+       CAN_TP20                         = 0x4
+       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_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_NEWCGROUP                  = 0x2000000
+       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
+       EMT_TAGOVF                       = 0x1
+       ENCODING_DEFAULT                 = 0x0
+       ENCODING_FM_MARK                 = 0x3
+       ENCODING_FM_SPACE                = 0x4
+       ENCODING_MANCHESTER              = 0x5
+       ENCODING_NRZ                     = 0x1
+       ENCODING_NRZI                    = 0x2
+       EPOLLERR                         = 0x8
+       EPOLLET                          = 0x80000000
+       EPOLLEXCLUSIVE                   = 0x10000000
+       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                    = 0x400000
+       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_HSR                        = 0x892f
+       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_MACSEC                     = 0x88e5
+       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
+       FALLOC_FL_COLLAPSE_RANGE         = 0x8
+       FALLOC_FL_INSERT_RANGE           = 0x20
+       FALLOC_FL_KEEP_SIZE              = 0x1
+       FALLOC_FL_NO_HIDE_STALE          = 0x4
+       FALLOC_FL_PUNCH_HOLE             = 0x2
+       FALLOC_FL_ZERO_RANGE             = 0x10
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x2000
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0x7
+       F_GETLK64                        = 0x7
+       F_GETOWN                         = 0x5
+       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                          = 0x1
+       F_SETFD                          = 0x2
+       F_SETFL                          = 0x4
+       F_SETLEASE                       = 0x400
+       F_SETLK                          = 0x8
+       F_SETLK64                        = 0x8
+       F_SETLKW                         = 0x9
+       F_SETLKW64                       = 0x9
+       F_SETOWN                         = 0x6
+       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                          = 0x3
+       F_WRLCK                          = 0x2
+       GRND_NONBLOCK                    = 0x1
+       GRND_RANDOM                      = 0x2
+       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_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                       = 0x400000
+       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                      = 0x4000
+       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_MPLS                     = 0x89
+       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_HDRINCL                     = 0x24
+       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_BIND_ADDRESS_NO_PORT          = 0x18
+       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
+       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_FREE                        = 0x8
+       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                    = 0x200
+       MAP_HUGETLB                      = 0x40000
+       MAP_HUGE_MASK                    = 0x3f
+       MAP_HUGE_SHIFT                   = 0x1a
+       MAP_LOCKED                       = 0x100
+       MAP_NONBLOCK                     = 0x10000
+       MAP_NORESERVE                    = 0x40
+       MAP_POPULATE                     = 0x8000
+       MAP_PRIVATE                      = 0x2
+       MAP_RENAME                       = 0x20
+       MAP_SHARED                       = 0x1
+       MAP_STACK                        = 0x20000
+       MAP_TYPE                         = 0xf
+       MCL_CURRENT                      = 0x2000
+       MCL_FUTURE                       = 0x4000
+       MCL_ONFAULT                      = 0x8000
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_BATCH                        = 0x40000
+       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
+       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_FILTERED              = 0x20
+       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                         = 0x8
+       O_ASYNC                          = 0x40
+       O_CLOEXEC                        = 0x400000
+       O_CREAT                          = 0x200
+       O_DIRECT                         = 0x100000
+       O_DIRECTORY                      = 0x10000
+       O_DSYNC                          = 0x2000
+       O_EXCL                           = 0x800
+       O_FSYNC                          = 0x802000
+       O_LARGEFILE                      = 0x0
+       O_NDELAY                         = 0x4004
+       O_NOATIME                        = 0x200000
+       O_NOCTTY                         = 0x8000
+       O_NOFOLLOW                       = 0x20000
+       O_NONBLOCK                       = 0x4000
+       O_PATH                           = 0x1000000
+       O_RDONLY                         = 0x0
+       O_RDWR                           = 0x2
+       O_RSYNC                          = 0x802000
+       O_SYNC                           = 0x802000
+       O_TMPFILE                        = 0x2010000
+       O_TRUNC                          = 0x400
+       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_GETFPAREGS                = 0x14
+       PTRACE_GETFPREGS                 = 0xe
+       PTRACE_GETFPREGS64               = 0x19
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGS64                 = 0x16
+       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                    = 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_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_READDATA                  = 0x10
+       PTRACE_READTEXT                  = 0x12
+       PTRACE_SECCOMP_GET_FILTER        = 0x420c
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SETFPAREGS                = 0x15
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETFPREGS64               = 0x1a
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGS64                 = 0x17
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETSIGMASK                = 0x420b
+       PTRACE_SINGLESTEP                = 0x9
+       PTRACE_SPARC_DETACH              = 0xb
+       PTRACE_SYSCALL                   = 0x18
+       PTRACE_TRACEME                   = 0x0
+       PTRACE_WRITEDATA                 = 0x11
+       PTRACE_WRITETEXT                 = 0x13
+       PT_FP                            = 0x48
+       PT_G0                            = 0x10
+       PT_G1                            = 0x14
+       PT_G2                            = 0x18
+       PT_G3                            = 0x1c
+       PT_G4                            = 0x20
+       PT_G5                            = 0x24
+       PT_G6                            = 0x28
+       PT_G7                            = 0x2c
+       PT_I0                            = 0x30
+       PT_I1                            = 0x34
+       PT_I2                            = 0x38
+       PT_I3                            = 0x3c
+       PT_I4                            = 0x40
+       PT_I5                            = 0x44
+       PT_I6                            = 0x48
+       PT_I7                            = 0x4c
+       PT_NPC                           = 0x8
+       PT_PC                            = 0x4
+       PT_PSR                           = 0x0
+       PT_REGS_MAGIC                    = 0x57ac6c00
+       PT_TNPC                          = 0x90
+       PT_TPC                           = 0x88
+       PT_TSTATE                        = 0x80
+       PT_V9_FP                         = 0x70
+       PT_V9_G0                         = 0x0
+       PT_V9_G1                         = 0x8
+       PT_V9_G2                         = 0x10
+       PT_V9_G3                         = 0x18
+       PT_V9_G4                         = 0x20
+       PT_V9_G5                         = 0x28
+       PT_V9_G6                         = 0x30
+       PT_V9_G7                         = 0x38
+       PT_V9_I0                         = 0x40
+       PT_V9_I1                         = 0x48
+       PT_V9_I2                         = 0x50
+       PT_V9_I3                         = 0x58
+       PT_V9_I4                         = 0x60
+       PT_V9_I5                         = 0x68
+       PT_V9_I6                         = 0x70
+       PT_V9_I7                         = 0x78
+       PT_V9_MAGIC                      = 0x9c
+       PT_V9_TNPC                       = 0x90
+       PT_V9_TPC                        = 0x88
+       PT_V9_TSTATE                     = 0x80
+       PT_V9_Y                          = 0x98
+       PT_WIM                           = 0x10
+       PT_Y                             = 0xc
+       RLIMIT_AS                        = 0x9
+       RLIMIT_CORE                      = 0x4
+       RLIMIT_CPU                       = 0x0
+       RLIMIT_DATA                      = 0x2
+       RLIMIT_FSIZE                     = 0x1
+       RLIMIT_NOFILE                    = 0x6
+       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                          = 0x18
+       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_LOOKUP_TABLE               = 0x1000
+       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_GETSTATS                     = 0x5e
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5f
+       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_NEWSTATS                     = 0x5c
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x14
+       RTM_NR_MSGTYPES                  = 0x50
+       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                 = 0x23
+       SCM_TIMESTAMPNS                  = 0x21
+       SCM_WIFI_STATUS                  = 0x25
+       SHUT_RD                          = 0x0
+       SHUT_RDWR                        = 0x2
+       SHUT_WR                          = 0x1
+       SIOCADDDLCI                      = 0x8980
+       SIOCADDMULTI                     = 0x8931
+       SIOCADDRT                        = 0x890b
+       SIOCATMARK                       = 0x8905
+       SIOCBONDCHANGEACTIVE             = 0x8995
+       SIOCBONDENSLAVE                  = 0x8990
+       SIOCBONDINFOQUERY                = 0x8994
+       SIOCBONDRELEASE                  = 0x8991
+       SIOCBONDSETHWADDR                = 0x8992
+       SIOCBONDSLAVEINFOQUERY           = 0x8993
+       SIOCBRADDBR                      = 0x89a0
+       SIOCBRADDIF                      = 0x89a2
+       SIOCBRDELBR                      = 0x89a1
+       SIOCBRDELIF                      = 0x89a3
+       SIOCDARP                         = 0x8953
+       SIOCDELDLCI                      = 0x8981
+       SIOCDELMULTI                     = 0x8932
+       SIOCDELRT                        = 0x890c
+       SIOCDEVPRIVATE                   = 0x89f0
+       SIOCDIFADDR                      = 0x8936
+       SIOCDRARP                        = 0x8960
+       SIOCETHTOOL                      = 0x8946
+       SIOCGARP                         = 0x8954
+       SIOCGHWTSTAMP                    = 0x89b1
+       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
+       SIOCGIFVLAN                      = 0x8982
+       SIOCGMIIPHY                      = 0x8947
+       SIOCGMIIREG                      = 0x8948
+       SIOCGPGRP                        = 0x8904
+       SIOCGRARP                        = 0x8961
+       SIOCGSTAMP                       = 0x8906
+       SIOCGSTAMPNS                     = 0x8907
+       SIOCINQ                          = 0x4004667f
+       SIOCOUTQ                         = 0x40047473
+       SIOCOUTQNSD                      = 0x894b
+       SIOCPROTOPRIVATE                 = 0x89e0
+       SIOCRTMSG                        = 0x890d
+       SIOCSARP                         = 0x8955
+       SIOCSHWTSTAMP                    = 0x89b0
+       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
+       SIOCSIFVLAN                      = 0x8983
+       SIOCSMIIREG                      = 0x8949
+       SIOCSPGRP                        = 0x8902
+       SIOCSRARP                        = 0x8962
+       SIOCWANDEV                       = 0x894a
+       SOCK_CLOEXEC                     = 0x400000
+       SOCK_DCCP                        = 0x6
+       SOCK_DGRAM                       = 0x2
+       SOCK_NONBLOCK                    = 0x4000
+       SOCK_PACKET                      = 0xa
+       SOCK_RAW                         = 0x3
+       SOCK_RDM                         = 0x4
+       SOCK_SEQPACKET                   = 0x5
+       SOCK_STREAM                      = 0x1
+       SOL_AAL                          = 0x109
+       SOL_ALG                          = 0x117
+       SOL_ATM                          = 0x108
+       SOL_CAIF                         = 0x116
+       SOL_DCCP                         = 0x10d
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_IUCV                         = 0x115
+       SOL_KCM                          = 0x119
+       SOL_LLC                          = 0x10c
+       SOL_NETBEUI                      = 0x10b
+       SOL_NETLINK                      = 0x10e
+       SOL_NFC                          = 0x118
+       SOL_PACKET                       = 0x107
+       SOL_PNPIPE                       = 0x113
+       SOL_PPPOL2TP                     = 0x111
+       SOL_RAW                          = 0xff
+       SOL_RDS                          = 0x114
+       SOL_RXRPC                        = 0x110
+       SOL_SOCKET                       = 0xffff
+       SOL_TCP                          = 0x6
+       SOL_TIPC                         = 0x10f
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x8000
+       SO_ATTACH_BPF                    = 0x34
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_ATTACH_REUSEPORT_CBPF         = 0x35
+       SO_ATTACH_REUSEPORT_EBPF         = 0x36
+       SO_BINDTODEVICE                  = 0xd
+       SO_BPF_EXTENSIONS                = 0x32
+       SO_BROADCAST                     = 0x20
+       SO_BSDCOMPAT                     = 0x400
+       SO_BUSY_POLL                     = 0x30
+       SO_CNX_ADVICE                    = 0x37
+       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                  = 0x33
+       SO_KEEPALIVE                     = 0x8
+       SO_LINGER                        = 0x80
+       SO_LOCK_FILTER                   = 0x28
+       SO_MARK                          = 0x22
+       SO_MAX_PACING_RATE               = 0x31
+       SO_NOFCS                         = 0x27
+       SO_NO_CHECK                      = 0xb
+       SO_OOBINLINE                     = 0x100
+       SO_PASSCRED                      = 0x2
+       SO_PASSSEC                       = 0x1f
+       SO_PEEK_OFF                      = 0x26
+       SO_PEERCRED                      = 0x40
+       SO_PEERNAME                      = 0x1c
+       SO_PEERSEC                       = 0x1e
+       SO_PRIORITY                      = 0xc
+       SO_PROTOCOL                      = 0x1028
+       SO_RCVBUF                        = 0x1002
+       SO_RCVBUFFORCE                   = 0x100b
+       SO_RCVLOWAT                      = 0x800
+       SO_RCVTIMEO                      = 0x2000
+       SO_REUSEADDR                     = 0x4
+       SO_REUSEPORT                     = 0x200
+       SO_RXQ_OVFL                      = 0x24
+       SO_SECURITY_AUTHENTICATION       = 0x5001
+       SO_SECURITY_ENCRYPTION_NETWORK   = 0x5004
+       SO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002
+       SO_SELECT_ERR_QUEUE              = 0x29
+       SO_SNDBUF                        = 0x1001
+       SO_SNDBUFFORCE                   = 0x100a
+       SO_SNDLOWAT                      = 0x1000
+       SO_SNDTIMEO                      = 0x4000
+       SO_TIMESTAMP                     = 0x1d
+       SO_TIMESTAMPING                  = 0x23
+       SO_TIMESTAMPNS                   = 0x21
+       SO_TYPE                          = 0x1008
+       SO_VM_SOCKETS_BUFFER_MAX_SIZE    = 0x2
+       SO_VM_SOCKETS_BUFFER_MIN_SIZE    = 0x1
+       SO_VM_SOCKETS_BUFFER_SIZE        = 0x0
+       SO_VM_SOCKETS_CONNECT_TIMEOUT    = 0x6
+       SO_VM_SOCKETS_NONBLOCK_TXRX      = 0x7
+       SO_VM_SOCKETS_PEER_HOST_VM_ID    = 0x3
+       SO_VM_SOCKETS_TRUSTED            = 0x5
+       SO_WIFI_STATUS                   = 0x25
+       SPLICE_F_GIFT                    = 0x8
+       SPLICE_F_MORE                    = 0x4
+       SPLICE_F_MOVE                    = 0x1
+       SPLICE_F_NONBLOCK                = 0x2
+       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                           = 0x20005407
+       TCGETA                           = 0x40125401
+       TCGETS                           = 0x40245408
+       TCGETS2                          = 0x402c540c
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CC_INFO                      = 0x1a
+       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_NOTSENT_LOWAT                = 0x19
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_SAVED_SYN                    = 0x1c
+       TCP_SAVE_SYN                     = 0x1b
+       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                           = 0x20005405
+       TCSBRKP                          = 0x5425
+       TCSETA                           = 0x80125402
+       TCSETAF                          = 0x80125404
+       TCSETAW                          = 0x80125403
+       TCSETS                           = 0x80245409
+       TCSETS2                          = 0x802c540d
+       TCSETSF                          = 0x8024540b
+       TCSETSF2                         = 0x802c540f
+       TCSETSW                          = 0x8024540a
+       TCSETSW2                         = 0x802c540e
+       TCXONC                           = 0x20005406
+       TIOCCBRK                         = 0x2000747a
+       TIOCCONS                         = 0x20007424
+       TIOCEXCL                         = 0x2000740d
+       TIOCGDEV                         = 0x40045432
+       TIOCGETD                         = 0x40047400
+       TIOCGEXCL                        = 0x40045440
+       TIOCGICOUNT                      = 0x545d
+       TIOCGLCKTRMIOS                   = 0x5456
+       TIOCGPGRP                        = 0x40047483
+       TIOCGPKT                         = 0x40045438
+       TIOCGPTLCK                       = 0x40045439
+       TIOCGPTN                         = 0x40047486
+       TIOCGRS485                       = 0x40205441
+       TIOCGSERIAL                      = 0x541e
+       TIOCGSID                         = 0x40047485
+       TIOCGSOFTCAR                     = 0x40047464
+       TIOCGWINSZ                       = 0x40087468
+       TIOCINQ                          = 0x4004667f
+       TIOCLINUX                        = 0x541c
+       TIOCMBIC                         = 0x8004746b
+       TIOCMBIS                         = 0x8004746c
+       TIOCMGET                         = 0x4004746a
+       TIOCMIWAIT                       = 0x545c
+       TIOCMSET                         = 0x8004746d
+       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                        = 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
+       TIOCSBRK                         = 0x2000747b
+       TIOCSCTTY                        = 0x20007484
+       TIOCSERCONFIG                    = 0x5453
+       TIOCSERGETLSR                    = 0x5459
+       TIOCSERGETMULTI                  = 0x545a
+       TIOCSERGSTRUCT                   = 0x5458
+       TIOCSERGWILD                     = 0x5454
+       TIOCSERSETMULTI                  = 0x545b
+       TIOCSERSWILD                     = 0x5455
+       TIOCSER_TEMT                     = 0x1
+       TIOCSETD                         = 0x80047401
+       TIOCSIG                          = 0x80047488
+       TIOCSLCKTRMIOS                   = 0x5457
+       TIOCSPGRP                        = 0x80047482
+       TIOCSPTLCK                       = 0x80047487
+       TIOCSRS485                       = 0xc0205442
+       TIOCSSERIAL                      = 0x541f
+       TIOCSSOFTCAR                     = 0x80047465
+       TIOCSTART                        = 0x2000746e
+       TIOCSTI                          = 0x80017472
+       TIOCSTOP                         = 0x2000746f
+       TIOCSWINSZ                       = 0x80087467
+       TIOCVHANGUP                      = 0x20005437
+       TOSTOP                           = 0x100
+       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
+       VDSUSP                           = 0xb
+       VEOF                             = 0x4
+       VEOL                             = 0x5
+       VEOL2                            = 0x6
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMADDR_CID_ANY                   = 0xffffffff
+       VMADDR_CID_HOST                  = 0x2
+       VMADDR_CID_HYPERVISOR            = 0x0
+       VMADDR_CID_RESERVED              = 0x1
+       VMADDR_PORT_ANY                  = 0xffffffff
+       VMIN                             = 0x4
+       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
+       WRAP                             = 0x20000
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+       XCASE                            = 0x4
+       XTABS                            = 0x1800
+       __TIOCFLUSH                      = 0x80047410
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EADV            = syscall.Errno(0x53)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0xb)
+       EALREADY        = syscall.Errno(0x25)
+       EBADE           = syscall.Errno(0x66)
+       EBADF           = syscall.Errno(0x9)
+       EBADFD          = syscall.Errno(0x5d)
+       EBADMSG         = syscall.Errno(0x4c)
+       EBADR           = syscall.Errno(0x67)
+       EBADRQC         = syscall.Errno(0x6a)
+       EBADSLT         = syscall.Errno(0x6b)
+       EBFONT          = syscall.Errno(0x6d)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x7f)
+       ECHILD          = syscall.Errno(0xa)
+       ECHRNG          = syscall.Errno(0x5e)
+       ECOMM           = syscall.Errno(0x55)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0x4e)
+       EDEADLOCK       = syscall.Errno(0x6c)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDOTDOT         = syscall.Errno(0x58)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EHWPOISON       = syscall.Errno(0x87)
+       EIDRM           = syscall.Errno(0x4d)
+       EILSEQ          = syscall.Errno(0x7a)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       EISNAM          = syscall.Errno(0x78)
+       EKEYEXPIRED     = syscall.Errno(0x81)
+       EKEYREJECTED    = syscall.Errno(0x83)
+       EKEYREVOKED     = syscall.Errno(0x82)
+       EL2HLT          = syscall.Errno(0x65)
+       EL2NSYNC        = syscall.Errno(0x5f)
+       EL3HLT          = syscall.Errno(0x60)
+       EL3RST          = syscall.Errno(0x61)
+       ELIBACC         = syscall.Errno(0x72)
+       ELIBBAD         = syscall.Errno(0x70)
+       ELIBEXEC        = syscall.Errno(0x6e)
+       ELIBMAX         = syscall.Errno(0x7b)
+       ELIBSCN         = syscall.Errno(0x7c)
+       ELNRNG          = syscall.Errno(0x62)
+       ELOOP           = syscall.Errno(0x3e)
+       EMEDIUMTYPE     = syscall.Errno(0x7e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x57)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENAVAIL         = syscall.Errno(0x77)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOANO          = syscall.Errno(0x69)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENOCSI          = syscall.Errno(0x64)
+       ENODATA         = syscall.Errno(0x6f)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOKEY          = syscall.Errno(0x80)
+       ENOLCK          = syscall.Errno(0x4f)
+       ENOLINK         = syscall.Errno(0x52)
+       ENOMEDIUM       = syscall.Errno(0x7d)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x4b)
+       ENONET          = syscall.Errno(0x50)
+       ENOPKG          = syscall.Errno(0x71)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x4a)
+       ENOSTR          = syscall.Errno(0x48)
+       ENOSYS          = syscall.Errno(0x5a)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTNAM         = syscall.Errno(0x76)
+       ENOTRECOVERABLE = syscall.Errno(0x85)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x2d)
+       ENOTTY          = syscall.Errno(0x19)
+       ENOTUNIQ        = syscall.Errno(0x73)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x5c)
+       EOWNERDEAD      = syscall.Errno(0x84)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROTO          = syscall.Errno(0x56)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMCHG         = syscall.Errno(0x59)
+       EREMOTE         = syscall.Errno(0x47)
+       EREMOTEIO       = syscall.Errno(0x79)
+       ERESTART        = syscall.Errno(0x74)
+       ERFKILL         = syscall.Errno(0x86)
+       EROFS           = syscall.Errno(0x1e)
+       ERREMOTE        = syscall.Errno(0x51)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESRMNT          = syscall.Errno(0x54)
+       ESTALE          = syscall.Errno(0x46)
+       ESTRPIPE        = syscall.Errno(0x5b)
+       ETIME           = syscall.Errno(0x49)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUCLEAN         = syscall.Errno(0x75)
+       EUNATCH         = syscall.Errno(0x63)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0xb)
+       EXDEV           = syscall.Errno(0x12)
+       EXFULL          = syscall.Errno(0x68)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCLD    = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGLOST   = syscall.Signal(0x1d)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPOLL   = syscall.Signal(0x17)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x1d)
+       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:   "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",
+       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",
+       48:  "address already in use",
+       49:  "cannot 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:  "transport endpoint is already connected",
+       57:  "transport endpoint is not connected",
+       58:  "cannot send after transport endpoint shutdown",
+       59:  "too many references: cannot 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:  "disk quota exceeded",
+       70:  "stale file handle",
+       71:  "object is remote",
+       72:  "device not a stream",
+       73:  "timer expired",
+       74:  "out of streams resources",
+       75:  "no message of desired type",
+       76:  "bad message",
+       77:  "identifier removed",
+       78:  "resource deadlock avoided",
+       79:  "no locks available",
+       80:  "machine is not on the network",
+       81:  "unknown error 81",
+       82:  "link has been severed",
+       83:  "advertise error",
+       84:  "srmount error",
+       85:  "communication error on send",
+       86:  "protocol error",
+       87:  "multihop attempted",
+       88:  "RFS specific error",
+       89:  "remote address changed",
+       90:  "function not implemented",
+       91:  "streams pipe error",
+       92:  "value too large for defined data type",
+       93:  "file descriptor in bad state",
+       94:  "channel number out of range",
+       95:  "level 2 not synchronized",
+       96:  "level 3 halted",
+       97:  "level 3 reset",
+       98:  "link number out of range",
+       99:  "protocol driver not attached",
+       100: "no CSI structure available",
+       101: "level 2 halted",
+       102: "invalid exchange",
+       103: "invalid request descriptor",
+       104: "exchange full",
+       105: "no anode",
+       106: "invalid request code",
+       107: "invalid slot",
+       108: "file locking deadlock error",
+       109: "bad font file format",
+       110: "cannot exec a shared library directly",
+       111: "no data available",
+       112: "accessing a corrupted shared library",
+       113: "package not installed",
+       114: "can not access a needed shared library",
+       115: "name not unique on network",
+       116: "interrupted system call should be restarted",
+       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: "invalid or incomplete multibyte or wide character",
+       123: "attempting to link in too many shared libraries",
+       124: ".lib section in a.out corrupted",
+       125: "no medium found",
+       126: "wrong medium type",
+       127: "operation canceled",
+       128: "required key not available",
+       129: "key has expired",
+       130: "key has been revoked",
+       131: "key was rejected by service",
+       132: "owner died",
+       133: "state not recoverable",
+       134: "operation not possible due to RF-kill",
+       135: "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:  "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: "CPU time limit exceeded",
+       25: "file size limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window changed",
+       29: "resource lost",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+}
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..e48f4a5
--- /dev/null
@@ -0,0 +1,1394 @@
+// mksyscall.pl -l32 -tags darwin,386 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build darwin,386
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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)
+       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..672ada0
--- /dev/null
@@ -0,0 +1,1409 @@
+// mksyscall.pl -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build darwin,amd64
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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..d516409
--- /dev/null
@@ -0,0 +1,1394 @@
+// mksyscall.pl -l32 -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build darwin,arm
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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)
+       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_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
new file mode 100644 (file)
index 0000000..e97759c
--- /dev/null
@@ -0,0 +1,1394 @@
+// mksyscall.pl -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build darwin,arm64
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
new file mode 100644 (file)
index 0000000..eafceb8
--- /dev/null
@@ -0,0 +1,1393 @@
+// mksyscall.pl -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build dragonfly,amd64
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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)
+       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
+}
+
+// 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_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go
new file mode 100644 (file)
index 0000000..f53801c
--- /dev/null
@@ -0,0 +1,1617 @@
+// mksyscall.pl -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build freebsd,386
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)))
+       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)
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)))
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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)
+       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..55b0741
--- /dev/null
@@ -0,0 +1,1617 @@
+// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build freebsd,amd64
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)))
+       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)
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)))
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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..0e9b42b
--- /dev/null
@@ -0,0 +1,1617 @@
+// mksyscall.pl -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build freebsd,arm
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)))
+       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)
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)))
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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..41693a9
--- /dev/null
@@ -0,0 +1,1649 @@
+// mksyscall.pl -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,386
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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))
+       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 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 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 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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       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..f10621d
--- /dev/null
@@ -0,0 +1,1842 @@
+// mksyscall.pl -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,amd64
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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 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 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))
+       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)
+       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 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)
+       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)
+       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)
+       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)
+       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 poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       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..fae666f
--- /dev/null
@@ -0,0 +1,1751 @@
+// mksyscall.pl -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,arm
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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 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 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 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)
+       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
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       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..a4dca39
--- /dev/null
@@ -0,0 +1,1725 @@
+// mksyscall.pl -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,arm64
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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 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_PWAIT, 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 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)
+       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)
+       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)
+       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_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
new file mode 100644 (file)
index 0000000..b56db72
--- /dev/null
@@ -0,0 +1,1807 @@
+// mksyscall.pl -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,mips
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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>>32), uintptr(off), uintptr(len>>32), uintptr(len))
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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(r0)<<32 | int64(r1))
+       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)
+       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 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 Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 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() (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 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))
+       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)), 0, uintptr(offset>>32), uintptr(offset))
+       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>>32), uintptr(offset))
+       n = 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 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_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 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, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       n = int64(int64(r0)<<32 | int64(r1))
+       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 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), 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 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 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_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 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 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 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)
+       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 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)
+       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)
+       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 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 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 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 poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       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..ca2359d
--- /dev/null
@@ -0,0 +1,1791 @@
+// mksyscall.pl -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,mips64
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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 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 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))
+       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 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 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)
+       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)
+       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)
+       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)
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       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..e574940
--- /dev/null
@@ -0,0 +1,1791 @@
+// mksyscall.pl -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,mips64le
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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 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 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))
+       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 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 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)
+       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)
+       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)
+       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)
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
new file mode 100644 (file)
index 0000000..31836d4
--- /dev/null
@@ -0,0 +1,1807 @@
+// mksyscall.pl -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,mipsle
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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 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 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 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 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))
+       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)), 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 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 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_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 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, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       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 SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+       _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), 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 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 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 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 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 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 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)
+       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 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)
+       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)
+       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 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 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 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 poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       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..4a76755
--- /dev/null
@@ -0,0 +1,1853 @@
+// mksyscall.pl -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,ppc64
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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 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 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_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 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))
+       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)
+       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 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)
+       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)
+       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)
+       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)
+       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 poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       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..5fb3428
--- /dev/null
@@ -0,0 +1,1853 @@
+// mksyscall.pl -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,ppc64le
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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 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 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_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 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))
+       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)
+       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 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)
+       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)
+       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)
+       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)
+       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 poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
new file mode 100644 (file)
index 0000000..79d285c
--- /dev/null
@@ -0,0 +1,1633 @@
+// mksyscall.pl -tags linux,s390x syscall_linux.go syscall_linux_s390x.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build linux,s390x
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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 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 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 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))
+       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)
+       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 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 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)
+       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)
+       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)
+       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 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)
+       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 poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
new file mode 100644 (file)
index 0000000..ce3ec58
--- /dev/null
@@ -0,0 +1,1822 @@
+// mksyscall.pl -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build linux,sparc64
+
+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)
+       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)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 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 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)
+       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)))
+       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))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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 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)
+       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)
+       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)
+       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 Getrandom(buf []byte, flags int) (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_GETRANDOM, uintptr(_p0), uintptr(len(buf)), 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 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 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)
+       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))
+       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)))
+       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))
+       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)
+       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 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)
+       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, newlimit *Rlimit, old *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 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)
+       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)
+       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)
+       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)
+       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 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 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_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 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))
+       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)
+       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 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)
+       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)
+       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)
+       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)
+       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 poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
+       n = int(r0)
+       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..3182345
--- /dev/null
@@ -0,0 +1,1299 @@
+// mksyscall.pl -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build netbsd,386
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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..74ba818
--- /dev/null
@@ -0,0 +1,1299 @@
+// mksyscall.pl -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build netbsd,amd64
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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..1f346e2
--- /dev/null
@@ -0,0 +1,1299 @@
+// mksyscall.pl -l32 -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build netbsd,arm
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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..ca3e813
--- /dev/null
@@ -0,0 +1,1357 @@
+// mksyscall.pl -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build openbsd,386
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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..bf63d55
--- /dev/null
@@ -0,0 +1,1357 @@
+// mksyscall.pl -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build openbsd,amd64
+
+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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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))
+       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)
+       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)
+       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)
+       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)
+       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))
+       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))
+       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)
+       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)))
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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))
+       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)
+       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)
+       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..bdf140b
--- /dev/null
@@ -0,0 +1,1562 @@
+// mksyscall_solaris.pl -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build solaris,amd64
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+//go:cgo_import_dynamic libc_pipe pipe "libc.so"
+//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_wait4 wait4 "libc.so"
+//go:cgo_import_dynamic libc_gethostname gethostname "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 procpipe libc_pipe
+//go:linkname procgetsockname libc_getsockname
+//go:linkname procGetcwd libc_getcwd
+//go:linkname procgetgroups libc_getgroups
+//go:linkname procsetgroups libc_setgroups
+//go:linkname procwait4 libc_wait4
+//go:linkname procgethostname libc_gethostname
+//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 (
+       procpipe,
+       procgetsockname,
+       procGetcwd,
+       procgetgroups,
+       procsetgroups,
+       procwait4,
+       procgethostname,
+       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 pipe(p *[2]_C_int) (n int, err error) {
+       r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+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 wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int32(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func gethostname(buf []byte) (n int, err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)
+       n = int(r0)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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)
+       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_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
new file mode 100644 (file)
index 0000000..b2c9ef8
--- /dev/null
@@ -0,0 +1,315 @@
+// mksysnum_dragonfly.pl
+// Code generated by the command above; see README.md. 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(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(int from, 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, const 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_KENV                   = 390 // { int kenv(int what, const char *name, char *value, int len); }
+       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); }
+       SYS_PROCCTL                = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); }
+       SYS_CHFLAGSAT              = 537 // { int chflagsat(int fd, const char *path, int flags, int atflags);}
+       SYS_PIPE2                  = 538 // { int pipe2(int *fildes, int flags); }
+       SYS_UTIMENSAT              = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); }
+       SYS_FUTIMENS               = 540 // { int futimens(int fd, const struct timespec *ts); }
+       SYS_ACCEPT4                = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); }
+       SYS_LWP_SETNAME            = 542 // { int lwp_setname(lwpid_t tid, const char *name); }
+       SYS_PPOLL                  = 543 // { int ppoll(struct pollfd *fds, u_int nfds, \
+       SYS_LWP_SETAFFINITY        = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }
+       SYS_LWP_GETAFFINITY        = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }
+       SYS_LWP_CREATE2            = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }
+)
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..cef4fed
--- /dev/null
@@ -0,0 +1,388 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. 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_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
+       SYS_KCMP                   = 349
+       SYS_FINIT_MODULE           = 350
+       SYS_SCHED_SETATTR          = 351
+       SYS_SCHED_GETATTR          = 352
+       SYS_RENAMEAT2              = 353
+       SYS_SECCOMP                = 354
+       SYS_GETRANDOM              = 355
+       SYS_MEMFD_CREATE           = 356
+       SYS_BPF                    = 357
+       SYS_EXECVEAT               = 358
+       SYS_SOCKET                 = 359
+       SYS_SOCKETPAIR             = 360
+       SYS_BIND                   = 361
+       SYS_CONNECT                = 362
+       SYS_LISTEN                 = 363
+       SYS_ACCEPT4                = 364
+       SYS_GETSOCKOPT             = 365
+       SYS_SETSOCKOPT             = 366
+       SYS_GETSOCKNAME            = 367
+       SYS_GETPEERNAME            = 368
+       SYS_SENDTO                 = 369
+       SYS_SENDMSG                = 370
+       SYS_RECVFROM               = 371
+       SYS_RECVMSG                = 372
+       SYS_SHUTDOWN               = 373
+       SYS_USERFAULTFD            = 374
+       SYS_MEMBARRIER             = 375
+       SYS_MLOCK2                 = 376
+       SYS_COPY_FILE_RANGE        = 377
+       SYS_PREADV2                = 378
+       SYS_PWRITEV2               = 379
+       SYS_PKEY_MPROTECT          = 380
+       SYS_PKEY_ALLOC             = 381
+       SYS_PKEY_FREE              = 382
+)
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..49bfa12
--- /dev/null
@@ -0,0 +1,341 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. 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
+       SYS_KCMP                   = 312
+       SYS_FINIT_MODULE           = 313
+       SYS_SCHED_SETATTR          = 314
+       SYS_SCHED_GETATTR          = 315
+       SYS_RENAMEAT2              = 316
+       SYS_SECCOMP                = 317
+       SYS_GETRANDOM              = 318
+       SYS_MEMFD_CREATE           = 319
+       SYS_KEXEC_FILE_LOAD        = 320
+       SYS_BPF                    = 321
+       SYS_EXECVEAT               = 322
+       SYS_USERFAULTFD            = 323
+       SYS_MEMBARRIER             = 324
+       SYS_MLOCK2                 = 325
+       SYS_COPY_FILE_RANGE        = 326
+       SYS_PREADV2                = 327
+       SYS_PWRITEV2               = 328
+       SYS_PKEY_MPROTECT          = 329
+       SYS_PKEY_ALLOC             = 330
+       SYS_PKEY_FREE              = 331
+)
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..97b182e
--- /dev/null
@@ -0,0 +1,361 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build arm,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_CREAT                  = 8
+       SYS_LINK                   = 9
+       SYS_UNLINK                 = 10
+       SYS_EXECVE                 = 11
+       SYS_CHDIR                  = 12
+       SYS_MKNOD                  = 14
+       SYS_CHMOD                  = 15
+       SYS_LCHOWN                 = 16
+       SYS_LSEEK                  = 19
+       SYS_GETPID                 = 20
+       SYS_MOUNT                  = 21
+       SYS_SETUID                 = 23
+       SYS_GETUID                 = 24
+       SYS_PTRACE                 = 26
+       SYS_PAUSE                  = 29
+       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_GETRUSAGE              = 77
+       SYS_GETTIMEOFDAY           = 78
+       SYS_SETTIMEOFDAY           = 79
+       SYS_GETGROUPS              = 80
+       SYS_SETGROUPS              = 81
+       SYS_SYMLINK                = 83
+       SYS_READLINK               = 85
+       SYS_USELIB                 = 86
+       SYS_SWAPON                 = 87
+       SYS_REBOOT                 = 88
+       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_SYSLOG                 = 103
+       SYS_SETITIMER              = 104
+       SYS_GETITIMER              = 105
+       SYS_STAT                   = 106
+       SYS_LSTAT                  = 107
+       SYS_FSTAT                  = 108
+       SYS_VHANGUP                = 111
+       SYS_WAIT4                  = 114
+       SYS_SWAPOFF                = 115
+       SYS_SYSINFO                = 116
+       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
+       SYS_KCMP                   = 378
+       SYS_FINIT_MODULE           = 379
+       SYS_SCHED_SETATTR          = 380
+       SYS_SCHED_GETATTR          = 381
+       SYS_RENAMEAT2              = 382
+       SYS_SECCOMP                = 383
+       SYS_GETRANDOM              = 384
+       SYS_MEMFD_CREATE           = 385
+       SYS_BPF                    = 386
+       SYS_EXECVEAT               = 387
+       SYS_USERFAULTFD            = 388
+       SYS_MEMBARRIER             = 389
+       SYS_MLOCK2                 = 390
+       SYS_COPY_FILE_RANGE        = 391
+       SYS_PREADV2                = 392
+       SYS_PWRITEV2               = 393
+       SYS_PKEY_MPROTECT          = 394
+       SYS_PKEY_ALLOC             = 395
+       SYS_PKEY_FREE              = 396
+)
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..6407843
--- /dev/null
@@ -0,0 +1,285 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. 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
+       SYS_GETRANDOM              = 278
+       SYS_MEMFD_CREATE           = 279
+       SYS_BPF                    = 280
+       SYS_EXECVEAT               = 281
+       SYS_USERFAULTFD            = 282
+       SYS_MEMBARRIER             = 283
+       SYS_MLOCK2                 = 284
+       SYS_COPY_FILE_RANGE        = 285
+       SYS_PREADV2                = 286
+       SYS_PWRITEV2               = 287
+       SYS_PKEY_MPROTECT          = 288
+       SYS_PKEY_ALLOC             = 289
+       SYS_PKEY_FREE              = 290
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
new file mode 100644 (file)
index 0000000..939567c
--- /dev/null
@@ -0,0 +1,374 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mips,linux
+
+package unix
+
+const (
+       SYS_SYSCALL                = 4000
+       SYS_EXIT                   = 4001
+       SYS_FORK                   = 4002
+       SYS_READ                   = 4003
+       SYS_WRITE                  = 4004
+       SYS_OPEN                   = 4005
+       SYS_CLOSE                  = 4006
+       SYS_WAITPID                = 4007
+       SYS_CREAT                  = 4008
+       SYS_LINK                   = 4009
+       SYS_UNLINK                 = 4010
+       SYS_EXECVE                 = 4011
+       SYS_CHDIR                  = 4012
+       SYS_TIME                   = 4013
+       SYS_MKNOD                  = 4014
+       SYS_CHMOD                  = 4015
+       SYS_LCHOWN                 = 4016
+       SYS_BREAK                  = 4017
+       SYS_UNUSED18               = 4018
+       SYS_LSEEK                  = 4019
+       SYS_GETPID                 = 4020
+       SYS_MOUNT                  = 4021
+       SYS_UMOUNT                 = 4022
+       SYS_SETUID                 = 4023
+       SYS_GETUID                 = 4024
+       SYS_STIME                  = 4025
+       SYS_PTRACE                 = 4026
+       SYS_ALARM                  = 4027
+       SYS_UNUSED28               = 4028
+       SYS_PAUSE                  = 4029
+       SYS_UTIME                  = 4030
+       SYS_STTY                   = 4031
+       SYS_GTTY                   = 4032
+       SYS_ACCESS                 = 4033
+       SYS_NICE                   = 4034
+       SYS_FTIME                  = 4035
+       SYS_SYNC                   = 4036
+       SYS_KILL                   = 4037
+       SYS_RENAME                 = 4038
+       SYS_MKDIR                  = 4039
+       SYS_RMDIR                  = 4040
+       SYS_DUP                    = 4041
+       SYS_PIPE                   = 4042
+       SYS_TIMES                  = 4043
+       SYS_PROF                   = 4044
+       SYS_BRK                    = 4045
+       SYS_SETGID                 = 4046
+       SYS_GETGID                 = 4047
+       SYS_SIGNAL                 = 4048
+       SYS_GETEUID                = 4049
+       SYS_GETEGID                = 4050
+       SYS_ACCT                   = 4051
+       SYS_UMOUNT2                = 4052
+       SYS_LOCK                   = 4053
+       SYS_IOCTL                  = 4054
+       SYS_FCNTL                  = 4055
+       SYS_MPX                    = 4056
+       SYS_SETPGID                = 4057
+       SYS_ULIMIT                 = 4058
+       SYS_UNUSED59               = 4059
+       SYS_UMASK                  = 4060
+       SYS_CHROOT                 = 4061
+       SYS_USTAT                  = 4062
+       SYS_DUP2                   = 4063
+       SYS_GETPPID                = 4064
+       SYS_GETPGRP                = 4065
+       SYS_SETSID                 = 4066
+       SYS_SIGACTION              = 4067
+       SYS_SGETMASK               = 4068
+       SYS_SSETMASK               = 4069
+       SYS_SETREUID               = 4070
+       SYS_SETREGID               = 4071
+       SYS_SIGSUSPEND             = 4072
+       SYS_SIGPENDING             = 4073
+       SYS_SETHOSTNAME            = 4074
+       SYS_SETRLIMIT              = 4075
+       SYS_GETRLIMIT              = 4076
+       SYS_GETRUSAGE              = 4077
+       SYS_GETTIMEOFDAY           = 4078
+       SYS_SETTIMEOFDAY           = 4079
+       SYS_GETGROUPS              = 4080
+       SYS_SETGROUPS              = 4081
+       SYS_RESERVED82             = 4082
+       SYS_SYMLINK                = 4083
+       SYS_UNUSED84               = 4084
+       SYS_READLINK               = 4085
+       SYS_USELIB                 = 4086
+       SYS_SWAPON                 = 4087
+       SYS_REBOOT                 = 4088
+       SYS_READDIR                = 4089
+       SYS_MMAP                   = 4090
+       SYS_MUNMAP                 = 4091
+       SYS_TRUNCATE               = 4092
+       SYS_FTRUNCATE              = 4093
+       SYS_FCHMOD                 = 4094
+       SYS_FCHOWN                 = 4095
+       SYS_GETPRIORITY            = 4096
+       SYS_SETPRIORITY            = 4097
+       SYS_PROFIL                 = 4098
+       SYS_STATFS                 = 4099
+       SYS_FSTATFS                = 4100
+       SYS_IOPERM                 = 4101
+       SYS_SOCKETCALL             = 4102
+       SYS_SYSLOG                 = 4103
+       SYS_SETITIMER              = 4104
+       SYS_GETITIMER              = 4105
+       SYS_STAT                   = 4106
+       SYS_LSTAT                  = 4107
+       SYS_FSTAT                  = 4108
+       SYS_UNUSED109              = 4109
+       SYS_IOPL                   = 4110
+       SYS_VHANGUP                = 4111
+       SYS_IDLE                   = 4112
+       SYS_VM86                   = 4113
+       SYS_WAIT4                  = 4114
+       SYS_SWAPOFF                = 4115
+       SYS_SYSINFO                = 4116
+       SYS_IPC                    = 4117
+       SYS_FSYNC                  = 4118
+       SYS_SIGRETURN              = 4119
+       SYS_CLONE                  = 4120
+       SYS_SETDOMAINNAME          = 4121
+       SYS_UNAME                  = 4122
+       SYS_MODIFY_LDT             = 4123
+       SYS_ADJTIMEX               = 4124
+       SYS_MPROTECT               = 4125
+       SYS_SIGPROCMASK            = 4126
+       SYS_CREATE_MODULE          = 4127
+       SYS_INIT_MODULE            = 4128
+       SYS_DELETE_MODULE          = 4129
+       SYS_GET_KERNEL_SYMS        = 4130
+       SYS_QUOTACTL               = 4131
+       SYS_GETPGID                = 4132
+       SYS_FCHDIR                 = 4133
+       SYS_BDFLUSH                = 4134
+       SYS_SYSFS                  = 4135
+       SYS_PERSONALITY            = 4136
+       SYS_AFS_SYSCALL            = 4137
+       SYS_SETFSUID               = 4138
+       SYS_SETFSGID               = 4139
+       SYS__LLSEEK                = 4140
+       SYS_GETDENTS               = 4141
+       SYS__NEWSELECT             = 4142
+       SYS_FLOCK                  = 4143
+       SYS_MSYNC                  = 4144
+       SYS_READV                  = 4145
+       SYS_WRITEV                 = 4146
+       SYS_CACHEFLUSH             = 4147
+       SYS_CACHECTL               = 4148
+       SYS_SYSMIPS                = 4149
+       SYS_UNUSED150              = 4150
+       SYS_GETSID                 = 4151
+       SYS_FDATASYNC              = 4152
+       SYS__SYSCTL                = 4153
+       SYS_MLOCK                  = 4154
+       SYS_MUNLOCK                = 4155
+       SYS_MLOCKALL               = 4156
+       SYS_MUNLOCKALL             = 4157
+       SYS_SCHED_SETPARAM         = 4158
+       SYS_SCHED_GETPARAM         = 4159
+       SYS_SCHED_SETSCHEDULER     = 4160
+       SYS_SCHED_GETSCHEDULER     = 4161
+       SYS_SCHED_YIELD            = 4162
+       SYS_SCHED_GET_PRIORITY_MAX = 4163
+       SYS_SCHED_GET_PRIORITY_MIN = 4164
+       SYS_SCHED_RR_GET_INTERVAL  = 4165
+       SYS_NANOSLEEP              = 4166
+       SYS_MREMAP                 = 4167
+       SYS_ACCEPT                 = 4168
+       SYS_BIND                   = 4169
+       SYS_CONNECT                = 4170
+       SYS_GETPEERNAME            = 4171
+       SYS_GETSOCKNAME            = 4172
+       SYS_GETSOCKOPT             = 4173
+       SYS_LISTEN                 = 4174
+       SYS_RECV                   = 4175
+       SYS_RECVFROM               = 4176
+       SYS_RECVMSG                = 4177
+       SYS_SEND                   = 4178
+       SYS_SENDMSG                = 4179
+       SYS_SENDTO                 = 4180
+       SYS_SETSOCKOPT             = 4181
+       SYS_SHUTDOWN               = 4182
+       SYS_SOCKET                 = 4183
+       SYS_SOCKETPAIR             = 4184
+       SYS_SETRESUID              = 4185
+       SYS_GETRESUID              = 4186
+       SYS_QUERY_MODULE           = 4187
+       SYS_POLL                   = 4188
+       SYS_NFSSERVCTL             = 4189
+       SYS_SETRESGID              = 4190
+       SYS_GETRESGID              = 4191
+       SYS_PRCTL                  = 4192
+       SYS_RT_SIGRETURN           = 4193
+       SYS_RT_SIGACTION           = 4194
+       SYS_RT_SIGPROCMASK         = 4195
+       SYS_RT_SIGPENDING          = 4196
+       SYS_RT_SIGTIMEDWAIT        = 4197
+       SYS_RT_SIGQUEUEINFO        = 4198
+       SYS_RT_SIGSUSPEND          = 4199
+       SYS_PREAD64                = 4200
+       SYS_PWRITE64               = 4201
+       SYS_CHOWN                  = 4202
+       SYS_GETCWD                 = 4203
+       SYS_CAPGET                 = 4204
+       SYS_CAPSET                 = 4205
+       SYS_SIGALTSTACK            = 4206
+       SYS_SENDFILE               = 4207
+       SYS_GETPMSG                = 4208
+       SYS_PUTPMSG                = 4209
+       SYS_MMAP2                  = 4210
+       SYS_TRUNCATE64             = 4211
+       SYS_FTRUNCATE64            = 4212
+       SYS_STAT64                 = 4213
+       SYS_LSTAT64                = 4214
+       SYS_FSTAT64                = 4215
+       SYS_PIVOT_ROOT             = 4216
+       SYS_MINCORE                = 4217
+       SYS_MADVISE                = 4218
+       SYS_GETDENTS64             = 4219
+       SYS_FCNTL64                = 4220
+       SYS_RESERVED221            = 4221
+       SYS_GETTID                 = 4222
+       SYS_READAHEAD              = 4223
+       SYS_SETXATTR               = 4224
+       SYS_LSETXATTR              = 4225
+       SYS_FSETXATTR              = 4226
+       SYS_GETXATTR               = 4227
+       SYS_LGETXATTR              = 4228
+       SYS_FGETXATTR              = 4229
+       SYS_LISTXATTR              = 4230
+       SYS_LLISTXATTR             = 4231
+       SYS_FLISTXATTR             = 4232
+       SYS_REMOVEXATTR            = 4233
+       SYS_LREMOVEXATTR           = 4234
+       SYS_FREMOVEXATTR           = 4235
+       SYS_TKILL                  = 4236
+       SYS_SENDFILE64             = 4237
+       SYS_FUTEX                  = 4238
+       SYS_SCHED_SETAFFINITY      = 4239
+       SYS_SCHED_GETAFFINITY      = 4240
+       SYS_IO_SETUP               = 4241
+       SYS_IO_DESTROY             = 4242
+       SYS_IO_GETEVENTS           = 4243
+       SYS_IO_SUBMIT              = 4244
+       SYS_IO_CANCEL              = 4245
+       SYS_EXIT_GROUP             = 4246
+       SYS_LOOKUP_DCOOKIE         = 4247
+       SYS_EPOLL_CREATE           = 4248
+       SYS_EPOLL_CTL              = 4249
+       SYS_EPOLL_WAIT             = 4250
+       SYS_REMAP_FILE_PAGES       = 4251
+       SYS_SET_TID_ADDRESS        = 4252
+       SYS_RESTART_SYSCALL        = 4253
+       SYS_FADVISE64              = 4254
+       SYS_STATFS64               = 4255
+       SYS_FSTATFS64              = 4256
+       SYS_TIMER_CREATE           = 4257
+       SYS_TIMER_SETTIME          = 4258
+       SYS_TIMER_GETTIME          = 4259
+       SYS_TIMER_GETOVERRUN       = 4260
+       SYS_TIMER_DELETE           = 4261
+       SYS_CLOCK_SETTIME          = 4262
+       SYS_CLOCK_GETTIME          = 4263
+       SYS_CLOCK_GETRES           = 4264
+       SYS_CLOCK_NANOSLEEP        = 4265
+       SYS_TGKILL                 = 4266
+       SYS_UTIMES                 = 4267
+       SYS_MBIND                  = 4268
+       SYS_GET_MEMPOLICY          = 4269
+       SYS_SET_MEMPOLICY          = 4270
+       SYS_MQ_OPEN                = 4271
+       SYS_MQ_UNLINK              = 4272
+       SYS_MQ_TIMEDSEND           = 4273
+       SYS_MQ_TIMEDRECEIVE        = 4274
+       SYS_MQ_NOTIFY              = 4275
+       SYS_MQ_GETSETATTR          = 4276
+       SYS_VSERVER                = 4277
+       SYS_WAITID                 = 4278
+       SYS_ADD_KEY                = 4280
+       SYS_REQUEST_KEY            = 4281
+       SYS_KEYCTL                 = 4282
+       SYS_SET_THREAD_AREA        = 4283
+       SYS_INOTIFY_INIT           = 4284
+       SYS_INOTIFY_ADD_WATCH      = 4285
+       SYS_INOTIFY_RM_WATCH       = 4286
+       SYS_MIGRATE_PAGES          = 4287
+       SYS_OPENAT                 = 4288
+       SYS_MKDIRAT                = 4289
+       SYS_MKNODAT                = 4290
+       SYS_FCHOWNAT               = 4291
+       SYS_FUTIMESAT              = 4292
+       SYS_FSTATAT64              = 4293
+       SYS_UNLINKAT               = 4294
+       SYS_RENAMEAT               = 4295
+       SYS_LINKAT                 = 4296
+       SYS_SYMLINKAT              = 4297
+       SYS_READLINKAT             = 4298
+       SYS_FCHMODAT               = 4299
+       SYS_FACCESSAT              = 4300
+       SYS_PSELECT6               = 4301
+       SYS_PPOLL                  = 4302
+       SYS_UNSHARE                = 4303
+       SYS_SPLICE                 = 4304
+       SYS_SYNC_FILE_RANGE        = 4305
+       SYS_TEE                    = 4306
+       SYS_VMSPLICE               = 4307
+       SYS_MOVE_PAGES             = 4308
+       SYS_SET_ROBUST_LIST        = 4309
+       SYS_GET_ROBUST_LIST        = 4310
+       SYS_KEXEC_LOAD             = 4311
+       SYS_GETCPU                 = 4312
+       SYS_EPOLL_PWAIT            = 4313
+       SYS_IOPRIO_SET             = 4314
+       SYS_IOPRIO_GET             = 4315
+       SYS_UTIMENSAT              = 4316
+       SYS_SIGNALFD               = 4317
+       SYS_TIMERFD                = 4318
+       SYS_EVENTFD                = 4319
+       SYS_FALLOCATE              = 4320
+       SYS_TIMERFD_CREATE         = 4321
+       SYS_TIMERFD_GETTIME        = 4322
+       SYS_TIMERFD_SETTIME        = 4323
+       SYS_SIGNALFD4              = 4324
+       SYS_EVENTFD2               = 4325
+       SYS_EPOLL_CREATE1          = 4326
+       SYS_DUP3                   = 4327
+       SYS_PIPE2                  = 4328
+       SYS_INOTIFY_INIT1          = 4329
+       SYS_PREADV                 = 4330
+       SYS_PWRITEV                = 4331
+       SYS_RT_TGSIGQUEUEINFO      = 4332
+       SYS_PERF_EVENT_OPEN        = 4333
+       SYS_ACCEPT4                = 4334
+       SYS_RECVMMSG               = 4335
+       SYS_FANOTIFY_INIT          = 4336
+       SYS_FANOTIFY_MARK          = 4337
+       SYS_PRLIMIT64              = 4338
+       SYS_NAME_TO_HANDLE_AT      = 4339
+       SYS_OPEN_BY_HANDLE_AT      = 4340
+       SYS_CLOCK_ADJTIME          = 4341
+       SYS_SYNCFS                 = 4342
+       SYS_SENDMMSG               = 4343
+       SYS_SETNS                  = 4344
+       SYS_PROCESS_VM_READV       = 4345
+       SYS_PROCESS_VM_WRITEV      = 4346
+       SYS_KCMP                   = 4347
+       SYS_FINIT_MODULE           = 4348
+       SYS_SCHED_SETATTR          = 4349
+       SYS_SCHED_GETATTR          = 4350
+       SYS_RENAMEAT2              = 4351
+       SYS_SECCOMP                = 4352
+       SYS_GETRANDOM              = 4353
+       SYS_MEMFD_CREATE           = 4354
+       SYS_BPF                    = 4355
+       SYS_EXECVEAT               = 4356
+       SYS_USERFAULTFD            = 4357
+       SYS_MEMBARRIER             = 4358
+       SYS_MLOCK2                 = 4359
+       SYS_COPY_FILE_RANGE        = 4360
+       SYS_PREADV2                = 4361
+       SYS_PWRITEV2               = 4362
+       SYS_PKEY_MPROTECT          = 4363
+       SYS_PKEY_ALLOC             = 4364
+       SYS_PKEY_FREE              = 4365
+)
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..09db959
--- /dev/null
@@ -0,0 +1,334 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. 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
+       SYS_MLOCK2                 = 5319
+       SYS_COPY_FILE_RANGE        = 5320
+       SYS_PREADV2                = 5321
+       SYS_PWRITEV2               = 5322
+       SYS_PKEY_MPROTECT          = 5323
+       SYS_PKEY_ALLOC             = 5324
+       SYS_PKEY_FREE              = 5325
+)
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..d1b872a
--- /dev/null
@@ -0,0 +1,334 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. 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
+       SYS_MLOCK2                 = 5319
+       SYS_COPY_FILE_RANGE        = 5320
+       SYS_PREADV2                = 5321
+       SYS_PWRITEV2               = 5322
+       SYS_PKEY_MPROTECT          = 5323
+       SYS_PKEY_ALLOC             = 5324
+       SYS_PKEY_FREE              = 5325
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
new file mode 100644 (file)
index 0000000..82ba20f
--- /dev/null
@@ -0,0 +1,374 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mipsle,linux
+
+package unix
+
+const (
+       SYS_SYSCALL                = 4000
+       SYS_EXIT                   = 4001
+       SYS_FORK                   = 4002
+       SYS_READ                   = 4003
+       SYS_WRITE                  = 4004
+       SYS_OPEN                   = 4005
+       SYS_CLOSE                  = 4006
+       SYS_WAITPID                = 4007
+       SYS_CREAT                  = 4008
+       SYS_LINK                   = 4009
+       SYS_UNLINK                 = 4010
+       SYS_EXECVE                 = 4011
+       SYS_CHDIR                  = 4012
+       SYS_TIME                   = 4013
+       SYS_MKNOD                  = 4014
+       SYS_CHMOD                  = 4015
+       SYS_LCHOWN                 = 4016
+       SYS_BREAK                  = 4017
+       SYS_UNUSED18               = 4018
+       SYS_LSEEK                  = 4019
+       SYS_GETPID                 = 4020
+       SYS_MOUNT                  = 4021
+       SYS_UMOUNT                 = 4022
+       SYS_SETUID                 = 4023
+       SYS_GETUID                 = 4024
+       SYS_STIME                  = 4025
+       SYS_PTRACE                 = 4026
+       SYS_ALARM                  = 4027
+       SYS_UNUSED28               = 4028
+       SYS_PAUSE                  = 4029
+       SYS_UTIME                  = 4030
+       SYS_STTY                   = 4031
+       SYS_GTTY                   = 4032
+       SYS_ACCESS                 = 4033
+       SYS_NICE                   = 4034
+       SYS_FTIME                  = 4035
+       SYS_SYNC                   = 4036
+       SYS_KILL                   = 4037
+       SYS_RENAME                 = 4038
+       SYS_MKDIR                  = 4039
+       SYS_RMDIR                  = 4040
+       SYS_DUP                    = 4041
+       SYS_PIPE                   = 4042
+       SYS_TIMES                  = 4043
+       SYS_PROF                   = 4044
+       SYS_BRK                    = 4045
+       SYS_SETGID                 = 4046
+       SYS_GETGID                 = 4047
+       SYS_SIGNAL                 = 4048
+       SYS_GETEUID                = 4049
+       SYS_GETEGID                = 4050
+       SYS_ACCT                   = 4051
+       SYS_UMOUNT2                = 4052
+       SYS_LOCK                   = 4053
+       SYS_IOCTL                  = 4054
+       SYS_FCNTL                  = 4055
+       SYS_MPX                    = 4056
+       SYS_SETPGID                = 4057
+       SYS_ULIMIT                 = 4058
+       SYS_UNUSED59               = 4059
+       SYS_UMASK                  = 4060
+       SYS_CHROOT                 = 4061
+       SYS_USTAT                  = 4062
+       SYS_DUP2                   = 4063
+       SYS_GETPPID                = 4064
+       SYS_GETPGRP                = 4065
+       SYS_SETSID                 = 4066
+       SYS_SIGACTION              = 4067
+       SYS_SGETMASK               = 4068
+       SYS_SSETMASK               = 4069
+       SYS_SETREUID               = 4070
+       SYS_SETREGID               = 4071
+       SYS_SIGSUSPEND             = 4072
+       SYS_SIGPENDING             = 4073
+       SYS_SETHOSTNAME            = 4074
+       SYS_SETRLIMIT              = 4075
+       SYS_GETRLIMIT              = 4076
+       SYS_GETRUSAGE              = 4077
+       SYS_GETTIMEOFDAY           = 4078
+       SYS_SETTIMEOFDAY           = 4079
+       SYS_GETGROUPS              = 4080
+       SYS_SETGROUPS              = 4081
+       SYS_RESERVED82             = 4082
+       SYS_SYMLINK                = 4083
+       SYS_UNUSED84               = 4084
+       SYS_READLINK               = 4085
+       SYS_USELIB                 = 4086
+       SYS_SWAPON                 = 4087
+       SYS_REBOOT                 = 4088
+       SYS_READDIR                = 4089
+       SYS_MMAP                   = 4090
+       SYS_MUNMAP                 = 4091
+       SYS_TRUNCATE               = 4092
+       SYS_FTRUNCATE              = 4093
+       SYS_FCHMOD                 = 4094
+       SYS_FCHOWN                 = 4095
+       SYS_GETPRIORITY            = 4096
+       SYS_SETPRIORITY            = 4097
+       SYS_PROFIL                 = 4098
+       SYS_STATFS                 = 4099
+       SYS_FSTATFS                = 4100
+       SYS_IOPERM                 = 4101
+       SYS_SOCKETCALL             = 4102
+       SYS_SYSLOG                 = 4103
+       SYS_SETITIMER              = 4104
+       SYS_GETITIMER              = 4105
+       SYS_STAT                   = 4106
+       SYS_LSTAT                  = 4107
+       SYS_FSTAT                  = 4108
+       SYS_UNUSED109              = 4109
+       SYS_IOPL                   = 4110
+       SYS_VHANGUP                = 4111
+       SYS_IDLE                   = 4112
+       SYS_VM86                   = 4113
+       SYS_WAIT4                  = 4114
+       SYS_SWAPOFF                = 4115
+       SYS_SYSINFO                = 4116
+       SYS_IPC                    = 4117
+       SYS_FSYNC                  = 4118
+       SYS_SIGRETURN              = 4119
+       SYS_CLONE                  = 4120
+       SYS_SETDOMAINNAME          = 4121
+       SYS_UNAME                  = 4122
+       SYS_MODIFY_LDT             = 4123
+       SYS_ADJTIMEX               = 4124
+       SYS_MPROTECT               = 4125
+       SYS_SIGPROCMASK            = 4126
+       SYS_CREATE_MODULE          = 4127
+       SYS_INIT_MODULE            = 4128
+       SYS_DELETE_MODULE          = 4129
+       SYS_GET_KERNEL_SYMS        = 4130
+       SYS_QUOTACTL               = 4131
+       SYS_GETPGID                = 4132
+       SYS_FCHDIR                 = 4133
+       SYS_BDFLUSH                = 4134
+       SYS_SYSFS                  = 4135
+       SYS_PERSONALITY            = 4136
+       SYS_AFS_SYSCALL            = 4137
+       SYS_SETFSUID               = 4138
+       SYS_SETFSGID               = 4139
+       SYS__LLSEEK                = 4140
+       SYS_GETDENTS               = 4141
+       SYS__NEWSELECT             = 4142
+       SYS_FLOCK                  = 4143
+       SYS_MSYNC                  = 4144
+       SYS_READV                  = 4145
+       SYS_WRITEV                 = 4146
+       SYS_CACHEFLUSH             = 4147
+       SYS_CACHECTL               = 4148
+       SYS_SYSMIPS                = 4149
+       SYS_UNUSED150              = 4150
+       SYS_GETSID                 = 4151
+       SYS_FDATASYNC              = 4152
+       SYS__SYSCTL                = 4153
+       SYS_MLOCK                  = 4154
+       SYS_MUNLOCK                = 4155
+       SYS_MLOCKALL               = 4156
+       SYS_MUNLOCKALL             = 4157
+       SYS_SCHED_SETPARAM         = 4158
+       SYS_SCHED_GETPARAM         = 4159
+       SYS_SCHED_SETSCHEDULER     = 4160
+       SYS_SCHED_GETSCHEDULER     = 4161
+       SYS_SCHED_YIELD            = 4162
+       SYS_SCHED_GET_PRIORITY_MAX = 4163
+       SYS_SCHED_GET_PRIORITY_MIN = 4164
+       SYS_SCHED_RR_GET_INTERVAL  = 4165
+       SYS_NANOSLEEP              = 4166
+       SYS_MREMAP                 = 4167
+       SYS_ACCEPT                 = 4168
+       SYS_BIND                   = 4169
+       SYS_CONNECT                = 4170
+       SYS_GETPEERNAME            = 4171
+       SYS_GETSOCKNAME            = 4172
+       SYS_GETSOCKOPT             = 4173
+       SYS_LISTEN                 = 4174
+       SYS_RECV                   = 4175
+       SYS_RECVFROM               = 4176
+       SYS_RECVMSG                = 4177
+       SYS_SEND                   = 4178
+       SYS_SENDMSG                = 4179
+       SYS_SENDTO                 = 4180
+       SYS_SETSOCKOPT             = 4181
+       SYS_SHUTDOWN               = 4182
+       SYS_SOCKET                 = 4183
+       SYS_SOCKETPAIR             = 4184
+       SYS_SETRESUID              = 4185
+       SYS_GETRESUID              = 4186
+       SYS_QUERY_MODULE           = 4187
+       SYS_POLL                   = 4188
+       SYS_NFSSERVCTL             = 4189
+       SYS_SETRESGID              = 4190
+       SYS_GETRESGID              = 4191
+       SYS_PRCTL                  = 4192
+       SYS_RT_SIGRETURN           = 4193
+       SYS_RT_SIGACTION           = 4194
+       SYS_RT_SIGPROCMASK         = 4195
+       SYS_RT_SIGPENDING          = 4196
+       SYS_RT_SIGTIMEDWAIT        = 4197
+       SYS_RT_SIGQUEUEINFO        = 4198
+       SYS_RT_SIGSUSPEND          = 4199
+       SYS_PREAD64                = 4200
+       SYS_PWRITE64               = 4201
+       SYS_CHOWN                  = 4202
+       SYS_GETCWD                 = 4203
+       SYS_CAPGET                 = 4204
+       SYS_CAPSET                 = 4205
+       SYS_SIGALTSTACK            = 4206
+       SYS_SENDFILE               = 4207
+       SYS_GETPMSG                = 4208
+       SYS_PUTPMSG                = 4209
+       SYS_MMAP2                  = 4210
+       SYS_TRUNCATE64             = 4211
+       SYS_FTRUNCATE64            = 4212
+       SYS_STAT64                 = 4213
+       SYS_LSTAT64                = 4214
+       SYS_FSTAT64                = 4215
+       SYS_PIVOT_ROOT             = 4216
+       SYS_MINCORE                = 4217
+       SYS_MADVISE                = 4218
+       SYS_GETDENTS64             = 4219
+       SYS_FCNTL64                = 4220
+       SYS_RESERVED221            = 4221
+       SYS_GETTID                 = 4222
+       SYS_READAHEAD              = 4223
+       SYS_SETXATTR               = 4224
+       SYS_LSETXATTR              = 4225
+       SYS_FSETXATTR              = 4226
+       SYS_GETXATTR               = 4227
+       SYS_LGETXATTR              = 4228
+       SYS_FGETXATTR              = 4229
+       SYS_LISTXATTR              = 4230
+       SYS_LLISTXATTR             = 4231
+       SYS_FLISTXATTR             = 4232
+       SYS_REMOVEXATTR            = 4233
+       SYS_LREMOVEXATTR           = 4234
+       SYS_FREMOVEXATTR           = 4235
+       SYS_TKILL                  = 4236
+       SYS_SENDFILE64             = 4237
+       SYS_FUTEX                  = 4238
+       SYS_SCHED_SETAFFINITY      = 4239
+       SYS_SCHED_GETAFFINITY      = 4240
+       SYS_IO_SETUP               = 4241
+       SYS_IO_DESTROY             = 4242
+       SYS_IO_GETEVENTS           = 4243
+       SYS_IO_SUBMIT              = 4244
+       SYS_IO_CANCEL              = 4245
+       SYS_EXIT_GROUP             = 4246
+       SYS_LOOKUP_DCOOKIE         = 4247
+       SYS_EPOLL_CREATE           = 4248
+       SYS_EPOLL_CTL              = 4249
+       SYS_EPOLL_WAIT             = 4250
+       SYS_REMAP_FILE_PAGES       = 4251
+       SYS_SET_TID_ADDRESS        = 4252
+       SYS_RESTART_SYSCALL        = 4253
+       SYS_FADVISE64              = 4254
+       SYS_STATFS64               = 4255
+       SYS_FSTATFS64              = 4256
+       SYS_TIMER_CREATE           = 4257
+       SYS_TIMER_SETTIME          = 4258
+       SYS_TIMER_GETTIME          = 4259
+       SYS_TIMER_GETOVERRUN       = 4260
+       SYS_TIMER_DELETE           = 4261
+       SYS_CLOCK_SETTIME          = 4262
+       SYS_CLOCK_GETTIME          = 4263
+       SYS_CLOCK_GETRES           = 4264
+       SYS_CLOCK_NANOSLEEP        = 4265
+       SYS_TGKILL                 = 4266
+       SYS_UTIMES                 = 4267
+       SYS_MBIND                  = 4268
+       SYS_GET_MEMPOLICY          = 4269
+       SYS_SET_MEMPOLICY          = 4270
+       SYS_MQ_OPEN                = 4271
+       SYS_MQ_UNLINK              = 4272
+       SYS_MQ_TIMEDSEND           = 4273
+       SYS_MQ_TIMEDRECEIVE        = 4274
+       SYS_MQ_NOTIFY              = 4275
+       SYS_MQ_GETSETATTR          = 4276
+       SYS_VSERVER                = 4277
+       SYS_WAITID                 = 4278
+       SYS_ADD_KEY                = 4280
+       SYS_REQUEST_KEY            = 4281
+       SYS_KEYCTL                 = 4282
+       SYS_SET_THREAD_AREA        = 4283
+       SYS_INOTIFY_INIT           = 4284
+       SYS_INOTIFY_ADD_WATCH      = 4285
+       SYS_INOTIFY_RM_WATCH       = 4286
+       SYS_MIGRATE_PAGES          = 4287
+       SYS_OPENAT                 = 4288
+       SYS_MKDIRAT                = 4289
+       SYS_MKNODAT                = 4290
+       SYS_FCHOWNAT               = 4291
+       SYS_FUTIMESAT              = 4292
+       SYS_FSTATAT64              = 4293
+       SYS_UNLINKAT               = 4294
+       SYS_RENAMEAT               = 4295
+       SYS_LINKAT                 = 4296
+       SYS_SYMLINKAT              = 4297
+       SYS_READLINKAT             = 4298
+       SYS_FCHMODAT               = 4299
+       SYS_FACCESSAT              = 4300
+       SYS_PSELECT6               = 4301
+       SYS_PPOLL                  = 4302
+       SYS_UNSHARE                = 4303
+       SYS_SPLICE                 = 4304
+       SYS_SYNC_FILE_RANGE        = 4305
+       SYS_TEE                    = 4306
+       SYS_VMSPLICE               = 4307
+       SYS_MOVE_PAGES             = 4308
+       SYS_SET_ROBUST_LIST        = 4309
+       SYS_GET_ROBUST_LIST        = 4310
+       SYS_KEXEC_LOAD             = 4311
+       SYS_GETCPU                 = 4312
+       SYS_EPOLL_PWAIT            = 4313
+       SYS_IOPRIO_SET             = 4314
+       SYS_IOPRIO_GET             = 4315
+       SYS_UTIMENSAT              = 4316
+       SYS_SIGNALFD               = 4317
+       SYS_TIMERFD                = 4318
+       SYS_EVENTFD                = 4319
+       SYS_FALLOCATE              = 4320
+       SYS_TIMERFD_CREATE         = 4321
+       SYS_TIMERFD_GETTIME        = 4322
+       SYS_TIMERFD_SETTIME        = 4323
+       SYS_SIGNALFD4              = 4324
+       SYS_EVENTFD2               = 4325
+       SYS_EPOLL_CREATE1          = 4326
+       SYS_DUP3                   = 4327
+       SYS_PIPE2                  = 4328
+       SYS_INOTIFY_INIT1          = 4329
+       SYS_PREADV                 = 4330
+       SYS_PWRITEV                = 4331
+       SYS_RT_TGSIGQUEUEINFO      = 4332
+       SYS_PERF_EVENT_OPEN        = 4333
+       SYS_ACCEPT4                = 4334
+       SYS_RECVMMSG               = 4335
+       SYS_FANOTIFY_INIT          = 4336
+       SYS_FANOTIFY_MARK          = 4337
+       SYS_PRLIMIT64              = 4338
+       SYS_NAME_TO_HANDLE_AT      = 4339
+       SYS_OPEN_BY_HANDLE_AT      = 4340
+       SYS_CLOCK_ADJTIME          = 4341
+       SYS_SYNCFS                 = 4342
+       SYS_SENDMMSG               = 4343
+       SYS_SETNS                  = 4344
+       SYS_PROCESS_VM_READV       = 4345
+       SYS_PROCESS_VM_WRITEV      = 4346
+       SYS_KCMP                   = 4347
+       SYS_FINIT_MODULE           = 4348
+       SYS_SCHED_SETATTR          = 4349
+       SYS_SCHED_GETATTR          = 4350
+       SYS_RENAMEAT2              = 4351
+       SYS_SECCOMP                = 4352
+       SYS_GETRANDOM              = 4353
+       SYS_MEMFD_CREATE           = 4354
+       SYS_BPF                    = 4355
+       SYS_EXECVEAT               = 4356
+       SYS_USERFAULTFD            = 4357
+       SYS_MEMBARRIER             = 4358
+       SYS_MLOCK2                 = 4359
+       SYS_COPY_FILE_RANGE        = 4360
+       SYS_PREADV2                = 4361
+       SYS_PWRITEV2               = 4362
+       SYS_PKEY_MPROTECT          = 4363
+       SYS_PKEY_ALLOC             = 4364
+       SYS_PKEY_FREE              = 4365
+)
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..8944448
--- /dev/null
@@ -0,0 +1,369 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. 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
+       SYS_EXECVEAT               = 362
+       SYS_SWITCH_ENDIAN          = 363
+       SYS_USERFAULTFD            = 364
+       SYS_MEMBARRIER             = 365
+       SYS_MLOCK2                 = 378
+       SYS_COPY_FILE_RANGE        = 379
+       SYS_PREADV2                = 380
+       SYS_PWRITEV2               = 381
+       SYS_KEXEC_FILE_LOAD        = 382
+)
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..90a039b
--- /dev/null
@@ -0,0 +1,369 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. 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
+       SYS_SCHED_SETATTR          = 355
+       SYS_SCHED_GETATTR          = 356
+       SYS_RENAMEAT2              = 357
+       SYS_SECCOMP                = 358
+       SYS_GETRANDOM              = 359
+       SYS_MEMFD_CREATE           = 360
+       SYS_BPF                    = 361
+       SYS_EXECVEAT               = 362
+       SYS_SWITCH_ENDIAN          = 363
+       SYS_USERFAULTFD            = 364
+       SYS_MEMBARRIER             = 365
+       SYS_MLOCK2                 = 378
+       SYS_COPY_FILE_RANGE        = 379
+       SYS_PREADV2                = 380
+       SYS_PWRITEV2               = 381
+       SYS_KEXEC_FILE_LOAD        = 382
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
new file mode 100644 (file)
index 0000000..aab0cdb
--- /dev/null
@@ -0,0 +1,331 @@
+// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build s390x,linux
+
+package unix
+
+const (
+       SYS_EXIT                   = 1
+       SYS_FORK                   = 2
+       SYS_READ                   = 3
+       SYS_WRITE                  = 4
+       SYS_OPEN                   = 5
+       SYS_CLOSE                  = 6
+       SYS_RESTART_SYSCALL        = 7
+       SYS_CREAT                  = 8
+       SYS_LINK                   = 9
+       SYS_UNLINK                 = 10
+       SYS_EXECVE                 = 11
+       SYS_CHDIR                  = 12
+       SYS_MKNOD                  = 14
+       SYS_CHMOD                  = 15
+       SYS_LSEEK                  = 19
+       SYS_GETPID                 = 20
+       SYS_MOUNT                  = 21
+       SYS_UMOUNT                 = 22
+       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_SIGNAL                 = 48
+       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_SIGSUSPEND             = 72
+       SYS_SIGPENDING             = 73
+       SYS_SETHOSTNAME            = 74
+       SYS_SETRLIMIT              = 75
+       SYS_GETRUSAGE              = 77
+       SYS_GETTIMEOFDAY           = 78
+       SYS_SETTIMEOFDAY           = 79
+       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_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_LOOKUP_DCOOKIE         = 110
+       SYS_VHANGUP                = 111
+       SYS_IDLE                   = 112
+       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_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_GETDENTS               = 141
+       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_QUERY_MODULE           = 167
+       SYS_POLL                   = 168
+       SYS_NFSSERVCTL             = 169
+       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_GETCWD                 = 183
+       SYS_CAPGET                 = 184
+       SYS_CAPSET                 = 185
+       SYS_SIGALTSTACK            = 186
+       SYS_SENDFILE               = 187
+       SYS_GETPMSG                = 188
+       SYS_PUTPMSG                = 189
+       SYS_VFORK                  = 190
+       SYS_PIVOT_ROOT             = 217
+       SYS_MINCORE                = 218
+       SYS_MADVISE                = 219
+       SYS_GETDENTS64             = 220
+       SYS_READAHEAD              = 222
+       SYS_SETXATTR               = 224
+       SYS_LSETXATTR              = 225
+       SYS_FSETXATTR              = 226
+       SYS_GETXATTR               = 227
+       SYS_LGETXATTR              = 228
+       SYS_FGETXATTR              = 229
+       SYS_LISTXATTR              = 230
+       SYS_LLISTXATTR             = 231
+       SYS_FLISTXATTR             = 232
+       SYS_REMOVEXATTR            = 233
+       SYS_LREMOVEXATTR           = 234
+       SYS_FREMOVEXATTR           = 235
+       SYS_GETTID                 = 236
+       SYS_TKILL                  = 237
+       SYS_FUTEX                  = 238
+       SYS_SCHED_SETAFFINITY      = 239
+       SYS_SCHED_GETAFFINITY      = 240
+       SYS_TGKILL                 = 241
+       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_EPOLL_CREATE           = 249
+       SYS_EPOLL_CTL              = 250
+       SYS_EPOLL_WAIT             = 251
+       SYS_SET_TID_ADDRESS        = 252
+       SYS_FADVISE64              = 253
+       SYS_TIMER_CREATE           = 254
+       SYS_TIMER_SETTIME          = 255
+       SYS_TIMER_GETTIME          = 256
+       SYS_TIMER_GETOVERRUN       = 257
+       SYS_TIMER_DELETE           = 258
+       SYS_CLOCK_SETTIME          = 259
+       SYS_CLOCK_GETTIME          = 260
+       SYS_CLOCK_GETRES           = 261
+       SYS_CLOCK_NANOSLEEP        = 262
+       SYS_STATFS64               = 265
+       SYS_FSTATFS64              = 266
+       SYS_REMAP_FILE_PAGES       = 267
+       SYS_MBIND                  = 268
+       SYS_GET_MEMPOLICY          = 269
+       SYS_SET_MEMPOLICY          = 270
+       SYS_MQ_OPEN                = 271
+       SYS_MQ_UNLINK              = 272
+       SYS_MQ_TIMEDSEND           = 273
+       SYS_MQ_TIMEDRECEIVE        = 274
+       SYS_MQ_NOTIFY              = 275
+       SYS_MQ_GETSETATTR          = 276
+       SYS_KEXEC_LOAD             = 277
+       SYS_ADD_KEY                = 278
+       SYS_REQUEST_KEY            = 279
+       SYS_KEYCTL                 = 280
+       SYS_WAITID                 = 281
+       SYS_IOPRIO_SET             = 282
+       SYS_IOPRIO_GET             = 283
+       SYS_INOTIFY_INIT           = 284
+       SYS_INOTIFY_ADD_WATCH      = 285
+       SYS_INOTIFY_RM_WATCH       = 286
+       SYS_MIGRATE_PAGES          = 287
+       SYS_OPENAT                 = 288
+       SYS_MKDIRAT                = 289
+       SYS_MKNODAT                = 290
+       SYS_FCHOWNAT               = 291
+       SYS_FUTIMESAT              = 292
+       SYS_UNLINKAT               = 294
+       SYS_RENAMEAT               = 295
+       SYS_LINKAT                 = 296
+       SYS_SYMLINKAT              = 297
+       SYS_READLINKAT             = 298
+       SYS_FCHMODAT               = 299
+       SYS_FACCESSAT              = 300
+       SYS_PSELECT6               = 301
+       SYS_PPOLL                  = 302
+       SYS_UNSHARE                = 303
+       SYS_SET_ROBUST_LIST        = 304
+       SYS_GET_ROBUST_LIST        = 305
+       SYS_SPLICE                 = 306
+       SYS_SYNC_FILE_RANGE        = 307
+       SYS_TEE                    = 308
+       SYS_VMSPLICE               = 309
+       SYS_MOVE_PAGES             = 310
+       SYS_GETCPU                 = 311
+       SYS_EPOLL_PWAIT            = 312
+       SYS_UTIMES                 = 313
+       SYS_FALLOCATE              = 314
+       SYS_UTIMENSAT              = 315
+       SYS_SIGNALFD               = 316
+       SYS_TIMERFD                = 317
+       SYS_EVENTFD                = 318
+       SYS_TIMERFD_CREATE         = 319
+       SYS_TIMERFD_SETTIME        = 320
+       SYS_TIMERFD_GETTIME        = 321
+       SYS_SIGNALFD4              = 322
+       SYS_EVENTFD2               = 323
+       SYS_INOTIFY_INIT1          = 324
+       SYS_PIPE2                  = 325
+       SYS_DUP3                   = 326
+       SYS_EPOLL_CREATE1          = 327
+       SYS_PREADV                 = 328
+       SYS_PWRITEV                = 329
+       SYS_RT_TGSIGQUEUEINFO      = 330
+       SYS_PERF_EVENT_OPEN        = 331
+       SYS_FANOTIFY_INIT          = 332
+       SYS_FANOTIFY_MARK          = 333
+       SYS_PRLIMIT64              = 334
+       SYS_NAME_TO_HANDLE_AT      = 335
+       SYS_OPEN_BY_HANDLE_AT      = 336
+       SYS_CLOCK_ADJTIME          = 337
+       SYS_SYNCFS                 = 338
+       SYS_SETNS                  = 339
+       SYS_PROCESS_VM_READV       = 340
+       SYS_PROCESS_VM_WRITEV      = 341
+       SYS_S390_RUNTIME_INSTR     = 342
+       SYS_KCMP                   = 343
+       SYS_FINIT_MODULE           = 344
+       SYS_SCHED_SETATTR          = 345
+       SYS_SCHED_GETATTR          = 346
+       SYS_RENAMEAT2              = 347
+       SYS_SECCOMP                = 348
+       SYS_GETRANDOM              = 349
+       SYS_MEMFD_CREATE           = 350
+       SYS_BPF                    = 351
+       SYS_S390_PCI_MMIO_WRITE    = 352
+       SYS_S390_PCI_MMIO_READ     = 353
+       SYS_EXECVEAT               = 354
+       SYS_USERFAULTFD            = 355
+       SYS_MEMBARRIER             = 356
+       SYS_RECVMMSG               = 357
+       SYS_SENDMMSG               = 358
+       SYS_SOCKET                 = 359
+       SYS_SOCKETPAIR             = 360
+       SYS_BIND                   = 361
+       SYS_CONNECT                = 362
+       SYS_LISTEN                 = 363
+       SYS_ACCEPT4                = 364
+       SYS_GETSOCKOPT             = 365
+       SYS_SETSOCKOPT             = 366
+       SYS_GETSOCKNAME            = 367
+       SYS_GETPEERNAME            = 368
+       SYS_SENDTO                 = 369
+       SYS_SENDMSG                = 370
+       SYS_RECVFROM               = 371
+       SYS_RECVMSG                = 372
+       SYS_SHUTDOWN               = 373
+       SYS_MLOCK2                 = 374
+       SYS_COPY_FILE_RANGE        = 375
+       SYS_PREADV2                = 376
+       SYS_PWRITEV2               = 377
+       SYS_SELECT                 = 142
+       SYS_GETRLIMIT              = 191
+       SYS_LCHOWN                 = 198
+       SYS_GETUID                 = 199
+       SYS_GETGID                 = 200
+       SYS_GETEUID                = 201
+       SYS_GETEGID                = 202
+       SYS_SETREUID               = 203
+       SYS_SETREGID               = 204
+       SYS_GETGROUPS              = 205
+       SYS_SETGROUPS              = 206
+       SYS_FCHOWN                 = 207
+       SYS_SETRESUID              = 208
+       SYS_GETRESUID              = 209
+       SYS_SETRESGID              = 210
+       SYS_GETRESGID              = 211
+       SYS_CHOWN                  = 212
+       SYS_SETUID                 = 213
+       SYS_SETGID                 = 214
+       SYS_SETFSUID               = 215
+       SYS_SETFSGID               = 216
+       SYS_NEWFSTATAT             = 293
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
new file mode 100644 (file)
index 0000000..c9c129d
--- /dev/null
@@ -0,0 +1,348 @@
+// mksysnum_linux.pl -Ilinux/usr/include -m64 -D__arch64__ linux/usr/include/asm/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build sparc64,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_WAIT4                  = 7
+       SYS_CREAT                  = 8
+       SYS_LINK                   = 9
+       SYS_UNLINK                 = 10
+       SYS_EXECV                  = 11
+       SYS_CHDIR                  = 12
+       SYS_CHOWN                  = 13
+       SYS_MKNOD                  = 14
+       SYS_CHMOD                  = 15
+       SYS_LCHOWN                 = 16
+       SYS_BRK                    = 17
+       SYS_PERFCTR                = 18
+       SYS_LSEEK                  = 19
+       SYS_GETPID                 = 20
+       SYS_CAPGET                 = 21
+       SYS_CAPSET                 = 22
+       SYS_SETUID                 = 23
+       SYS_GETUID                 = 24
+       SYS_VMSPLICE               = 25
+       SYS_PTRACE                 = 26
+       SYS_ALARM                  = 27
+       SYS_SIGALTSTACK            = 28
+       SYS_PAUSE                  = 29
+       SYS_UTIME                  = 30
+       SYS_ACCESS                 = 33
+       SYS_NICE                   = 34
+       SYS_SYNC                   = 36
+       SYS_KILL                   = 37
+       SYS_STAT                   = 38
+       SYS_SENDFILE               = 39
+       SYS_LSTAT                  = 40
+       SYS_DUP                    = 41
+       SYS_PIPE                   = 42
+       SYS_TIMES                  = 43
+       SYS_UMOUNT2                = 45
+       SYS_SETGID                 = 46
+       SYS_GETGID                 = 47
+       SYS_SIGNAL                 = 48
+       SYS_GETEUID                = 49
+       SYS_GETEGID                = 50
+       SYS_ACCT                   = 51
+       SYS_MEMORY_ORDERING        = 52
+       SYS_IOCTL                  = 54
+       SYS_REBOOT                 = 55
+       SYS_SYMLINK                = 57
+       SYS_READLINK               = 58
+       SYS_EXECVE                 = 59
+       SYS_UMASK                  = 60
+       SYS_CHROOT                 = 61
+       SYS_FSTAT                  = 62
+       SYS_FSTAT64                = 63
+       SYS_GETPAGESIZE            = 64
+       SYS_MSYNC                  = 65
+       SYS_VFORK                  = 66
+       SYS_PREAD64                = 67
+       SYS_PWRITE64               = 68
+       SYS_MMAP                   = 71
+       SYS_MUNMAP                 = 73
+       SYS_MPROTECT               = 74
+       SYS_MADVISE                = 75
+       SYS_VHANGUP                = 76
+       SYS_MINCORE                = 78
+       SYS_GETGROUPS              = 79
+       SYS_SETGROUPS              = 80
+       SYS_GETPGRP                = 81
+       SYS_SETITIMER              = 83
+       SYS_SWAPON                 = 85
+       SYS_GETITIMER              = 86
+       SYS_SETHOSTNAME            = 88
+       SYS_DUP2                   = 90
+       SYS_FCNTL                  = 92
+       SYS_SELECT                 = 93
+       SYS_FSYNC                  = 95
+       SYS_SETPRIORITY            = 96
+       SYS_SOCKET                 = 97
+       SYS_CONNECT                = 98
+       SYS_ACCEPT                 = 99
+       SYS_GETPRIORITY            = 100
+       SYS_RT_SIGRETURN           = 101
+       SYS_RT_SIGACTION           = 102
+       SYS_RT_SIGPROCMASK         = 103
+       SYS_RT_SIGPENDING          = 104
+       SYS_RT_SIGTIMEDWAIT        = 105
+       SYS_RT_SIGQUEUEINFO        = 106
+       SYS_RT_SIGSUSPEND          = 107
+       SYS_SETRESUID              = 108
+       SYS_GETRESUID              = 109
+       SYS_SETRESGID              = 110
+       SYS_GETRESGID              = 111
+       SYS_RECVMSG                = 113
+       SYS_SENDMSG                = 114
+       SYS_GETTIMEOFDAY           = 116
+       SYS_GETRUSAGE              = 117
+       SYS_GETSOCKOPT             = 118
+       SYS_GETCWD                 = 119
+       SYS_READV                  = 120
+       SYS_WRITEV                 = 121
+       SYS_SETTIMEOFDAY           = 122
+       SYS_FCHOWN                 = 123
+       SYS_FCHMOD                 = 124
+       SYS_RECVFROM               = 125
+       SYS_SETREUID               = 126
+       SYS_SETREGID               = 127
+       SYS_RENAME                 = 128
+       SYS_TRUNCATE               = 129
+       SYS_FTRUNCATE              = 130
+       SYS_FLOCK                  = 131
+       SYS_LSTAT64                = 132
+       SYS_SENDTO                 = 133
+       SYS_SHUTDOWN               = 134
+       SYS_SOCKETPAIR             = 135
+       SYS_MKDIR                  = 136
+       SYS_RMDIR                  = 137
+       SYS_UTIMES                 = 138
+       SYS_STAT64                 = 139
+       SYS_SENDFILE64             = 140
+       SYS_GETPEERNAME            = 141
+       SYS_FUTEX                  = 142
+       SYS_GETTID                 = 143
+       SYS_GETRLIMIT              = 144
+       SYS_SETRLIMIT              = 145
+       SYS_PIVOT_ROOT             = 146
+       SYS_PRCTL                  = 147
+       SYS_PCICONFIG_READ         = 148
+       SYS_PCICONFIG_WRITE        = 149
+       SYS_GETSOCKNAME            = 150
+       SYS_INOTIFY_INIT           = 151
+       SYS_INOTIFY_ADD_WATCH      = 152
+       SYS_POLL                   = 153
+       SYS_GETDENTS64             = 154
+       SYS_INOTIFY_RM_WATCH       = 156
+       SYS_STATFS                 = 157
+       SYS_FSTATFS                = 158
+       SYS_UMOUNT                 = 159
+       SYS_SCHED_SET_AFFINITY     = 160
+       SYS_SCHED_GET_AFFINITY     = 161
+       SYS_GETDOMAINNAME          = 162
+       SYS_SETDOMAINNAME          = 163
+       SYS_UTRAP_INSTALL          = 164
+       SYS_QUOTACTL               = 165
+       SYS_SET_TID_ADDRESS        = 166
+       SYS_MOUNT                  = 167
+       SYS_USTAT                  = 168
+       SYS_SETXATTR               = 169
+       SYS_LSETXATTR              = 170
+       SYS_FSETXATTR              = 171
+       SYS_GETXATTR               = 172
+       SYS_LGETXATTR              = 173
+       SYS_GETDENTS               = 174
+       SYS_SETSID                 = 175
+       SYS_FCHDIR                 = 176
+       SYS_FGETXATTR              = 177
+       SYS_LISTXATTR              = 178
+       SYS_LLISTXATTR             = 179
+       SYS_FLISTXATTR             = 180
+       SYS_REMOVEXATTR            = 181
+       SYS_LREMOVEXATTR           = 182
+       SYS_SIGPENDING             = 183
+       SYS_QUERY_MODULE           = 184
+       SYS_SETPGID                = 185
+       SYS_FREMOVEXATTR           = 186
+       SYS_TKILL                  = 187
+       SYS_EXIT_GROUP             = 188
+       SYS_UNAME                  = 189
+       SYS_INIT_MODULE            = 190
+       SYS_PERSONALITY            = 191
+       SYS_REMAP_FILE_PAGES       = 192
+       SYS_EPOLL_CREATE           = 193
+       SYS_EPOLL_CTL              = 194
+       SYS_EPOLL_WAIT             = 195
+       SYS_IOPRIO_SET             = 196
+       SYS_GETPPID                = 197
+       SYS_SIGACTION              = 198
+       SYS_SGETMASK               = 199
+       SYS_SSETMASK               = 200
+       SYS_SIGSUSPEND             = 201
+       SYS_OLDLSTAT               = 202
+       SYS_USELIB                 = 203
+       SYS_READDIR                = 204
+       SYS_READAHEAD              = 205
+       SYS_SOCKETCALL             = 206
+       SYS_SYSLOG                 = 207
+       SYS_LOOKUP_DCOOKIE         = 208
+       SYS_FADVISE64              = 209
+       SYS_FADVISE64_64           = 210
+       SYS_TGKILL                 = 211
+       SYS_WAITPID                = 212
+       SYS_SWAPOFF                = 213
+       SYS_SYSINFO                = 214
+       SYS_IPC                    = 215
+       SYS_SIGRETURN              = 216
+       SYS_CLONE                  = 217
+       SYS_IOPRIO_GET             = 218
+       SYS_ADJTIMEX               = 219
+       SYS_SIGPROCMASK            = 220
+       SYS_CREATE_MODULE          = 221
+       SYS_DELETE_MODULE          = 222
+       SYS_GET_KERNEL_SYMS        = 223
+       SYS_GETPGID                = 224
+       SYS_BDFLUSH                = 225
+       SYS_SYSFS                  = 226
+       SYS_AFS_SYSCALL            = 227
+       SYS_SETFSUID               = 228
+       SYS_SETFSGID               = 229
+       SYS__NEWSELECT             = 230
+       SYS_SPLICE                 = 232
+       SYS_STIME                  = 233
+       SYS_STATFS64               = 234
+       SYS_FSTATFS64              = 235
+       SYS__LLSEEK                = 236
+       SYS_MLOCK                  = 237
+       SYS_MUNLOCK                = 238
+       SYS_MLOCKALL               = 239
+       SYS_MUNLOCKALL             = 240
+       SYS_SCHED_SETPARAM         = 241
+       SYS_SCHED_GETPARAM         = 242
+       SYS_SCHED_SETSCHEDULER     = 243
+       SYS_SCHED_GETSCHEDULER     = 244
+       SYS_SCHED_YIELD            = 245
+       SYS_SCHED_GET_PRIORITY_MAX = 246
+       SYS_SCHED_GET_PRIORITY_MIN = 247
+       SYS_SCHED_RR_GET_INTERVAL  = 248
+       SYS_NANOSLEEP              = 249
+       SYS_MREMAP                 = 250
+       SYS__SYSCTL                = 251
+       SYS_GETSID                 = 252
+       SYS_FDATASYNC              = 253
+       SYS_NFSSERVCTL             = 254
+       SYS_SYNC_FILE_RANGE        = 255
+       SYS_CLOCK_SETTIME          = 256
+       SYS_CLOCK_GETTIME          = 257
+       SYS_CLOCK_GETRES           = 258
+       SYS_CLOCK_NANOSLEEP        = 259
+       SYS_SCHED_GETAFFINITY      = 260
+       SYS_SCHED_SETAFFINITY      = 261
+       SYS_TIMER_SETTIME          = 262
+       SYS_TIMER_GETTIME          = 263
+       SYS_TIMER_GETOVERRUN       = 264
+       SYS_TIMER_DELETE           = 265
+       SYS_TIMER_CREATE           = 266
+       SYS_IO_SETUP               = 268
+       SYS_IO_DESTROY             = 269
+       SYS_IO_SUBMIT              = 270
+       SYS_IO_CANCEL              = 271
+       SYS_IO_GETEVENTS           = 272
+       SYS_MQ_OPEN                = 273
+       SYS_MQ_UNLINK              = 274
+       SYS_MQ_TIMEDSEND           = 275
+       SYS_MQ_TIMEDRECEIVE        = 276
+       SYS_MQ_NOTIFY              = 277
+       SYS_MQ_GETSETATTR          = 278
+       SYS_WAITID                 = 279
+       SYS_TEE                    = 280
+       SYS_ADD_KEY                = 281
+       SYS_REQUEST_KEY            = 282
+       SYS_KEYCTL                 = 283
+       SYS_OPENAT                 = 284
+       SYS_MKDIRAT                = 285
+       SYS_MKNODAT                = 286
+       SYS_FCHOWNAT               = 287
+       SYS_FUTIMESAT              = 288
+       SYS_FSTATAT64              = 289
+       SYS_UNLINKAT               = 290
+       SYS_RENAMEAT               = 291
+       SYS_LINKAT                 = 292
+       SYS_SYMLINKAT              = 293
+       SYS_READLINKAT             = 294
+       SYS_FCHMODAT               = 295
+       SYS_FACCESSAT              = 296
+       SYS_PSELECT6               = 297
+       SYS_PPOLL                  = 298
+       SYS_UNSHARE                = 299
+       SYS_SET_ROBUST_LIST        = 300
+       SYS_GET_ROBUST_LIST        = 301
+       SYS_MIGRATE_PAGES          = 302
+       SYS_MBIND                  = 303
+       SYS_GET_MEMPOLICY          = 304
+       SYS_SET_MEMPOLICY          = 305
+       SYS_KEXEC_LOAD             = 306
+       SYS_MOVE_PAGES             = 307
+       SYS_GETCPU                 = 308
+       SYS_EPOLL_PWAIT            = 309
+       SYS_UTIMENSAT              = 310
+       SYS_SIGNALFD               = 311
+       SYS_TIMERFD_CREATE         = 312
+       SYS_EVENTFD                = 313
+       SYS_FALLOCATE              = 314
+       SYS_TIMERFD_SETTIME        = 315
+       SYS_TIMERFD_GETTIME        = 316
+       SYS_SIGNALFD4              = 317
+       SYS_EVENTFD2               = 318
+       SYS_EPOLL_CREATE1          = 319
+       SYS_DUP3                   = 320
+       SYS_PIPE2                  = 321
+       SYS_INOTIFY_INIT1          = 322
+       SYS_ACCEPT4                = 323
+       SYS_PREADV                 = 324
+       SYS_PWRITEV                = 325
+       SYS_RT_TGSIGQUEUEINFO      = 326
+       SYS_PERF_EVENT_OPEN        = 327
+       SYS_RECVMMSG               = 328
+       SYS_FANOTIFY_INIT          = 329
+       SYS_FANOTIFY_MARK          = 330
+       SYS_PRLIMIT64              = 331
+       SYS_NAME_TO_HANDLE_AT      = 332
+       SYS_OPEN_BY_HANDLE_AT      = 333
+       SYS_CLOCK_ADJTIME          = 334
+       SYS_SYNCFS                 = 335
+       SYS_SENDMMSG               = 336
+       SYS_SETNS                  = 337
+       SYS_PROCESS_VM_READV       = 338
+       SYS_PROCESS_VM_WRITEV      = 339
+       SYS_KERN_FEATURES          = 340
+       SYS_KCMP                   = 341
+       SYS_FINIT_MODULE           = 342
+       SYS_SCHED_SETATTR          = 343
+       SYS_SCHED_GETATTR          = 344
+       SYS_RENAMEAT2              = 345
+       SYS_SECCOMP                = 346
+       SYS_GETRANDOM              = 347
+       SYS_MEMFD_CREATE           = 348
+       SYS_BPF                    = 349
+       SYS_EXECVEAT               = 350
+       SYS_MEMBARRIER             = 351
+       SYS_USERFAULTFD            = 352
+       SYS_BIND                   = 353
+       SYS_LISTEN                 = 354
+       SYS_SETSOCKOPT             = 355
+       SYS_MLOCK2                 = 356
+       SYS_COPY_FILE_RANGE        = 357
+       SYS_PREADV2                = 358
+       SYS_PWRITEV2               = 359
+)
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_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
new file mode 100644 (file)
index 0000000..e585c89
--- /dev/null
@@ -0,0 +1,443 @@
+// cgo -godefs types_dragonfly.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +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
+       Oqdrops    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..7333755
--- /dev/null
@@ -0,0 +1,668 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build 386,linux
+
+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 FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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
+}
+
+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_REMOVEDIR        = 0x200
+       AT_SYMLINK_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [32]uint32
+}
+
+const _SC_PAGESIZE = 0x1e
+
+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..5807e17
--- /dev/null
@@ -0,0 +1,686 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build amd64,linux
+
+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
+       _       [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 FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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 {
+       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_REMOVEDIR        = 0x200
+       AT_SYMLINK_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [16]uint64
+}
+
+const _SC_PAGESIZE = 0x1e
+
+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..db7c8bf
--- /dev/null
@@ -0,0 +1,657 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build arm,linux
+
+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 FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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
+}
+
+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_REMOVEDIR        = 0x200
+       AT_SYMLINK_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [32]uint32
+}
+
+const _SC_PAGESIZE = 0x1e
+
+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..19cca4f
--- /dev/null
@@ -0,0 +1,665 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build arm64,linux
+
+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
+       _       [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
+}
+
+type FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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   [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
+       PadFd  int32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [16]uint64
+}
+
+const _SC_PAGESIZE = 0x1e
+
+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_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
new file mode 100644 (file)
index 0000000..d04ca4c
--- /dev/null
@@ -0,0 +1,666 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mips,linux
+
+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     uint32
+       Pad1    [3]int32
+       Ino     uint64
+       Mode    uint32
+       Nlink   uint32
+       Uid     uint32
+       Gid     uint32
+       Rdev    uint32
+       Pad2    [3]int32
+       Size    int64
+       Atim    Timespec
+       Mtim    Timespec
+       Ctim    Timespec
+       Blksize int32
+       Pad4    int32
+       Blocks  int64
+       Pad5    [14]int32
+}
+
+type Statfs_t struct {
+       Type      int32
+       Bsize     int32
+       Frsize    int32
+       Pad_cgo_0 [4]byte
+       Blocks    uint64
+       Bfree     uint64
+       Files     uint64
+       Ffree     uint64
+       Bavail    uint64
+       Fsid      Fsid
+       Namelen   int32
+       Flags     int32
+       Spare     [5]int32
+       Pad_cgo_1 [4]byte
+}
+
+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 FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       Regs        [109]uint32
+       U_tsize     uint32
+       U_dsize     uint32
+       U_ssize     uint32
+       Start_code  uint32
+       Start_data  uint32
+       Start_stack uint32
+       Signal      int32
+       U_ar0       *byte
+       Magic       uint32
+       U_comm      [32]int8
+}
+
+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
+       PadFd  int32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [32]uint32
+}
+
+const _SC_PAGESIZE = 0x1e
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Line   uint8
+       Cc     [23]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..60b83a1
--- /dev/null
@@ -0,0 +1,671 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mips64,linux
+
+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]uint32
+       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
+}
+
+type FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [16]uint64
+}
+
+const _SC_PAGESIZE = 0x1e
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Line   uint8
+       Cc     [23]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
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..9e9c680
--- /dev/null
@@ -0,0 +1,671 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mips64le,linux
+
+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]uint32
+       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
+}
+
+type FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [16]uint64
+}
+
+const _SC_PAGESIZE = 0x1e
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Line   uint8
+       Cc     [23]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
new file mode 100644 (file)
index 0000000..482b48f
--- /dev/null
@@ -0,0 +1,666 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build mipsle,linux
+
+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     uint32
+       Pad1    [3]int32
+       Ino     uint64
+       Mode    uint32
+       Nlink   uint32
+       Uid     uint32
+       Gid     uint32
+       Rdev    uint32
+       Pad2    [3]int32
+       Size    int64
+       Atim    Timespec
+       Mtim    Timespec
+       Ctim    Timespec
+       Blksize int32
+       Pad4    int32
+       Blocks  int64
+       Pad5    [14]int32
+}
+
+type Statfs_t struct {
+       Type      int32
+       Bsize     int32
+       Frsize    int32
+       Pad_cgo_0 [4]byte
+       Blocks    uint64
+       Bfree     uint64
+       Files     uint64
+       Ffree     uint64
+       Bavail    uint64
+       Fsid      Fsid
+       Namelen   int32
+       Flags     int32
+       Spare     [5]int32
+       Pad_cgo_1 [4]byte
+}
+
+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 FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       Regs        [109]uint32
+       U_tsize     uint32
+       U_dsize     uint32
+       U_ssize     uint32
+       Start_code  uint32
+       Start_data  uint32
+       Start_stack uint32
+       Signal      int32
+       U_ar0       *byte
+       Magic       uint32
+       U_comm      [32]int8
+}
+
+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
+       PadFd  int32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [32]uint32
+}
+
+const _SC_PAGESIZE = 0x1e
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Line   uint8
+       Cc     [23]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
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..4410abb
--- /dev/null
@@ -0,0 +1,675 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build ppc64,linux
+
+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
+       _       uint64
+       _       uint64
+       _       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
+}
+
+type FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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 {
+       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
+       X_padFd int32
+       Fd      int32
+       Pad     int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [16]uint64
+}
+
+const _SC_PAGESIZE = 0x1e
+
+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..10947c3
--- /dev/null
@@ -0,0 +1,675 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build ppc64le,linux
+
+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
+       _       uint64
+       _       uint64
+       _       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
+}
+
+type FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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 {
+       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
+       X_padFd int32
+       Fd      int32
+       Pad     int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [16]uint64
+}
+
+const _SC_PAGESIZE = 0x1e
+
+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_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
new file mode 100644 (file)
index 0000000..57dbb36
--- /dev/null
@@ -0,0 +1,692 @@
+// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go
+// Code generated by the command above; see README.md. DO NOT EDIT.
+
+// +build s390x,linux
+
+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
+       _         [4]byte
+       Offset    int64
+       Freq      int64
+       Maxerror  int64
+       Esterror  int64
+       Status    int32
+       _         [4]byte
+       Constant  int64
+       Precision int64
+       Tolerance int64
+       Time      Timeval
+       Tick      int64
+       Ppsfreq   int64
+       Jitter    int64
+       Shift     int32
+       _         [4]byte
+       Stabil    int64
+       Jitcnt    int64
+       Calcnt    int64
+       Errcnt    int64
+       Stbcnt    int64
+       Tai       int32
+       _         [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
+       _       int32
+       Rdev    uint64
+       Size    int64
+       Atim    Timespec
+       Mtim    Timespec
+       Ctim    Timespec
+       Blksize int64
+       Blocks  int64
+       _       [3]int64
+}
+
+type Statfs_t struct {
+       Type    uint32
+       Bsize   uint32
+       Blocks  uint64
+       Bfree   uint64
+       Bavail  uint64
+       Files   uint64
+       Ffree   uint64
+       Fsid    Fsid
+       Namelen uint32
+       Frsize  uint32
+       Flags   uint32
+       Spare   [4]uint32
+       _       [4]byte
+}
+
+type Dirent struct {
+       Ino    uint64
+       Off    int64
+       Reclen uint16
+       Type   uint8
+       Name   [256]int8
+       _      [5]byte
+}
+
+type Fsid struct {
+       _ [2]int32
+}
+
+type Flock_t struct {
+       Type   int16
+       Whence int16
+       _      [4]byte
+       Start  int64
+       Len    int64
+       Pid    int32
+       _      [4]byte
+}
+
+type FscryptPolicy struct {
+       Version                   uint8
+       Contents_encryption_mode  uint8
+       Filenames_encryption_mode uint8
+       Flags                     uint8
+       Master_key_descriptor     [8]uint8
+}
+
+type FscryptKey struct {
+       Mode uint32
+       Raw  [64]uint8
+       Size uint32
+}
+
+const (
+       FADV_NORMAL     = 0x0
+       FADV_RANDOM     = 0x1
+       FADV_SEQUENTIAL = 0x2
+       FADV_WILLNEED   = 0x3
+       FADV_DONTNEED   = 0x6
+       FADV_NOREUSE    = 0x7
+)
+
+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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family  uint16
+       _       [2]byte
+       Ifindex int32
+       Addr    [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+       _          [4]byte
+       Iov        *Iovec
+       Iovlen     uint64
+       Control    *byte
+       Controllen uint64
+       Flags      int32
+       _          [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
+       _              [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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2b
+       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
+       _      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
+       _      [6]byte
+       Filter *SockFilter
+}
+
+type InotifyEvent struct {
+       Wd     int32
+       Mask   uint32
+       Cookie uint32
+       Len    uint32
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       Psw                      PtracePsw
+       Gprs                     [16]uint64
+       Acrs                     [16]uint32
+       Orig_gpr2                uint64
+       Fp_regs                  PtraceFpregs
+       Per_info                 PtracePer
+       Ieee_instruction_pointer uint64
+}
+
+type PtracePsw struct {
+       Mask uint64
+       Addr uint64
+}
+
+type PtraceFpregs struct {
+       Fpc  uint32
+       _    [4]byte
+       Fprs [16]float64
+}
+
+type PtracePer struct {
+       _             [0]uint64
+       _             [24]byte
+       _             [8]byte
+       Starting_addr uint64
+       Ending_addr   uint64
+       Perc_atmid    uint16
+       _             [6]byte
+       Address       uint64
+       Access_id     uint8
+       _             [7]byte
+}
+
+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
+       _         [4]byte
+       Totalhigh uint64
+       Freehigh  uint64
+       Unit      uint32
+       _         [0]int8
+       _         [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
+       _      [4]byte
+       Tinode uint64
+       Fname  [6]int8
+       Fpack  [6]int8
+       _      [4]byte
+}
+
+type EpollEvent struct {
+       Events uint32
+       _      int32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x2000
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       _ [16]uint64
+}
+
+const _SC_PAGESIZE = 0x1e
+
+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_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
new file mode 100644 (file)
index 0000000..22bdab9
--- /dev/null
@@ -0,0 +1,666 @@
+// +build sparc64,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go | go run mkpost.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      int32
+       Pad_cgo_0 [4]byte
+}
+
+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
+       X__pad1            uint16
+       Pad_cgo_0          [6]byte
+       Ino                uint64
+       Mode               uint32
+       Nlink              uint32
+       Uid                uint32
+       Gid                uint32
+       Rdev               uint64
+       X__pad2            uint16
+       Pad_cgo_1          [6]byte
+       Size               int64
+       Blksize            int64
+       Blocks             int64
+       Atim               Timespec
+       Mtim               Timespec
+       Ctim               Timespec
+       X__glibc_reserved4 uint64
+       X__glibc_reserved5 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]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
+       X__glibc_reserved int16
+       Pad_cgo_1         [2]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 RawSockaddrHCI struct {
+       Family  uint16
+       Dev     uint16
+       Channel uint16
+}
+
+type RawSockaddrCAN struct {
+       Family    uint16
+       Pad_cgo_0 [2]byte
+       Ifindex   int32
+       Addr      [8]byte
+}
+
+type RawSockaddrALG struct {
+       Family uint16
+       Type   [14]uint8
+       Feat   uint32
+       Mask   uint32
+       Name   [64]uint8
+}
+
+type RawSockaddrVM struct {
+       Family    uint16
+       Reserved1 uint16
+       Port      uint32
+       Cid       uint32
+       Zero      [4]uint8
+}
+
+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
+       SizeofSockaddrHCI       = 0x6
+       SizeofSockaddrCAN       = 0x10
+       SizeofSockaddrALG       = 0x58
+       SizeofSockaddrVM        = 0x10
+       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            = 0x2a
+       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   [16]uint64
+       Tstate uint64
+       Tpc    uint64
+       Tnpc   uint64
+       Y      uint32
+       Magic  uint32
+}
+
+type ptracePsw struct {
+}
+
+type ptraceFpregs struct {
+}
+
+type ptracePer struct {
+}
+
+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
+       X_padFd int32
+       Fd      int32
+       Pad     int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_FOLLOW   = 0x400
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type PollFd struct {
+       Fd      int32
+       Events  int16
+       Revents int16
+}
+
+const (
+       POLLIN    = 0x1
+       POLLPRI   = 0x2
+       POLLOUT   = 0x4
+       POLLRDHUP = 0x800
+       POLLERR   = 0x8
+       POLLHUP   = 0x10
+       POLLNVAL  = 0x20
+)
+
+type Sigset_t struct {
+       X__val [16]uint64
+}
+
+const _SC_PAGESIZE = 0x1e
+
+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_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..02777e4
--- /dev/null
@@ -0,0 +1,423 @@
+// +build amd64,solaris
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_solaris.go | go run mkpost.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+       PathMax        = 0x400
+       MaxHostNameLen = 0x100
+)
+
+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/golang.org/x/sys/windows/asm_windows_386.s b/vendor/golang.org/x/sys/windows/asm_windows_386.s
new file mode 100644 (file)
index 0000000..1c20dd2
--- /dev/null
@@ -0,0 +1,13 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//
+// System calls for 386, Windows are implemented in runtime/syscall_windows.goc
+//
+
+TEXT ·getprocaddress(SB), 7, $0-8
+       JMP     syscall·getprocaddress(SB)
+
+TEXT ·loadlibrary(SB), 7, $0-4
+       JMP     syscall·loadlibrary(SB)
diff --git a/vendor/golang.org/x/sys/windows/asm_windows_amd64.s b/vendor/golang.org/x/sys/windows/asm_windows_amd64.s
new file mode 100644 (file)
index 0000000..4d025ab
--- /dev/null
@@ -0,0 +1,13 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//
+// System calls for amd64, Windows are implemented in runtime/syscall_windows.goc
+//
+
+TEXT ·getprocaddress(SB), 7, $0-32
+       JMP     syscall·getprocaddress(SB)
+
+TEXT ·loadlibrary(SB), 7, $0-8
+       JMP     syscall·loadlibrary(SB)
diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go
new file mode 100644 (file)
index 0000000..0f62046
--- /dev/null
@@ -0,0 +1,378 @@
+// 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.
+
+package windows
+
+import (
+       "sync"
+       "sync/atomic"
+       "syscall"
+       "unsafe"
+)
+
+// DLLError describes reasons for DLL load failures.
+type DLLError struct {
+       Err     error
+       ObjName string
+       Msg     string
+}
+
+func (e *DLLError) Error() string { return e.Msg }
+
+// Implemented in runtime/syscall_windows.goc; we provide jumps to them in our assembly file.
+func loadlibrary(filename *uint16) (handle uintptr, err syscall.Errno)
+func getprocaddress(handle uintptr, procname *uint8) (proc uintptr, err syscall.Errno)
+
+// A DLL implements access to a single DLL.
+type DLL struct {
+       Name   string
+       Handle Handle
+}
+
+// LoadDLL loads DLL file into memory.
+//
+// Warning: using LoadDLL without an absolute path name is subject to
+// DLL preloading attacks. To safely load a system DLL, use LazyDLL
+// with System set to true, or use LoadLibraryEx directly.
+func LoadDLL(name string) (dll *DLL, err error) {
+       namep, err := UTF16PtrFromString(name)
+       if err != nil {
+               return nil, err
+       }
+       h, e := loadlibrary(namep)
+       if e != 0 {
+               return nil, &DLLError{
+                       Err:     e,
+                       ObjName: name,
+                       Msg:     "Failed to load " + name + ": " + e.Error(),
+               }
+       }
+       d := &DLL{
+               Name:   name,
+               Handle: Handle(h),
+       }
+       return d, nil
+}
+
+// MustLoadDLL is like LoadDLL but panics if load operation failes.
+func MustLoadDLL(name string) *DLL {
+       d, e := LoadDLL(name)
+       if e != nil {
+               panic(e)
+       }
+       return d
+}
+
+// FindProc searches DLL d for procedure named name and returns *Proc
+// if found. It returns an error if search fails.
+func (d *DLL) FindProc(name string) (proc *Proc, err error) {
+       namep, err := BytePtrFromString(name)
+       if err != nil {
+               return nil, err
+       }
+       a, e := getprocaddress(uintptr(d.Handle), namep)
+       if e != 0 {
+               return nil, &DLLError{
+                       Err:     e,
+                       ObjName: name,
+                       Msg:     "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(),
+               }
+       }
+       p := &Proc{
+               Dll:  d,
+               Name: name,
+               addr: a,
+       }
+       return p, nil
+}
+
+// MustFindProc is like FindProc but panics if search fails.
+func (d *DLL) MustFindProc(name string) *Proc {
+       p, e := d.FindProc(name)
+       if e != nil {
+               panic(e)
+       }
+       return p
+}
+
+// Release unloads DLL d from memory.
+func (d *DLL) Release() (err error) {
+       return FreeLibrary(d.Handle)
+}
+
+// A Proc implements access to a procedure inside a DLL.
+type Proc struct {
+       Dll  *DLL
+       Name string
+       addr uintptr
+}
+
+// Addr returns the address of the procedure represented by p.
+// The return value can be passed to Syscall to run the procedure.
+func (p *Proc) Addr() uintptr {
+       return p.addr
+}
+
+//go:uintptrescapes
+
+// Call executes procedure p with arguments a. It will panic, if more then 15 arguments
+// are supplied.
+//
+// The returned error is always non-nil, constructed from the result of GetLastError.
+// Callers must inspect the primary return value to decide whether an error occurred
+// (according to the semantics of the specific function being called) before consulting
+// the error. The error will be guaranteed to contain windows.Errno.
+func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
+       switch len(a) {
+       case 0:
+               return syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0)
+       case 1:
+               return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0)
+       case 2:
+               return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0)
+       case 3:
+               return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2])
+       case 4:
+               return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0)
+       case 5:
+               return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0)
+       case 6:
+               return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5])
+       case 7:
+               return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0)
+       case 8:
+               return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0)
+       case 9:
+               return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8])
+       case 10:
+               return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0)
+       case 11:
+               return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0)
+       case 12:
+               return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11])
+       case 13:
+               return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0)
+       case 14:
+               return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0)
+       case 15:
+               return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14])
+       default:
+               panic("Call " + p.Name + " with too many arguments " + itoa(len(a)) + ".")
+       }
+       return
+}
+
+// A LazyDLL implements access to a single DLL.
+// It will delay the load of the DLL until the first
+// call to its Handle method or to one of its
+// LazyProc's Addr method.
+type LazyDLL struct {
+       Name string
+
+       // System determines whether the DLL must be loaded from the
+       // Windows System directory, bypassing the normal DLL search
+       // path.
+       System bool
+
+       mu  sync.Mutex
+       dll *DLL // non nil once DLL is loaded
+}
+
+// Load loads DLL file d.Name into memory. It returns an error if fails.
+// Load will not try to load DLL, if it is already loaded into memory.
+func (d *LazyDLL) Load() error {
+       // Non-racy version of:
+       // if d.dll != nil {
+       if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil {
+               return nil
+       }
+       d.mu.Lock()
+       defer d.mu.Unlock()
+       if d.dll != nil {
+               return nil
+       }
+
+       // kernel32.dll is special, since it's where LoadLibraryEx comes from.
+       // The kernel already special-cases its name, so it's always
+       // loaded from system32.
+       var dll *DLL
+       var err error
+       if d.Name == "kernel32.dll" {
+               dll, err = LoadDLL(d.Name)
+       } else {
+               dll, err = loadLibraryEx(d.Name, d.System)
+       }
+       if err != nil {
+               return err
+       }
+
+       // Non-racy version of:
+       // d.dll = dll
+       atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll))
+       return nil
+}
+
+// mustLoad is like Load but panics if search fails.
+func (d *LazyDLL) mustLoad() {
+       e := d.Load()
+       if e != nil {
+               panic(e)
+       }
+}
+
+// Handle returns d's module handle.
+func (d *LazyDLL) Handle() uintptr {
+       d.mustLoad()
+       return uintptr(d.dll.Handle)
+}
+
+// NewProc returns a LazyProc for accessing the named procedure in the DLL d.
+func (d *LazyDLL) NewProc(name string) *LazyProc {
+       return &LazyProc{l: d, Name: name}
+}
+
+// NewLazyDLL creates new LazyDLL associated with DLL file.
+func NewLazyDLL(name string) *LazyDLL {
+       return &LazyDLL{Name: name}
+}
+
+// NewLazySystemDLL is like NewLazyDLL, but will only
+// search Windows System directory for the DLL if name is
+// a base name (like "advapi32.dll").
+func NewLazySystemDLL(name string) *LazyDLL {
+       return &LazyDLL{Name: name, System: true}
+}
+
+// A LazyProc implements access to a procedure inside a LazyDLL.
+// It delays the lookup until the Addr method is called.
+type LazyProc struct {
+       Name string
+
+       mu   sync.Mutex
+       l    *LazyDLL
+       proc *Proc
+}
+
+// Find searches DLL for procedure named p.Name. It returns
+// an error if search fails. Find will not search procedure,
+// if it is already found and loaded into memory.
+func (p *LazyProc) Find() error {
+       // Non-racy version of:
+       // if p.proc == nil {
+       if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil {
+               p.mu.Lock()
+               defer p.mu.Unlock()
+               if p.proc == nil {
+                       e := p.l.Load()
+                       if e != nil {
+                               return e
+                       }
+                       proc, e := p.l.dll.FindProc(p.Name)
+                       if e != nil {
+                               return e
+                       }
+                       // Non-racy version of:
+                       // p.proc = proc
+                       atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc))
+               }
+       }
+       return nil
+}
+
+// mustFind is like Find but panics if search fails.
+func (p *LazyProc) mustFind() {
+       e := p.Find()
+       if e != nil {
+               panic(e)
+       }
+}
+
+// Addr returns the address of the procedure represented by p.
+// The return value can be passed to Syscall to run the procedure.
+func (p *LazyProc) Addr() uintptr {
+       p.mustFind()
+       return p.proc.Addr()
+}
+
+//go:uintptrescapes
+
+// Call executes procedure p with arguments a. It will panic, if more then 15 arguments
+// are supplied.
+//
+// The returned error is always non-nil, constructed from the result of GetLastError.
+// Callers must inspect the primary return value to decide whether an error occurred
+// (according to the semantics of the specific function being called) before consulting
+// the error. The error will be guaranteed to contain windows.Errno.
+func (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
+       p.mustFind()
+       return p.proc.Call(a...)
+}
+
+var canDoSearchSystem32Once struct {
+       sync.Once
+       v bool
+}
+
+func initCanDoSearchSystem32() {
+       // https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says:
+       // "Windows 7, Windows Server 2008 R2, Windows Vista, and Windows
+       // Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on
+       // systems that have KB2533623 installed. To determine whether the
+       // flags are available, use GetProcAddress to get the address of the
+       // AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories
+       // function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_*
+       // flags can be used with LoadLibraryEx."
+       canDoSearchSystem32Once.v = (modkernel32.NewProc("AddDllDirectory").Find() == nil)
+}
+
+func canDoSearchSystem32() bool {
+       canDoSearchSystem32Once.Do(initCanDoSearchSystem32)
+       return canDoSearchSystem32Once.v
+}
+
+func isBaseName(name string) bool {
+       for _, c := range name {
+               if c == ':' || c == '/' || c == '\\' {
+                       return false
+               }
+       }
+       return true
+}
+
+// loadLibraryEx wraps the Windows LoadLibraryEx function.
+//
+// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx
+//
+// If name is not an absolute path, LoadLibraryEx searches for the DLL
+// in a variety of automatic locations unless constrained by flags.
+// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx
+func loadLibraryEx(name string, system bool) (*DLL, error) {
+       loadDLL := name
+       var flags uintptr
+       if system {
+               if canDoSearchSystem32() {
+                       const LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800
+                       flags = LOAD_LIBRARY_SEARCH_SYSTEM32
+               } else if isBaseName(name) {
+                       // WindowsXP or unpatched Windows machine
+                       // trying to load "foo.dll" out of the system
+                       // folder, but LoadLibraryEx doesn't support
+                       // that yet on their system, so emulate it.
+                       windir, _ := Getenv("WINDIR") // old var; apparently works on XP
+                       if windir == "" {
+                               return nil, errString("%WINDIR% not defined")
+                       }
+                       loadDLL = windir + "\\System32\\" + name
+               }
+       }
+       h, err := LoadLibraryEx(loadDLL, 0, flags)
+       if err != nil {
+               return nil, err
+       }
+       return &DLL{Name: name, Handle: h}, nil
+}
+
+type errString string
+
+func (s errString) Error() string { return string(s) }
diff --git a/vendor/golang.org/x/sys/windows/env_unset.go b/vendor/golang.org/x/sys/windows/env_unset.go
new file mode 100644 (file)
index 0000000..4ed03ae
--- /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 windows
+// +build go1.4
+
+package windows
+
+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/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go
new file mode 100644 (file)
index 0000000..a9d8ef4
--- /dev/null
@@ -0,0 +1,25 @@
+// 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.
+
+// Windows environment variables.
+
+package windows
+
+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/windows/eventlog.go b/vendor/golang.org/x/sys/windows/eventlog.go
new file mode 100644 (file)
index 0000000..40af946
--- /dev/null
@@ -0,0 +1,20 @@
+// 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 windows
+
+package windows
+
+const (
+       EVENTLOG_SUCCESS          = 0
+       EVENTLOG_ERROR_TYPE       = 1
+       EVENTLOG_WARNING_TYPE     = 2
+       EVENTLOG_INFORMATION_TYPE = 4
+       EVENTLOG_AUDIT_SUCCESS    = 8
+       EVENTLOG_AUDIT_FAILURE    = 16
+)
+
+//sys  RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW
+//sys  DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource
+//sys  ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW
diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go
new file mode 100644 (file)
index 0000000..3606c3a
--- /dev/null
@@ -0,0 +1,97 @@
+// 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.
+
+// Fork, exec, wait, etc.
+
+package windows
+
+// EscapeArg rewrites command line argument s as prescribed
+// in http://msdn.microsoft.com/en-us/library/ms880421.
+// This function returns "" (2 double quotes) if s is empty.
+// Alternatively, these transformations are done:
+// - every back slash (\) is doubled, but only if immediately
+//   followed by double quote (");
+// - every double quote (") is escaped by back slash (\);
+// - finally, s is wrapped with double quotes (arg -> "arg"),
+//   but only if there is space or tab inside s.
+func EscapeArg(s string) string {
+       if len(s) == 0 {
+               return "\"\""
+       }
+       n := len(s)
+       hasSpace := false
+       for i := 0; i < len(s); i++ {
+               switch s[i] {
+               case '"', '\\':
+                       n++
+               case ' ', '\t':
+                       hasSpace = true
+               }
+       }
+       if hasSpace {
+               n += 2
+       }
+       if n == len(s) {
+               return s
+       }
+
+       qs := make([]byte, n)
+       j := 0
+       if hasSpace {
+               qs[j] = '"'
+               j++
+       }
+       slashes := 0
+       for i := 0; i < len(s); i++ {
+               switch s[i] {
+               default:
+                       slashes = 0
+                       qs[j] = s[i]
+               case '\\':
+                       slashes++
+                       qs[j] = s[i]
+               case '"':
+                       for ; slashes > 0; slashes-- {
+                               qs[j] = '\\'
+                               j++
+                       }
+                       qs[j] = '\\'
+                       j++
+                       qs[j] = s[i]
+               }
+               j++
+       }
+       if hasSpace {
+               for ; slashes > 0; slashes-- {
+                       qs[j] = '\\'
+                       j++
+               }
+               qs[j] = '"'
+               j++
+       }
+       return string(qs[:j])
+}
+
+func CloseOnExec(fd Handle) {
+       SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)
+}
+
+// FullPath retrieves the full path of the specified file.
+func FullPath(name string) (path string, err error) {
+       p, err := UTF16PtrFromString(name)
+       if err != nil {
+               return "", err
+       }
+       n := uint32(100)
+       for {
+               buf := make([]uint16, n)
+               n, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil)
+               if err != nil {
+                       return "", err
+               }
+               if n <= uint32(len(buf)) {
+                       return UTF16ToString(buf[:n]), nil
+               }
+       }
+}
diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go
new file mode 100644 (file)
index 0000000..e1c88c9
--- /dev/null
@@ -0,0 +1,7 @@
+// 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 windows
+
+//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go
diff --git a/vendor/golang.org/x/sys/windows/race.go b/vendor/golang.org/x/sys/windows/race.go
new file mode 100644 (file)
index 0000000..343e18a
--- /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 windows,race
+
+package windows
+
+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/windows/race0.go b/vendor/golang.org/x/sys/windows/race0.go
new file mode 100644 (file)
index 0000000..17af843
--- /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 windows,!race
+
+package windows
+
+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/windows/registry/export_test.go b/vendor/golang.org/x/sys/windows/registry/export_test.go
new file mode 100644 (file)
index 0000000..8badf6f
--- /dev/null
@@ -0,0 +1,11 @@
+// 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 windows
+
+package registry
+
+func (k Key) SetValue(name string, valtype uint32, data []byte) error {
+       return k.setValue(name, valtype, data)
+}
diff --git a/vendor/golang.org/x/sys/windows/registry/key.go b/vendor/golang.org/x/sys/windows/registry/key.go
new file mode 100644 (file)
index 0000000..d0beb19
--- /dev/null
@@ -0,0 +1,200 @@
+// 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 windows
+
+// Package registry provides access to the Windows registry.
+//
+// Here is a simple example, opening a registry key and reading a string value from it.
+//
+//     k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
+//     if err != nil {
+//             log.Fatal(err)
+//     }
+//     defer k.Close()
+//
+//     s, _, err := k.GetStringValue("SystemRoot")
+//     if err != nil {
+//             log.Fatal(err)
+//     }
+//     fmt.Printf("Windows system root is %q\n", s)
+//
+package registry
+
+import (
+       "io"
+       "syscall"
+       "time"
+)
+
+const (
+       // Registry key security and access rights.
+       // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms724878.aspx
+       // for details.
+       ALL_ACCESS         = 0xf003f
+       CREATE_LINK        = 0x00020
+       CREATE_SUB_KEY     = 0x00004
+       ENUMERATE_SUB_KEYS = 0x00008
+       EXECUTE            = 0x20019
+       NOTIFY             = 0x00010
+       QUERY_VALUE        = 0x00001
+       READ               = 0x20019
+       SET_VALUE          = 0x00002
+       WOW64_32KEY        = 0x00200
+       WOW64_64KEY        = 0x00100
+       WRITE              = 0x20006
+)
+
+// Key is a handle to an open Windows registry key.
+// Keys can be obtained by calling OpenKey; there are
+// also some predefined root keys such as CURRENT_USER.
+// Keys can be used directly in the Windows API.
+type Key syscall.Handle
+
+const (
+       // Windows defines some predefined root keys that are always open.
+       // An application can use these keys as entry points to the registry.
+       // Normally these keys are used in OpenKey to open new keys,
+       // but they can also be used anywhere a Key is required.
+       CLASSES_ROOT     = Key(syscall.HKEY_CLASSES_ROOT)
+       CURRENT_USER     = Key(syscall.HKEY_CURRENT_USER)
+       LOCAL_MACHINE    = Key(syscall.HKEY_LOCAL_MACHINE)
+       USERS            = Key(syscall.HKEY_USERS)
+       CURRENT_CONFIG   = Key(syscall.HKEY_CURRENT_CONFIG)
+       PERFORMANCE_DATA = Key(syscall.HKEY_PERFORMANCE_DATA)
+)
+
+// Close closes open key k.
+func (k Key) Close() error {
+       return syscall.RegCloseKey(syscall.Handle(k))
+}
+
+// OpenKey opens a new key with path name relative to key k.
+// It accepts any open key, including CURRENT_USER and others,
+// and returns the new key and an error.
+// The access parameter specifies desired access rights to the
+// key to be opened.
+func OpenKey(k Key, path string, access uint32) (Key, error) {
+       p, err := syscall.UTF16PtrFromString(path)
+       if err != nil {
+               return 0, err
+       }
+       var subkey syscall.Handle
+       err = syscall.RegOpenKeyEx(syscall.Handle(k), p, 0, access, &subkey)
+       if err != nil {
+               return 0, err
+       }
+       return Key(subkey), nil
+}
+
+// OpenRemoteKey opens a predefined registry key on another
+// computer pcname. The key to be opened is specified by k, but
+// can only be one of LOCAL_MACHINE, PERFORMANCE_DATA or USERS.
+// If pcname is "", OpenRemoteKey returns local computer key.
+func OpenRemoteKey(pcname string, k Key) (Key, error) {
+       var err error
+       var p *uint16
+       if pcname != "" {
+               p, err = syscall.UTF16PtrFromString(`\\` + pcname)
+               if err != nil {
+                       return 0, err
+               }
+       }
+       var remoteKey syscall.Handle
+       err = regConnectRegistry(p, syscall.Handle(k), &remoteKey)
+       if err != nil {
+               return 0, err
+       }
+       return Key(remoteKey), nil
+}
+
+// ReadSubKeyNames returns the names of subkeys of key k.
+// The parameter n controls the number of returned names,
+// analogous to the way os.File.Readdirnames works.
+func (k Key) ReadSubKeyNames(n int) ([]string, error) {
+       ki, err := k.Stat()
+       if err != nil {
+               return nil, err
+       }
+       names := make([]string, 0, ki.SubKeyCount)
+       buf := make([]uint16, ki.MaxSubKeyLen+1) // extra room for terminating zero byte
+loopItems:
+       for i := uint32(0); ; i++ {
+               if n > 0 {
+                       if len(names) == n {
+                               return names, nil
+                       }
+               }
+               l := uint32(len(buf))
+               for {
+                       err := syscall.RegEnumKeyEx(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil)
+                       if err == nil {
+                               break
+                       }
+                       if err == syscall.ERROR_MORE_DATA {
+                               // Double buffer size and try again.
+                               l = uint32(2 * len(buf))
+                               buf = make([]uint16, l)
+                               continue
+                       }
+                       if err == _ERROR_NO_MORE_ITEMS {
+                               break loopItems
+                       }
+                       return names, err
+               }
+               names = append(names, syscall.UTF16ToString(buf[:l]))
+       }
+       if n > len(names) {
+               return names, io.EOF
+       }
+       return names, nil
+}
+
+// CreateKey creates a key named path under open key k.
+// CreateKey returns the new key and a boolean flag that reports
+// whether the key already existed.
+// The access parameter specifies the access rights for the key
+// to be created.
+func CreateKey(k Key, path string, access uint32) (newk Key, openedExisting bool, err error) {
+       var h syscall.Handle
+       var d uint32
+       err = regCreateKeyEx(syscall.Handle(k), syscall.StringToUTF16Ptr(path),
+               0, nil, _REG_OPTION_NON_VOLATILE, access, nil, &h, &d)
+       if err != nil {
+               return 0, false, err
+       }
+       return Key(h), d == _REG_OPENED_EXISTING_KEY, nil
+}
+
+// DeleteKey deletes the subkey path of key k and its values.
+func DeleteKey(k Key, path string) error {
+       return regDeleteKey(syscall.Handle(k), syscall.StringToUTF16Ptr(path))
+}
+
+// A KeyInfo describes the statistics of a key. It is returned by Stat.
+type KeyInfo struct {
+       SubKeyCount     uint32
+       MaxSubKeyLen    uint32 // size of the key's subkey with the longest name, in Unicode characters, not including the terminating zero byte
+       ValueCount      uint32
+       MaxValueNameLen uint32 // size of the key's longest value name, in Unicode characters, not including the terminating zero byte
+       MaxValueLen     uint32 // longest data component among the key's values, in bytes
+       lastWriteTime   syscall.Filetime
+}
+
+// ModTime returns the key's last write time.
+func (ki *KeyInfo) ModTime() time.Time {
+       return time.Unix(0, ki.lastWriteTime.Nanoseconds())
+}
+
+// Stat retrieves information about the open key k.
+func (k Key) Stat() (*KeyInfo, error) {
+       var ki KeyInfo
+       err := syscall.RegQueryInfoKey(syscall.Handle(k), nil, nil, nil,
+               &ki.SubKeyCount, &ki.MaxSubKeyLen, nil, &ki.ValueCount,
+               &ki.MaxValueNameLen, &ki.MaxValueLen, nil, &ki.lastWriteTime)
+       if err != nil {
+               return nil, err
+       }
+       return &ki, nil
+}
diff --git a/vendor/golang.org/x/sys/windows/registry/mksyscall.go b/vendor/golang.org/x/sys/windows/registry/mksyscall.go
new file mode 100644 (file)
index 0000000..0ac95ff
--- /dev/null
@@ -0,0 +1,7 @@
+// 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 registry
+
+//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go syscall.go
diff --git a/vendor/golang.org/x/sys/windows/registry/registry_test.go b/vendor/golang.org/x/sys/windows/registry/registry_test.go
new file mode 100644 (file)
index 0000000..9c1b782
--- /dev/null
@@ -0,0 +1,756 @@
+// 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 windows
+
+package registry_test
+
+import (
+       "bytes"
+       "crypto/rand"
+       "os"
+       "syscall"
+       "testing"
+       "time"
+       "unsafe"
+
+       "golang.org/x/sys/windows/registry"
+)
+
+func randKeyName(prefix string) string {
+       const numbers = "0123456789"
+       buf := make([]byte, 10)
+       rand.Read(buf)
+       for i, b := range buf {
+               buf[i] = numbers[b%byte(len(numbers))]
+       }
+       return prefix + string(buf)
+}
+
+func TestReadSubKeyNames(t *testing.T) {
+       k, err := registry.OpenKey(registry.CLASSES_ROOT, "TypeLib", registry.ENUMERATE_SUB_KEYS|registry.QUERY_VALUE)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer k.Close()
+
+       names, err := k.ReadSubKeyNames(-1)
+       if err != nil {
+               t.Fatal(err)
+       }
+       var foundStdOle bool
+       for _, name := range names {
+               // Every PC has "stdole 2.0 OLE Automation" library installed.
+               if name == "{00020430-0000-0000-C000-000000000046}" {
+                       foundStdOle = true
+               }
+       }
+       if !foundStdOle {
+               t.Fatal("could not find stdole 2.0 OLE Automation")
+       }
+}
+
+func TestCreateOpenDeleteKey(t *testing.T) {
+       k, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer k.Close()
+
+       testKName := randKeyName("TestCreateOpenDeleteKey_")
+
+       testK, exist, err := registry.CreateKey(k, testKName, registry.CREATE_SUB_KEY)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer testK.Close()
+
+       if exist {
+               t.Fatalf("key %q already exists", testKName)
+       }
+
+       testKAgain, exist, err := registry.CreateKey(k, testKName, registry.CREATE_SUB_KEY)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer testKAgain.Close()
+
+       if !exist {
+               t.Fatalf("key %q should already exist", testKName)
+       }
+
+       testKOpened, err := registry.OpenKey(k, testKName, registry.ENUMERATE_SUB_KEYS)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer testKOpened.Close()
+
+       err = registry.DeleteKey(k, testKName)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       testKOpenedAgain, err := registry.OpenKey(k, testKName, registry.ENUMERATE_SUB_KEYS)
+       if err == nil {
+               defer testKOpenedAgain.Close()
+               t.Fatalf("key %q should already been deleted", testKName)
+       }
+       if err != registry.ErrNotExist {
+               t.Fatalf(`unexpected error ("not exist" expected): %v`, err)
+       }
+}
+
+func equalStringSlice(a, b []string) bool {
+       if len(a) != len(b) {
+               return false
+       }
+       if a == nil {
+               return true
+       }
+       for i := range a {
+               if a[i] != b[i] {
+                       return false
+               }
+       }
+       return true
+}
+
+type ValueTest struct {
+       Type     uint32
+       Name     string
+       Value    interface{}
+       WillFail bool
+}
+
+var ValueTests = []ValueTest{
+       {Type: registry.SZ, Name: "String1", Value: ""},
+       {Type: registry.SZ, Name: "String2", Value: "\000", WillFail: true},
+       {Type: registry.SZ, Name: "String3", Value: "Hello World"},
+       {Type: registry.SZ, Name: "String4", Value: "Hello World\000", WillFail: true},
+       {Type: registry.EXPAND_SZ, Name: "ExpString1", Value: ""},
+       {Type: registry.EXPAND_SZ, Name: "ExpString2", Value: "\000", WillFail: true},
+       {Type: registry.EXPAND_SZ, Name: "ExpString3", Value: "Hello World"},
+       {Type: registry.EXPAND_SZ, Name: "ExpString4", Value: "Hello\000World", WillFail: true},
+       {Type: registry.EXPAND_SZ, Name: "ExpString5", Value: "%PATH%"},
+       {Type: registry.EXPAND_SZ, Name: "ExpString6", Value: "%NO_SUCH_VARIABLE%"},
+       {Type: registry.EXPAND_SZ, Name: "ExpString7", Value: "%PATH%;."},
+       {Type: registry.BINARY, Name: "Binary1", Value: []byte{}},
+       {Type: registry.BINARY, Name: "Binary2", Value: []byte{1, 2, 3}},
+       {Type: registry.BINARY, Name: "Binary3", Value: []byte{3, 2, 1, 0, 1, 2, 3}},
+       {Type: registry.DWORD, Name: "Dword1", Value: uint64(0)},
+       {Type: registry.DWORD, Name: "Dword2", Value: uint64(1)},
+       {Type: registry.DWORD, Name: "Dword3", Value: uint64(0xff)},
+       {Type: registry.DWORD, Name: "Dword4", Value: uint64(0xffff)},
+       {Type: registry.QWORD, Name: "Qword1", Value: uint64(0)},
+       {Type: registry.QWORD, Name: "Qword2", Value: uint64(1)},
+       {Type: registry.QWORD, Name: "Qword3", Value: uint64(0xff)},
+       {Type: registry.QWORD, Name: "Qword4", Value: uint64(0xffff)},
+       {Type: registry.QWORD, Name: "Qword5", Value: uint64(0xffffff)},
+       {Type: registry.QWORD, Name: "Qword6", Value: uint64(0xffffffff)},
+       {Type: registry.MULTI_SZ, Name: "MultiString1", Value: []string{"a", "b", "c"}},
+       {Type: registry.MULTI_SZ, Name: "MultiString2", Value: []string{"abc", "", "cba"}},
+       {Type: registry.MULTI_SZ, Name: "MultiString3", Value: []string{""}},
+       {Type: registry.MULTI_SZ, Name: "MultiString4", Value: []string{"abcdef"}},
+       {Type: registry.MULTI_SZ, Name: "MultiString5", Value: []string{"\000"}, WillFail: true},
+       {Type: registry.MULTI_SZ, Name: "MultiString6", Value: []string{"a\000b"}, WillFail: true},
+       {Type: registry.MULTI_SZ, Name: "MultiString7", Value: []string{"ab", "\000", "cd"}, WillFail: true},
+       {Type: registry.MULTI_SZ, Name: "MultiString8", Value: []string{"\000", "cd"}, WillFail: true},
+       {Type: registry.MULTI_SZ, Name: "MultiString9", Value: []string{"ab", "\000"}, WillFail: true},
+}
+
+func setValues(t *testing.T, k registry.Key) {
+       for _, test := range ValueTests {
+               var err error
+               switch test.Type {
+               case registry.SZ:
+                       err = k.SetStringValue(test.Name, test.Value.(string))
+               case registry.EXPAND_SZ:
+                       err = k.SetExpandStringValue(test.Name, test.Value.(string))
+               case registry.MULTI_SZ:
+                       err = k.SetStringsValue(test.Name, test.Value.([]string))
+               case registry.BINARY:
+                       err = k.SetBinaryValue(test.Name, test.Value.([]byte))
+               case registry.DWORD:
+                       err = k.SetDWordValue(test.Name, uint32(test.Value.(uint64)))
+               case registry.QWORD:
+                       err = k.SetQWordValue(test.Name, test.Value.(uint64))
+               default:
+                       t.Fatalf("unsupported type %d for %s value", test.Type, test.Name)
+               }
+               if test.WillFail {
+                       if err == nil {
+                               t.Fatalf("setting %s value %q should fail, but succeeded", test.Name, test.Value)
+                       }
+               } else {
+                       if err != nil {
+                               t.Fatal(err)
+                       }
+               }
+       }
+}
+
+func enumerateValues(t *testing.T, k registry.Key) {
+       names, err := k.ReadValueNames(-1)
+       if err != nil {
+               t.Error(err)
+               return
+       }
+       haveNames := make(map[string]bool)
+       for _, n := range names {
+               haveNames[n] = false
+       }
+       for _, test := range ValueTests {
+               wantFound := !test.WillFail
+               _, haveFound := haveNames[test.Name]
+               if wantFound && !haveFound {
+                       t.Errorf("value %s is not found while enumerating", test.Name)
+               }
+               if haveFound && !wantFound {
+                       t.Errorf("value %s is found while enumerating, but expected to fail", test.Name)
+               }
+               if haveFound {
+                       delete(haveNames, test.Name)
+               }
+       }
+       for n, v := range haveNames {
+               t.Errorf("value %s (%v) is found while enumerating, but has not been cretaed", n, v)
+       }
+}
+
+func testErrNotExist(t *testing.T, name string, err error) {
+       if err == nil {
+               t.Errorf("%s value should not exist", name)
+               return
+       }
+       if err != registry.ErrNotExist {
+               t.Errorf("reading %s value should return 'not exist' error, but got: %s", name, err)
+               return
+       }
+}
+
+func testErrUnexpectedType(t *testing.T, test ValueTest, gottype uint32, err error) {
+       if err == nil {
+               t.Errorf("GetXValue(%q) should not succeed", test.Name)
+               return
+       }
+       if err != registry.ErrUnexpectedType {
+               t.Errorf("reading %s value should return 'unexpected key value type' error, but got: %s", test.Name, err)
+               return
+       }
+       if gottype != test.Type {
+               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
+               return
+       }
+}
+
+func testGetStringValue(t *testing.T, k registry.Key, test ValueTest) {
+       got, gottype, err := k.GetStringValue(test.Name)
+       if err != nil {
+               t.Errorf("GetStringValue(%s) failed: %v", test.Name, err)
+               return
+       }
+       if got != test.Value {
+               t.Errorf("want %s value %q, got %q", test.Name, test.Value, got)
+               return
+       }
+       if gottype != test.Type {
+               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
+               return
+       }
+       if gottype == registry.EXPAND_SZ {
+               _, err = registry.ExpandString(got)
+               if err != nil {
+                       t.Errorf("ExpandString(%s) failed: %v", got, err)
+                       return
+               }
+       }
+}
+
+func testGetIntegerValue(t *testing.T, k registry.Key, test ValueTest) {
+       got, gottype, err := k.GetIntegerValue(test.Name)
+       if err != nil {
+               t.Errorf("GetIntegerValue(%s) failed: %v", test.Name, err)
+               return
+       }
+       if got != test.Value.(uint64) {
+               t.Errorf("want %s value %v, got %v", test.Name, test.Value, got)
+               return
+       }
+       if gottype != test.Type {
+               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
+               return
+       }
+}
+
+func testGetBinaryValue(t *testing.T, k registry.Key, test ValueTest) {
+       got, gottype, err := k.GetBinaryValue(test.Name)
+       if err != nil {
+               t.Errorf("GetBinaryValue(%s) failed: %v", test.Name, err)
+               return
+       }
+       if !bytes.Equal(got, test.Value.([]byte)) {
+               t.Errorf("want %s value %v, got %v", test.Name, test.Value, got)
+               return
+       }
+       if gottype != test.Type {
+               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
+               return
+       }
+}
+
+func testGetStringsValue(t *testing.T, k registry.Key, test ValueTest) {
+       got, gottype, err := k.GetStringsValue(test.Name)
+       if err != nil {
+               t.Errorf("GetStringsValue(%s) failed: %v", test.Name, err)
+               return
+       }
+       if !equalStringSlice(got, test.Value.([]string)) {
+               t.Errorf("want %s value %#v, got %#v", test.Name, test.Value, got)
+               return
+       }
+       if gottype != test.Type {
+               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
+               return
+       }
+}
+
+func testGetValue(t *testing.T, k registry.Key, test ValueTest, size int) {
+       if size <= 0 {
+               return
+       }
+       // read data with no buffer
+       gotsize, gottype, err := k.GetValue(test.Name, nil)
+       if err != nil {
+               t.Errorf("GetValue(%s, [%d]byte) failed: %v", test.Name, size, err)
+               return
+       }
+       if gotsize != size {
+               t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize)
+               return
+       }
+       if gottype != test.Type {
+               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
+               return
+       }
+       // read data with short buffer
+       gotsize, gottype, err = k.GetValue(test.Name, make([]byte, size-1))
+       if err == nil {
+               t.Errorf("GetValue(%s, [%d]byte) should fail, but suceeded", test.Name, size-1)
+               return
+       }
+       if err != registry.ErrShortBuffer {
+               t.Errorf("reading %s value should return 'short buffer' error, but got: %s", test.Name, err)
+               return
+       }
+       if gotsize != size {
+               t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize)
+               return
+       }
+       if gottype != test.Type {
+               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
+               return
+       }
+       // read full data
+       gotsize, gottype, err = k.GetValue(test.Name, make([]byte, size))
+       if err != nil {
+               t.Errorf("GetValue(%s, [%d]byte) failed: %v", test.Name, size, err)
+               return
+       }
+       if gotsize != size {
+               t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize)
+               return
+       }
+       if gottype != test.Type {
+               t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype)
+               return
+       }
+       // check GetValue returns ErrNotExist as required
+       _, _, err = k.GetValue(test.Name+"_not_there", make([]byte, size))
+       if err == nil {
+               t.Errorf("GetValue(%q) should not succeed", test.Name)
+               return
+       }
+       if err != registry.ErrNotExist {
+               t.Errorf("GetValue(%q) should return 'not exist' error, but got: %s", test.Name, err)
+               return
+       }
+}
+
+func testValues(t *testing.T, k registry.Key) {
+       for _, test := range ValueTests {
+               switch test.Type {
+               case registry.SZ, registry.EXPAND_SZ:
+                       if test.WillFail {
+                               _, _, err := k.GetStringValue(test.Name)
+                               testErrNotExist(t, test.Name, err)
+                       } else {
+                               testGetStringValue(t, k, test)
+                               _, gottype, err := k.GetIntegerValue(test.Name)
+                               testErrUnexpectedType(t, test, gottype, err)
+                               // Size of utf16 string in bytes is not perfect,
+                               // but correct for current test values.
+                               // Size also includes terminating 0.
+                               testGetValue(t, k, test, (len(test.Value.(string))+1)*2)
+                       }
+                       _, _, err := k.GetStringValue(test.Name + "_string_not_created")
+                       testErrNotExist(t, test.Name+"_string_not_created", err)
+               case registry.DWORD, registry.QWORD:
+                       testGetIntegerValue(t, k, test)
+                       _, gottype, err := k.GetBinaryValue(test.Name)
+                       testErrUnexpectedType(t, test, gottype, err)
+                       _, _, err = k.GetIntegerValue(test.Name + "_int_not_created")
+                       testErrNotExist(t, test.Name+"_int_not_created", err)
+                       size := 8
+                       if test.Type == registry.DWORD {
+                               size = 4
+                       }
+                       testGetValue(t, k, test, size)
+               case registry.BINARY:
+                       testGetBinaryValue(t, k, test)
+                       _, gottype, err := k.GetStringsValue(test.Name)
+                       testErrUnexpectedType(t, test, gottype, err)
+                       _, _, err = k.GetBinaryValue(test.Name + "_byte_not_created")
+                       testErrNotExist(t, test.Name+"_byte_not_created", err)
+                       testGetValue(t, k, test, len(test.Value.([]byte)))
+               case registry.MULTI_SZ:
+                       if test.WillFail {
+                               _, _, err := k.GetStringsValue(test.Name)
+                               testErrNotExist(t, test.Name, err)
+                       } else {
+                               testGetStringsValue(t, k, test)
+                               _, gottype, err := k.GetStringValue(test.Name)
+                               testErrUnexpectedType(t, test, gottype, err)
+                               size := 0
+                               for _, s := range test.Value.([]string) {
+                                       size += len(s) + 1 // nil terminated
+                               }
+                               size += 1 // extra nil at the end
+                               size *= 2 // count bytes, not uint16
+                               testGetValue(t, k, test, size)
+                       }
+                       _, _, err := k.GetStringsValue(test.Name + "_strings_not_created")
+                       testErrNotExist(t, test.Name+"_strings_not_created", err)
+               default:
+                       t.Errorf("unsupported type %d for %s value", test.Type, test.Name)
+                       continue
+               }
+       }
+}
+
+func testStat(t *testing.T, k registry.Key) {
+       subk, _, err := registry.CreateKey(k, "subkey", registry.CREATE_SUB_KEY)
+       if err != nil {
+               t.Error(err)
+               return
+       }
+       defer subk.Close()
+
+       defer registry.DeleteKey(k, "subkey")
+
+       ki, err := k.Stat()
+       if err != nil {
+               t.Error(err)
+               return
+       }
+       if ki.SubKeyCount != 1 {
+               t.Error("key must have 1 subkey")
+       }
+       if ki.MaxSubKeyLen != 6 {
+               t.Error("key max subkey name length must be 6")
+       }
+       if ki.ValueCount != 24 {
+               t.Errorf("key must have 24 values, but is %d", ki.ValueCount)
+       }
+       if ki.MaxValueNameLen != 12 {
+               t.Errorf("key max value name length must be 10, but is %d", ki.MaxValueNameLen)
+       }
+       if ki.MaxValueLen != 38 {
+               t.Errorf("key max value length must be 38, but is %d", ki.MaxValueLen)
+       }
+       if mt, ct := ki.ModTime(), time.Now(); ct.Sub(mt) > 100*time.Millisecond {
+               t.Errorf("key mod time is not close to current time: mtime=%v current=%v delta=%v", mt, ct, ct.Sub(mt))
+       }
+}
+
+func deleteValues(t *testing.T, k registry.Key) {
+       for _, test := range ValueTests {
+               if test.WillFail {
+                       continue
+               }
+               err := k.DeleteValue(test.Name)
+               if err != nil {
+                       t.Error(err)
+                       continue
+               }
+       }
+       names, err := k.ReadValueNames(-1)
+       if err != nil {
+               t.Error(err)
+               return
+       }
+       if len(names) != 0 {
+               t.Errorf("some values remain after deletion: %v", names)
+       }
+}
+
+func TestValues(t *testing.T) {
+       softwareK, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer softwareK.Close()
+
+       testKName := randKeyName("TestValues_")
+
+       k, exist, err := registry.CreateKey(softwareK, testKName, registry.CREATE_SUB_KEY|registry.QUERY_VALUE|registry.SET_VALUE)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer k.Close()
+
+       if exist {
+               t.Fatalf("key %q already exists", testKName)
+       }
+
+       defer registry.DeleteKey(softwareK, testKName)
+
+       setValues(t, k)
+
+       enumerateValues(t, k)
+
+       testValues(t, k)
+
+       testStat(t, k)
+
+       deleteValues(t, k)
+}
+
+func walkKey(t *testing.T, k registry.Key, kname string) {
+       names, err := k.ReadValueNames(-1)
+       if err != nil {
+               t.Fatalf("reading value names of %s failed: %v", kname, err)
+       }
+       for _, name := range names {
+               _, valtype, err := k.GetValue(name, nil)
+               if err != nil {
+                       t.Fatalf("reading value type of %s of %s failed: %v", name, kname, err)
+               }
+               switch valtype {
+               case registry.NONE:
+               case registry.SZ:
+                       _, _, err := k.GetStringValue(name)
+                       if err != nil {
+                               t.Error(err)
+                       }
+               case registry.EXPAND_SZ:
+                       s, _, err := k.GetStringValue(name)
+                       if err != nil {
+                               t.Error(err)
+                       }
+                       _, err = registry.ExpandString(s)
+                       if err != nil {
+                               t.Error(err)
+                       }
+               case registry.DWORD, registry.QWORD:
+                       _, _, err := k.GetIntegerValue(name)
+                       if err != nil {
+                               t.Error(err)
+                       }
+               case registry.BINARY:
+                       _, _, err := k.GetBinaryValue(name)
+                       if err != nil {
+                               t.Error(err)
+                       }
+               case registry.MULTI_SZ:
+                       _, _, err := k.GetStringsValue(name)
+                       if err != nil {
+                               t.Error(err)
+                       }
+               case registry.FULL_RESOURCE_DESCRIPTOR, registry.RESOURCE_LIST, registry.RESOURCE_REQUIREMENTS_LIST:
+                       // TODO: not implemented
+               default:
+                       t.Fatalf("value type %d of %s of %s failed: %v", valtype, name, kname, err)
+               }
+       }
+
+       names, err = k.ReadSubKeyNames(-1)
+       if err != nil {
+               t.Fatalf("reading sub-keys of %s failed: %v", kname, err)
+       }
+       for _, name := range names {
+               func() {
+                       subk, err := registry.OpenKey(k, name, registry.ENUMERATE_SUB_KEYS|registry.QUERY_VALUE)
+                       if err != nil {
+                               if err == syscall.ERROR_ACCESS_DENIED {
+                                       // ignore error, if we are not allowed to access this key
+                                       return
+                               }
+                               t.Fatalf("opening sub-keys %s of %s failed: %v", name, kname, err)
+                       }
+                       defer subk.Close()
+
+                       walkKey(t, subk, kname+`\`+name)
+               }()
+       }
+}
+
+func TestWalkFullRegistry(t *testing.T) {
+       if testing.Short() {
+               t.Skip("skipping long running test in short mode")
+       }
+       walkKey(t, registry.CLASSES_ROOT, "CLASSES_ROOT")
+       walkKey(t, registry.CURRENT_USER, "CURRENT_USER")
+       walkKey(t, registry.LOCAL_MACHINE, "LOCAL_MACHINE")
+       walkKey(t, registry.USERS, "USERS")
+       walkKey(t, registry.CURRENT_CONFIG, "CURRENT_CONFIG")
+}
+
+func TestExpandString(t *testing.T) {
+       got, err := registry.ExpandString("%PATH%")
+       if err != nil {
+               t.Fatal(err)
+       }
+       want := os.Getenv("PATH")
+       if got != want {
+               t.Errorf("want %q string expanded, got %q", want, got)
+       }
+}
+
+func TestInvalidValues(t *testing.T) {
+       softwareK, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer softwareK.Close()
+
+       testKName := randKeyName("TestInvalidValues_")
+
+       k, exist, err := registry.CreateKey(softwareK, testKName, registry.CREATE_SUB_KEY|registry.QUERY_VALUE|registry.SET_VALUE)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer k.Close()
+
+       if exist {
+               t.Fatalf("key %q already exists", testKName)
+       }
+
+       defer registry.DeleteKey(softwareK, testKName)
+
+       var tests = []struct {
+               Type uint32
+               Name string
+               Data []byte
+       }{
+               {registry.DWORD, "Dword1", nil},
+               {registry.DWORD, "Dword2", []byte{1, 2, 3}},
+               {registry.QWORD, "Qword1", nil},
+               {registry.QWORD, "Qword2", []byte{1, 2, 3}},
+               {registry.QWORD, "Qword3", []byte{1, 2, 3, 4, 5, 6, 7}},
+               {registry.MULTI_SZ, "MultiString1", nil},
+               {registry.MULTI_SZ, "MultiString2", []byte{0}},
+               {registry.MULTI_SZ, "MultiString3", []byte{'a', 'b', 0}},
+               {registry.MULTI_SZ, "MultiString4", []byte{'a', 0, 0, 'b', 0}},
+               {registry.MULTI_SZ, "MultiString5", []byte{'a', 0, 0}},
+       }
+
+       for _, test := range tests {
+               err := k.SetValue(test.Name, test.Type, test.Data)
+               if err != nil {
+                       t.Fatalf("SetValue for %q failed: %v", test.Name, err)
+               }
+       }
+
+       for _, test := range tests {
+               switch test.Type {
+               case registry.DWORD, registry.QWORD:
+                       value, valType, err := k.GetIntegerValue(test.Name)
+                       if err == nil {
+                               t.Errorf("GetIntegerValue(%q) succeeded. Returns type=%d value=%v", test.Name, valType, value)
+                       }
+               case registry.MULTI_SZ:
+                       value, valType, err := k.GetStringsValue(test.Name)
+                       if err == nil {
+                               if len(value) != 0 {
+                                       t.Errorf("GetStringsValue(%q) succeeded. Returns type=%d value=%v", test.Name, valType, value)
+                               }
+                       }
+               default:
+                       t.Errorf("unsupported type %d for %s value", test.Type, test.Name)
+               }
+       }
+}
+
+func TestGetMUIStringValue(t *testing.T) {
+       if err := registry.LoadRegLoadMUIString(); err != nil {
+               t.Skip("regLoadMUIString not supported; skipping")
+       }
+       if err := procGetDynamicTimeZoneInformation.Find(); err != nil {
+               t.Skipf("%s not supported; skipping", procGetDynamicTimeZoneInformation.Name)
+       }
+       var dtzi DynamicTimezoneinformation
+       if _, err := GetDynamicTimeZoneInformation(&dtzi); err != nil {
+               t.Fatal(err)
+       }
+       tzKeyName := syscall.UTF16ToString(dtzi.TimeZoneKeyName[:])
+       timezoneK, err := registry.OpenKey(registry.LOCAL_MACHINE,
+               `SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\`+tzKeyName, registry.READ)
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer timezoneK.Close()
+
+       type testType struct {
+               name string
+               want string
+       }
+       var tests = []testType{
+               {"MUI_Std", syscall.UTF16ToString(dtzi.StandardName[:])},
+       }
+       if dtzi.DynamicDaylightTimeDisabled == 0 {
+               tests = append(tests, testType{"MUI_Dlt", syscall.UTF16ToString(dtzi.DaylightName[:])})
+       }
+
+       for _, test := range tests {
+               got, err := timezoneK.GetMUIStringValue(test.name)
+               if err != nil {
+                       t.Error("GetMUIStringValue:", err)
+               }
+
+               if got != test.want {
+                       t.Errorf("GetMUIStringValue: %s: Got %q, want %q", test.name, got, test.want)
+               }
+       }
+}
+
+type DynamicTimezoneinformation struct {
+       Bias                        int32
+       StandardName                [32]uint16
+       StandardDate                syscall.Systemtime
+       StandardBias                int32
+       DaylightName                [32]uint16
+       DaylightDate                syscall.Systemtime
+       DaylightBias                int32
+       TimeZoneKeyName             [128]uint16
+       DynamicDaylightTimeDisabled uint8
+}
+
+var (
+       kernel32DLL = syscall.NewLazyDLL("kernel32")
+
+       procGetDynamicTimeZoneInformation = kernel32DLL.NewProc("GetDynamicTimeZoneInformation")
+)
+
+func GetDynamicTimeZoneInformation(dtzi *DynamicTimezoneinformation) (rc uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetDynamicTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(dtzi)), 0, 0)
+       rc = uint32(r0)
+       if rc == 0xffffffff {
+               if e1 != 0 {
+                       err = error(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/windows/registry/syscall.go b/vendor/golang.org/x/sys/windows/registry/syscall.go
new file mode 100644 (file)
index 0000000..e66643c
--- /dev/null
@@ -0,0 +1,32 @@
+// 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 windows
+
+package registry
+
+import "syscall"
+
+const (
+       _REG_OPTION_NON_VOLATILE = 0
+
+       _REG_CREATED_NEW_KEY     = 1
+       _REG_OPENED_EXISTING_KEY = 2
+
+       _ERROR_NO_MORE_ITEMS syscall.Errno = 259
+)
+
+func LoadRegLoadMUIString() error {
+       return procRegLoadMUIStringW.Find()
+}
+
+//sys  regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) = advapi32.RegCreateKeyExW
+//sys  regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) = advapi32.RegDeleteKeyW
+//sys  regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) = advapi32.RegSetValueExW
+//sys  regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegEnumValueW
+//sys  regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) = advapi32.RegDeleteValueW
+//sys   regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) = advapi32.RegLoadMUIStringW
+//sys  regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) = advapi32.RegConnectRegistryW
+
+//sys  expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW
diff --git a/vendor/golang.org/x/sys/windows/registry/value.go b/vendor/golang.org/x/sys/windows/registry/value.go
new file mode 100644 (file)
index 0000000..71d4e15
--- /dev/null
@@ -0,0 +1,384 @@
+// 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 windows
+
+package registry
+
+import (
+       "errors"
+       "io"
+       "syscall"
+       "unicode/utf16"
+       "unsafe"
+)
+
+const (
+       // Registry value types.
+       NONE                       = 0
+       SZ                         = 1
+       EXPAND_SZ                  = 2
+       BINARY                     = 3
+       DWORD                      = 4
+       DWORD_BIG_ENDIAN           = 5
+       LINK                       = 6
+       MULTI_SZ                   = 7
+       RESOURCE_LIST              = 8
+       FULL_RESOURCE_DESCRIPTOR   = 9
+       RESOURCE_REQUIREMENTS_LIST = 10
+       QWORD                      = 11
+)
+
+var (
+       // ErrShortBuffer is returned when the buffer was too short for the operation.
+       ErrShortBuffer = syscall.ERROR_MORE_DATA
+
+       // ErrNotExist is returned when a registry key or value does not exist.
+       ErrNotExist = syscall.ERROR_FILE_NOT_FOUND
+
+       // ErrUnexpectedType is returned by Get*Value when the value's type was unexpected.
+       ErrUnexpectedType = errors.New("unexpected key value type")
+)
+
+// GetValue retrieves the type and data for the specified value associated
+// with an open key k. It fills up buffer buf and returns the retrieved
+// byte count n. If buf is too small to fit the stored value it returns
+// ErrShortBuffer error along with the required buffer size n.
+// If no buffer is provided, it returns true and actual buffer size n.
+// If no buffer is provided, GetValue returns the value's type only.
+// If the value does not exist, the error returned is ErrNotExist.
+//
+// GetValue is a low level function. If value's type is known, use the appropriate
+// Get*Value function instead.
+func (k Key) GetValue(name string, buf []byte) (n int, valtype uint32, err error) {
+       pname, err := syscall.UTF16PtrFromString(name)
+       if err != nil {
+               return 0, 0, err
+       }
+       var pbuf *byte
+       if len(buf) > 0 {
+               pbuf = (*byte)(unsafe.Pointer(&buf[0]))
+       }
+       l := uint32(len(buf))
+       err = syscall.RegQueryValueEx(syscall.Handle(k), pname, nil, &valtype, pbuf, &l)
+       if err != nil {
+               return int(l), valtype, err
+       }
+       return int(l), valtype, nil
+}
+
+func (k Key) getValue(name string, buf []byte) (date []byte, valtype uint32, err error) {
+       p, err := syscall.UTF16PtrFromString(name)
+       if err != nil {
+               return nil, 0, err
+       }
+       var t uint32
+       n := uint32(len(buf))
+       for {
+               err = syscall.RegQueryValueEx(syscall.Handle(k), p, nil, &t, (*byte)(unsafe.Pointer(&buf[0])), &n)
+               if err == nil {
+                       return buf[:n], t, nil
+               }
+               if err != syscall.ERROR_MORE_DATA {
+                       return nil, 0, err
+               }
+               if n <= uint32(len(buf)) {
+                       return nil, 0, err
+               }
+               buf = make([]byte, n)
+       }
+}
+
+// GetStringValue retrieves the string value for the specified
+// value name associated with an open key k. It also returns the value's type.
+// If value does not exist, GetStringValue returns ErrNotExist.
+// If value is not SZ or EXPAND_SZ, it will return the correct value
+// type and ErrUnexpectedType.
+func (k Key) GetStringValue(name string) (val string, valtype uint32, err error) {
+       data, typ, err2 := k.getValue(name, make([]byte, 64))
+       if err2 != nil {
+               return "", typ, err2
+       }
+       switch typ {
+       case SZ, EXPAND_SZ:
+       default:
+               return "", typ, ErrUnexpectedType
+       }
+       if len(data) == 0 {
+               return "", typ, nil
+       }
+       u := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[:]
+       return syscall.UTF16ToString(u), typ, nil
+}
+
+// GetMUIStringValue retrieves the localized string value for
+// the specified value name associated with an open key k.
+// If the value name doesn't exist or the localized string value
+// can't be resolved, GetMUIStringValue returns ErrNotExist.
+// GetMUIStringValue panics if the system doesn't support
+// regLoadMUIString; use LoadRegLoadMUIString to check if
+// regLoadMUIString is supported before calling this function.
+func (k Key) GetMUIStringValue(name string) (string, error) {
+       pname, err := syscall.UTF16PtrFromString(name)
+       if err != nil {
+               return "", err
+       }
+
+       buf := make([]uint16, 1024)
+       var buflen uint32
+       var pdir *uint16
+
+       err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
+       if err == syscall.ERROR_FILE_NOT_FOUND { // Try fallback path
+
+               // Try to resolve the string value using the system directory as
+               // a DLL search path; this assumes the string value is of the form
+               // @[path]\dllname,-strID but with no path given, e.g. @tzres.dll,-320.
+
+               // This approach works with tzres.dll but may have to be revised
+               // in the future to allow callers to provide custom search paths.
+
+               var s string
+               s, err = ExpandString("%SystemRoot%\\system32\\")
+               if err != nil {
+                       return "", err
+               }
+               pdir, err = syscall.UTF16PtrFromString(s)
+               if err != nil {
+                       return "", err
+               }
+
+               err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
+       }
+
+       for err == syscall.ERROR_MORE_DATA { // Grow buffer if needed
+               if buflen <= uint32(len(buf)) {
+                       break // Buffer not growing, assume race; break
+               }
+               buf = make([]uint16, buflen)
+               err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
+       }
+
+       if err != nil {
+               return "", err
+       }
+
+       return syscall.UTF16ToString(buf), nil
+}
+
+// ExpandString expands environment-variable strings and replaces
+// them with the values defined for the current user.
+// Use ExpandString to expand EXPAND_SZ strings.
+func ExpandString(value string) (string, error) {
+       if value == "" {
+               return "", nil
+       }
+       p, err := syscall.UTF16PtrFromString(value)
+       if err != nil {
+               return "", err
+       }
+       r := make([]uint16, 100)
+       for {
+               n, err := expandEnvironmentStrings(p, &r[0], uint32(len(r)))
+               if err != nil {
+                       return "", err
+               }
+               if n <= uint32(len(r)) {
+                       u := (*[1 << 29]uint16)(unsafe.Pointer(&r[0]))[:]
+                       return syscall.UTF16ToString(u), nil
+               }
+               r = make([]uint16, n)
+       }
+}
+
+// GetStringsValue retrieves the []string value for the specified
+// value name associated with an open key k. It also returns the value's type.
+// If value does not exist, GetStringsValue returns ErrNotExist.
+// If value is not MULTI_SZ, it will return the correct value
+// type and ErrUnexpectedType.
+func (k Key) GetStringsValue(name string) (val []string, valtype uint32, err error) {
+       data, typ, err2 := k.getValue(name, make([]byte, 64))
+       if err2 != nil {
+               return nil, typ, err2
+       }
+       if typ != MULTI_SZ {
+               return nil, typ, ErrUnexpectedType
+       }
+       if len(data) == 0 {
+               return nil, typ, nil
+       }
+       p := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[:len(data)/2]
+       if len(p) == 0 {
+               return nil, typ, nil
+       }
+       if p[len(p)-1] == 0 {
+               p = p[:len(p)-1] // remove terminating null
+       }
+       val = make([]string, 0, 5)
+       from := 0
+       for i, c := range p {
+               if c == 0 {
+                       val = append(val, string(utf16.Decode(p[from:i])))
+                       from = i + 1
+               }
+       }
+       return val, typ, nil
+}
+
+// GetIntegerValue retrieves the integer value for the specified
+// value name associated with an open key k. It also returns the value's type.
+// If value does not exist, GetIntegerValue returns ErrNotExist.
+// If value is not DWORD or QWORD, it will return the correct value
+// type and ErrUnexpectedType.
+func (k Key) GetIntegerValue(name string) (val uint64, valtype uint32, err error) {
+       data, typ, err2 := k.getValue(name, make([]byte, 8))
+       if err2 != nil {
+               return 0, typ, err2
+       }
+       switch typ {
+       case DWORD:
+               if len(data) != 4 {
+                       return 0, typ, errors.New("DWORD value is not 4 bytes long")
+               }
+               return uint64(*(*uint32)(unsafe.Pointer(&data[0]))), DWORD, nil
+       case QWORD:
+               if len(data) != 8 {
+                       return 0, typ, errors.New("QWORD value is not 8 bytes long")
+               }
+               return uint64(*(*uint64)(unsafe.Pointer(&data[0]))), QWORD, nil
+       default:
+               return 0, typ, ErrUnexpectedType
+       }
+}
+
+// GetBinaryValue retrieves the binary value for the specified
+// value name associated with an open key k. It also returns the value's type.
+// If value does not exist, GetBinaryValue returns ErrNotExist.
+// If value is not BINARY, it will return the correct value
+// type and ErrUnexpectedType.
+func (k Key) GetBinaryValue(name string) (val []byte, valtype uint32, err error) {
+       data, typ, err2 := k.getValue(name, make([]byte, 64))
+       if err2 != nil {
+               return nil, typ, err2
+       }
+       if typ != BINARY {
+               return nil, typ, ErrUnexpectedType
+       }
+       return data, typ, nil
+}
+
+func (k Key) setValue(name string, valtype uint32, data []byte) error {
+       p, err := syscall.UTF16PtrFromString(name)
+       if err != nil {
+               return err
+       }
+       if len(data) == 0 {
+               return regSetValueEx(syscall.Handle(k), p, 0, valtype, nil, 0)
+       }
+       return regSetValueEx(syscall.Handle(k), p, 0, valtype, &data[0], uint32(len(data)))
+}
+
+// SetDWordValue sets the data and type of a name value
+// under key k to value and DWORD.
+func (k Key) SetDWordValue(name string, value uint32) error {
+       return k.setValue(name, DWORD, (*[4]byte)(unsafe.Pointer(&value))[:])
+}
+
+// SetQWordValue sets the data and type of a name value
+// under key k to value and QWORD.
+func (k Key) SetQWordValue(name string, value uint64) error {
+       return k.setValue(name, QWORD, (*[8]byte)(unsafe.Pointer(&value))[:])
+}
+
+func (k Key) setStringValue(name string, valtype uint32, value string) error {
+       v, err := syscall.UTF16FromString(value)
+       if err != nil {
+               return err
+       }
+       buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[:len(v)*2]
+       return k.setValue(name, valtype, buf)
+}
+
+// SetStringValue sets the data and type of a name value
+// under key k to value and SZ. The value must not contain a zero byte.
+func (k Key) SetStringValue(name, value string) error {
+       return k.setStringValue(name, SZ, value)
+}
+
+// SetExpandStringValue sets the data and type of a name value
+// under key k to value and EXPAND_SZ. The value must not contain a zero byte.
+func (k Key) SetExpandStringValue(name, value string) error {
+       return k.setStringValue(name, EXPAND_SZ, value)
+}
+
+// SetStringsValue sets the data and type of a name value
+// under key k to value and MULTI_SZ. The value strings
+// must not contain a zero byte.
+func (k Key) SetStringsValue(name string, value []string) error {
+       ss := ""
+       for _, s := range value {
+               for i := 0; i < len(s); i++ {
+                       if s[i] == 0 {
+                               return errors.New("string cannot have 0 inside")
+                       }
+               }
+               ss += s + "\x00"
+       }
+       v := utf16.Encode([]rune(ss + "\x00"))
+       buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[:len(v)*2]
+       return k.setValue(name, MULTI_SZ, buf)
+}
+
+// SetBinaryValue sets the data and type of a name value
+// under key k to value and BINARY.
+func (k Key) SetBinaryValue(name string, value []byte) error {
+       return k.setValue(name, BINARY, value)
+}
+
+// DeleteValue removes a named value from the key k.
+func (k Key) DeleteValue(name string) error {
+       return regDeleteValue(syscall.Handle(k), syscall.StringToUTF16Ptr(name))
+}
+
+// ReadValueNames returns the value names of key k.
+// The parameter n controls the number of returned names,
+// analogous to the way os.File.Readdirnames works.
+func (k Key) ReadValueNames(n int) ([]string, error) {
+       ki, err := k.Stat()
+       if err != nil {
+               return nil, err
+       }
+       names := make([]string, 0, ki.ValueCount)
+       buf := make([]uint16, ki.MaxValueNameLen+1) // extra room for terminating null character
+loopItems:
+       for i := uint32(0); ; i++ {
+               if n > 0 {
+                       if len(names) == n {
+                               return names, nil
+                       }
+               }
+               l := uint32(len(buf))
+               for {
+                       err := regEnumValue(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil)
+                       if err == nil {
+                               break
+                       }
+                       if err == syscall.ERROR_MORE_DATA {
+                               // Double buffer size and try again.
+                               l = uint32(2 * len(buf))
+                               buf = make([]uint16, l)
+                               continue
+                       }
+                       if err == _ERROR_NO_MORE_ITEMS {
+                               break loopItems
+                       }
+                       return names, err
+               }
+               names = append(names, syscall.UTF16ToString(buf[:l]))
+       }
+       if n > len(names) {
+               return names, io.EOF
+       }
+       return names, nil
+}
diff --git a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go
new file mode 100644 (file)
index 0000000..ceebdd7
--- /dev/null
@@ -0,0 +1,120 @@
+// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT
+
+package registry
+
+import (
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/sys/windows"
+)
+
+var _ unsafe.Pointer
+
+// Do the interface allocations only once for common
+// Errno values.
+const (
+       errnoERROR_IO_PENDING = 997
+)
+
+var (
+       errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
+)
+
+// errnoErr returns common boxed Errno values, to prevent
+// allocations at runtime.
+func errnoErr(e syscall.Errno) error {
+       switch e {
+       case 0:
+               return nil
+       case errnoERROR_IO_PENDING:
+               return errERROR_IO_PENDING
+       }
+       // TODO: add more here, after collecting data on the common
+       // error values see on Windows. (perhaps when running
+       // all.bat?)
+       return e
+}
+
+var (
+       modadvapi32 = windows.NewLazySystemDLL("advapi32.dll")
+       modkernel32 = windows.NewLazySystemDLL("kernel32.dll")
+
+       procRegCreateKeyExW           = modadvapi32.NewProc("RegCreateKeyExW")
+       procRegDeleteKeyW             = modadvapi32.NewProc("RegDeleteKeyW")
+       procRegSetValueExW            = modadvapi32.NewProc("RegSetValueExW")
+       procRegEnumValueW             = modadvapi32.NewProc("RegEnumValueW")
+       procRegDeleteValueW           = modadvapi32.NewProc("RegDeleteValueW")
+       procRegLoadMUIStringW         = modadvapi32.NewProc("RegLoadMUIStringW")
+       procRegConnectRegistryW       = modadvapi32.NewProc("RegConnectRegistryW")
+       procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW")
+)
+
+func regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) {
+       r0, _, _ := syscall.Syscall9(procRegCreateKeyExW.Addr(), 9, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(reserved), uintptr(unsafe.Pointer(class)), uintptr(options), uintptr(desired), uintptr(unsafe.Pointer(sa)), uintptr(unsafe.Pointer(result)), uintptr(unsafe.Pointer(disposition)))
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) {
+       r0, _, _ := syscall.Syscall(procRegDeleteKeyW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(subkey)), 0)
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) {
+       r0, _, _ := syscall.Syscall6(procRegSetValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize))
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
+       r0, _, _ := syscall.Syscall9(procRegEnumValueW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)), 0)
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) {
+       r0, _, _ := syscall.Syscall(procRegDeleteValueW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(name)), 0)
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) {
+       r0, _, _ := syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir)), 0, 0)
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) {
+       r0, _, _ := syscall.Syscall(procRegConnectRegistryW.Addr(), 3, uintptr(unsafe.Pointer(machinename)), uintptr(key), uintptr(unsafe.Pointer(result)))
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))
+       n = uint32(r0)
+       if n == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go
new file mode 100644 (file)
index 0000000..ca09bdd
--- /dev/null
@@ -0,0 +1,435 @@
+// 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 windows
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+const (
+       STANDARD_RIGHTS_REQUIRED = 0xf0000
+       STANDARD_RIGHTS_READ     = 0x20000
+       STANDARD_RIGHTS_WRITE    = 0x20000
+       STANDARD_RIGHTS_EXECUTE  = 0x20000
+       STANDARD_RIGHTS_ALL      = 0x1F0000
+)
+
+const (
+       NameUnknown          = 0
+       NameFullyQualifiedDN = 1
+       NameSamCompatible    = 2
+       NameDisplay          = 3
+       NameUniqueId         = 6
+       NameCanonical        = 7
+       NameUserPrincipal    = 8
+       NameCanonicalEx      = 9
+       NameServicePrincipal = 10
+       NameDnsDomain        = 12
+)
+
+// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.
+// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx
+//sys  TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW
+//sys  GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW
+
+// TranslateAccountName converts a directory service
+// object name from one format to another.
+func TranslateAccountName(username string, from, to uint32, initSize int) (string, error) {
+       u, e := UTF16PtrFromString(username)
+       if e != nil {
+               return "", e
+       }
+       n := uint32(50)
+       for {
+               b := make([]uint16, n)
+               e = TranslateName(u, from, to, &b[0], &n)
+               if e == nil {
+                       return UTF16ToString(b[:n]), nil
+               }
+               if e != ERROR_INSUFFICIENT_BUFFER {
+                       return "", e
+               }
+               if n <= uint32(len(b)) {
+                       return "", e
+               }
+       }
+}
+
+const (
+       // do not reorder
+       NetSetupUnknownStatus = iota
+       NetSetupUnjoined
+       NetSetupWorkgroupName
+       NetSetupDomainName
+)
+
+type UserInfo10 struct {
+       Name       *uint16
+       Comment    *uint16
+       UsrComment *uint16
+       FullName   *uint16
+}
+
+//sys  NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo
+//sys  NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation
+//sys  NetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree
+
+const (
+       // do not reorder
+       SidTypeUser = 1 + iota
+       SidTypeGroup
+       SidTypeDomain
+       SidTypeAlias
+       SidTypeWellKnownGroup
+       SidTypeDeletedAccount
+       SidTypeInvalid
+       SidTypeUnknown
+       SidTypeComputer
+       SidTypeLabel
+)
+
+type SidIdentifierAuthority struct {
+       Value [6]byte
+}
+
+var (
+       SECURITY_NULL_SID_AUTHORITY        = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}}
+       SECURITY_WORLD_SID_AUTHORITY       = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}}
+       SECURITY_LOCAL_SID_AUTHORITY       = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}}
+       SECURITY_CREATOR_SID_AUTHORITY     = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}}
+       SECURITY_NON_UNIQUE_AUTHORITY      = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}}
+       SECURITY_NT_AUTHORITY              = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}}
+       SECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}}
+)
+
+const (
+       SECURITY_NULL_RID                   = 0
+       SECURITY_WORLD_RID                  = 0
+       SECURITY_LOCAL_RID                  = 0
+       SECURITY_CREATOR_OWNER_RID          = 0
+       SECURITY_CREATOR_GROUP_RID          = 1
+       SECURITY_DIALUP_RID                 = 1
+       SECURITY_NETWORK_RID                = 2
+       SECURITY_BATCH_RID                  = 3
+       SECURITY_INTERACTIVE_RID            = 4
+       SECURITY_LOGON_IDS_RID              = 5
+       SECURITY_SERVICE_RID                = 6
+       SECURITY_LOCAL_SYSTEM_RID           = 18
+       SECURITY_BUILTIN_DOMAIN_RID         = 32
+       SECURITY_PRINCIPAL_SELF_RID         = 10
+       SECURITY_CREATOR_OWNER_SERVER_RID   = 0x2
+       SECURITY_CREATOR_GROUP_SERVER_RID   = 0x3
+       SECURITY_LOGON_IDS_RID_COUNT        = 0x3
+       SECURITY_ANONYMOUS_LOGON_RID        = 0x7
+       SECURITY_PROXY_RID                  = 0x8
+       SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9
+       SECURITY_SERVER_LOGON_RID           = SECURITY_ENTERPRISE_CONTROLLERS_RID
+       SECURITY_AUTHENTICATED_USER_RID     = 0xb
+       SECURITY_RESTRICTED_CODE_RID        = 0xc
+       SECURITY_NT_NON_UNIQUE_RID          = 0x15
+)
+
+//sys  LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW
+//sys  LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW
+//sys  ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW
+//sys  ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW
+//sys  GetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid
+//sys  CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid
+//sys  AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid
+//sys  FreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid
+//sys  EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid
+
+// The security identifier (SID) structure is a variable-length
+// structure used to uniquely identify users or groups.
+type SID struct{}
+
+// StringToSid converts a string-format security identifier
+// sid into a valid, functional sid.
+func StringToSid(s string) (*SID, error) {
+       var sid *SID
+       p, e := UTF16PtrFromString(s)
+       if e != nil {
+               return nil, e
+       }
+       e = ConvertStringSidToSid(p, &sid)
+       if e != nil {
+               return nil, e
+       }
+       defer LocalFree((Handle)(unsafe.Pointer(sid)))
+       return sid.Copy()
+}
+
+// LookupSID retrieves a security identifier sid for the account
+// and the name of the domain on which the account was found.
+// System specify target computer to search.
+func LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) {
+       if len(account) == 0 {
+               return nil, "", 0, syscall.EINVAL
+       }
+       acc, e := UTF16PtrFromString(account)
+       if e != nil {
+               return nil, "", 0, e
+       }
+       var sys *uint16
+       if len(system) > 0 {
+               sys, e = UTF16PtrFromString(system)
+               if e != nil {
+                       return nil, "", 0, e
+               }
+       }
+       n := uint32(50)
+       dn := uint32(50)
+       for {
+               b := make([]byte, n)
+               db := make([]uint16, dn)
+               sid = (*SID)(unsafe.Pointer(&b[0]))
+               e = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType)
+               if e == nil {
+                       return sid, UTF16ToString(db), accType, nil
+               }
+               if e != ERROR_INSUFFICIENT_BUFFER {
+                       return nil, "", 0, e
+               }
+               if n <= uint32(len(b)) {
+                       return nil, "", 0, e
+               }
+       }
+}
+
+// String converts sid to a string format
+// suitable for display, storage, or transmission.
+func (sid *SID) String() (string, error) {
+       var s *uint16
+       e := ConvertSidToStringSid(sid, &s)
+       if e != nil {
+               return "", e
+       }
+       defer LocalFree((Handle)(unsafe.Pointer(s)))
+       return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:]), nil
+}
+
+// Len returns the length, in bytes, of a valid security identifier sid.
+func (sid *SID) Len() int {
+       return int(GetLengthSid(sid))
+}
+
+// Copy creates a duplicate of security identifier sid.
+func (sid *SID) Copy() (*SID, error) {
+       b := make([]byte, sid.Len())
+       sid2 := (*SID)(unsafe.Pointer(&b[0]))
+       e := CopySid(uint32(len(b)), sid2, sid)
+       if e != nil {
+               return nil, e
+       }
+       return sid2, nil
+}
+
+// LookupAccount retrieves the name of the account for this sid
+// and the name of the first domain on which this sid is found.
+// System specify target computer to search for.
+func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) {
+       var sys *uint16
+       if len(system) > 0 {
+               sys, err = UTF16PtrFromString(system)
+               if err != nil {
+                       return "", "", 0, err
+               }
+       }
+       n := uint32(50)
+       dn := uint32(50)
+       for {
+               b := make([]uint16, n)
+               db := make([]uint16, dn)
+               e := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType)
+               if e == nil {
+                       return UTF16ToString(b), UTF16ToString(db), accType, nil
+               }
+               if e != ERROR_INSUFFICIENT_BUFFER {
+                       return "", "", 0, e
+               }
+               if n <= uint32(len(b)) {
+                       return "", "", 0, e
+               }
+       }
+}
+
+const (
+       // do not reorder
+       TOKEN_ASSIGN_PRIMARY = 1 << iota
+       TOKEN_DUPLICATE
+       TOKEN_IMPERSONATE
+       TOKEN_QUERY
+       TOKEN_QUERY_SOURCE
+       TOKEN_ADJUST_PRIVILEGES
+       TOKEN_ADJUST_GROUPS
+       TOKEN_ADJUST_DEFAULT
+
+       TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED |
+               TOKEN_ASSIGN_PRIMARY |
+               TOKEN_DUPLICATE |
+               TOKEN_IMPERSONATE |
+               TOKEN_QUERY |
+               TOKEN_QUERY_SOURCE |
+               TOKEN_ADJUST_PRIVILEGES |
+               TOKEN_ADJUST_GROUPS |
+               TOKEN_ADJUST_DEFAULT
+       TOKEN_READ  = STANDARD_RIGHTS_READ | TOKEN_QUERY
+       TOKEN_WRITE = STANDARD_RIGHTS_WRITE |
+               TOKEN_ADJUST_PRIVILEGES |
+               TOKEN_ADJUST_GROUPS |
+               TOKEN_ADJUST_DEFAULT
+       TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE
+)
+
+const (
+       // do not reorder
+       TokenUser = 1 + iota
+       TokenGroups
+       TokenPrivileges
+       TokenOwner
+       TokenPrimaryGroup
+       TokenDefaultDacl
+       TokenSource
+       TokenType
+       TokenImpersonationLevel
+       TokenStatistics
+       TokenRestrictedSids
+       TokenSessionId
+       TokenGroupsAndPrivileges
+       TokenSessionReference
+       TokenSandBoxInert
+       TokenAuditPolicy
+       TokenOrigin
+       TokenElevationType
+       TokenLinkedToken
+       TokenElevation
+       TokenHasRestrictions
+       TokenAccessInformation
+       TokenVirtualizationAllowed
+       TokenVirtualizationEnabled
+       TokenIntegrityLevel
+       TokenUIAccess
+       TokenMandatoryPolicy
+       TokenLogonSid
+       MaxTokenInfoClass
+)
+
+type SIDAndAttributes struct {
+       Sid        *SID
+       Attributes uint32
+}
+
+type Tokenuser struct {
+       User SIDAndAttributes
+}
+
+type Tokenprimarygroup struct {
+       PrimaryGroup *SID
+}
+
+type Tokengroups struct {
+       GroupCount uint32
+       Groups     [1]SIDAndAttributes
+}
+
+//sys  OpenProcessToken(h Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken
+//sys  GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation
+//sys  GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW
+
+// An access token contains the security information for a logon session.
+// The system creates an access token when a user logs on, and every
+// process executed on behalf of the user has a copy of the token.
+// The token identifies the user, the user's groups, and the user's
+// privileges. The system uses the token to control access to securable
+// objects and to control the ability of the user to perform various
+// system-related operations on the local computer.
+type Token Handle
+
+// OpenCurrentProcessToken opens the access token
+// associated with current process.
+func OpenCurrentProcessToken() (Token, error) {
+       p, e := GetCurrentProcess()
+       if e != nil {
+               return 0, e
+       }
+       var t Token
+       e = OpenProcessToken(p, TOKEN_QUERY, &t)
+       if e != nil {
+               return 0, e
+       }
+       return t, nil
+}
+
+// Close releases access to access token.
+func (t Token) Close() error {
+       return CloseHandle(Handle(t))
+}
+
+// getInfo retrieves a specified type of information about an access token.
+func (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) {
+       n := uint32(initSize)
+       for {
+               b := make([]byte, n)
+               e := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n)
+               if e == nil {
+                       return unsafe.Pointer(&b[0]), nil
+               }
+               if e != ERROR_INSUFFICIENT_BUFFER {
+                       return nil, e
+               }
+               if n <= uint32(len(b)) {
+                       return nil, e
+               }
+       }
+}
+
+// GetTokenUser retrieves access token t user account information.
+func (t Token) GetTokenUser() (*Tokenuser, error) {
+       i, e := t.getInfo(TokenUser, 50)
+       if e != nil {
+               return nil, e
+       }
+       return (*Tokenuser)(i), nil
+}
+
+// GetTokenGroups retrieves group accounts associated with access token t.
+func (t Token) GetTokenGroups() (*Tokengroups, error) {
+       i, e := t.getInfo(TokenGroups, 50)
+       if e != nil {
+               return nil, e
+       }
+       return (*Tokengroups)(i), nil
+}
+
+// GetTokenPrimaryGroup retrieves access token t primary group information.
+// A pointer to a SID structure representing a group that will become
+// the primary group of any objects created by a process using this access token.
+func (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) {
+       i, e := t.getInfo(TokenPrimaryGroup, 50)
+       if e != nil {
+               return nil, e
+       }
+       return (*Tokenprimarygroup)(i), nil
+}
+
+// GetUserProfileDirectory retrieves path to the
+// root directory of the access token t user's profile.
+func (t Token) GetUserProfileDirectory() (string, error) {
+       n := uint32(100)
+       for {
+               b := make([]uint16, n)
+               e := GetUserProfileDirectory(t, &b[0], &n)
+               if e == nil {
+                       return UTF16ToString(b), nil
+               }
+               if e != ERROR_INSUFFICIENT_BUFFER {
+                       return "", e
+               }
+               if n <= uint32(len(b)) {
+                       return "", e
+               }
+       }
+}
diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go
new file mode 100644 (file)
index 0000000..1c11d39
--- /dev/null
@@ -0,0 +1,143 @@
+// 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 windows
+
+package windows
+
+const (
+       SC_MANAGER_CONNECT            = 1
+       SC_MANAGER_CREATE_SERVICE     = 2
+       SC_MANAGER_ENUMERATE_SERVICE  = 4
+       SC_MANAGER_LOCK               = 8
+       SC_MANAGER_QUERY_LOCK_STATUS  = 16
+       SC_MANAGER_MODIFY_BOOT_CONFIG = 32
+       SC_MANAGER_ALL_ACCESS         = 0xf003f
+)
+
+//sys  OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW
+
+const (
+       SERVICE_KERNEL_DRIVER       = 1
+       SERVICE_FILE_SYSTEM_DRIVER  = 2
+       SERVICE_ADAPTER             = 4
+       SERVICE_RECOGNIZER_DRIVER   = 8
+       SERVICE_WIN32_OWN_PROCESS   = 16
+       SERVICE_WIN32_SHARE_PROCESS = 32
+       SERVICE_WIN32               = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS
+       SERVICE_INTERACTIVE_PROCESS = 256
+       SERVICE_DRIVER              = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER
+       SERVICE_TYPE_ALL            = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS
+
+       SERVICE_BOOT_START   = 0
+       SERVICE_SYSTEM_START = 1
+       SERVICE_AUTO_START   = 2
+       SERVICE_DEMAND_START = 3
+       SERVICE_DISABLED     = 4
+
+       SERVICE_ERROR_IGNORE   = 0
+       SERVICE_ERROR_NORMAL   = 1
+       SERVICE_ERROR_SEVERE   = 2
+       SERVICE_ERROR_CRITICAL = 3
+
+       SC_STATUS_PROCESS_INFO = 0
+
+       SERVICE_STOPPED          = 1
+       SERVICE_START_PENDING    = 2
+       SERVICE_STOP_PENDING     = 3
+       SERVICE_RUNNING          = 4
+       SERVICE_CONTINUE_PENDING = 5
+       SERVICE_PAUSE_PENDING    = 6
+       SERVICE_PAUSED           = 7
+       SERVICE_NO_CHANGE        = 0xffffffff
+
+       SERVICE_ACCEPT_STOP                  = 1
+       SERVICE_ACCEPT_PAUSE_CONTINUE        = 2
+       SERVICE_ACCEPT_SHUTDOWN              = 4
+       SERVICE_ACCEPT_PARAMCHANGE           = 8
+       SERVICE_ACCEPT_NETBINDCHANGE         = 16
+       SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32
+       SERVICE_ACCEPT_POWEREVENT            = 64
+       SERVICE_ACCEPT_SESSIONCHANGE         = 128
+
+       SERVICE_CONTROL_STOP                  = 1
+       SERVICE_CONTROL_PAUSE                 = 2
+       SERVICE_CONTROL_CONTINUE              = 3
+       SERVICE_CONTROL_INTERROGATE           = 4
+       SERVICE_CONTROL_SHUTDOWN              = 5
+       SERVICE_CONTROL_PARAMCHANGE           = 6
+       SERVICE_CONTROL_NETBINDADD            = 7
+       SERVICE_CONTROL_NETBINDREMOVE         = 8
+       SERVICE_CONTROL_NETBINDENABLE         = 9
+       SERVICE_CONTROL_NETBINDDISABLE        = 10
+       SERVICE_CONTROL_DEVICEEVENT           = 11
+       SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12
+       SERVICE_CONTROL_POWEREVENT            = 13
+       SERVICE_CONTROL_SESSIONCHANGE         = 14
+
+       SERVICE_ACTIVE    = 1
+       SERVICE_INACTIVE  = 2
+       SERVICE_STATE_ALL = 3
+
+       SERVICE_QUERY_CONFIG           = 1
+       SERVICE_CHANGE_CONFIG          = 2
+       SERVICE_QUERY_STATUS           = 4
+       SERVICE_ENUMERATE_DEPENDENTS   = 8
+       SERVICE_START                  = 16
+       SERVICE_STOP                   = 32
+       SERVICE_PAUSE_CONTINUE         = 64
+       SERVICE_INTERROGATE            = 128
+       SERVICE_USER_DEFINED_CONTROL   = 256
+       SERVICE_ALL_ACCESS             = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL
+       SERVICE_RUNS_IN_SYSTEM_PROCESS = 1
+       SERVICE_CONFIG_DESCRIPTION     = 1
+       SERVICE_CONFIG_FAILURE_ACTIONS = 2
+
+       NO_ERROR = 0
+)
+
+type SERVICE_STATUS struct {
+       ServiceType             uint32
+       CurrentState            uint32
+       ControlsAccepted        uint32
+       Win32ExitCode           uint32
+       ServiceSpecificExitCode uint32
+       CheckPoint              uint32
+       WaitHint                uint32
+}
+
+type SERVICE_TABLE_ENTRY struct {
+       ServiceName *uint16
+       ServiceProc uintptr
+}
+
+type QUERY_SERVICE_CONFIG struct {
+       ServiceType      uint32
+       StartType        uint32
+       ErrorControl     uint32
+       BinaryPathName   *uint16
+       LoadOrderGroup   *uint16
+       TagId            uint32
+       Dependencies     *uint16
+       ServiceStartName *uint16
+       DisplayName      *uint16
+}
+
+type SERVICE_DESCRIPTION struct {
+       Description *uint16
+}
+
+//sys  CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle
+//sys  CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW
+//sys  OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW
+//sys  DeleteService(service Handle) (err error) = advapi32.DeleteService
+//sys  StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW
+//sys  QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus
+//sys  ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService
+//sys  StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW
+//sys  SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus
+//sys  ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW
+//sys  QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW
+//sys  ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W
+//sys  QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W
diff --git a/vendor/golang.org/x/sys/windows/str.go b/vendor/golang.org/x/sys/windows/str.go
new file mode 100644 (file)
index 0000000..917cc2a
--- /dev/null
@@ -0,0 +1,22 @@
+// 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 windows
+
+package windows
+
+func itoa(val int) string { // do it here rather than with fmt to avoid dependency
+       if val < 0 {
+               return "-" + itoa(-val)
+       }
+       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/windows/svc/debug/log.go b/vendor/golang.org/x/sys/windows/svc/debug/log.go
new file mode 100644 (file)
index 0000000..e51ab42
--- /dev/null
@@ -0,0 +1,56 @@
+// 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 windows
+
+package debug
+
+import (
+       "os"
+       "strconv"
+)
+
+// Log interface allows different log implementations to be used.
+type Log interface {
+       Close() error
+       Info(eid uint32, msg string) error
+       Warning(eid uint32, msg string) error
+       Error(eid uint32, msg string) error
+}
+
+// ConsoleLog provides access to the console.
+type ConsoleLog struct {
+       Name string
+}
+
+// New creates new ConsoleLog.
+func New(source string) *ConsoleLog {
+       return &ConsoleLog{Name: source}
+}
+
+// Close closes console log l.
+func (l *ConsoleLog) Close() error {
+       return nil
+}
+
+func (l *ConsoleLog) report(kind string, eid uint32, msg string) error {
+       s := l.Name + "." + kind + "(" + strconv.Itoa(int(eid)) + "): " + msg + "\n"
+       _, err := os.Stdout.Write([]byte(s))
+       return err
+}
+
+// Info writes an information event msg with event id eid to the console l.
+func (l *ConsoleLog) Info(eid uint32, msg string) error {
+       return l.report("info", eid, msg)
+}
+
+// Warning writes an warning event msg with event id eid to the console l.
+func (l *ConsoleLog) Warning(eid uint32, msg string) error {
+       return l.report("warn", eid, msg)
+}
+
+// Error writes an error event msg with event id eid to the console l.
+func (l *ConsoleLog) Error(eid uint32, msg string) error {
+       return l.report("error", eid, msg)
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/debug/service.go b/vendor/golang.org/x/sys/windows/svc/debug/service.go
new file mode 100644 (file)
index 0000000..d5ab94b
--- /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.
+
+// +build windows
+
+// Package debug provides facilities to execute svc.Handler on console.
+//
+package debug
+
+import (
+       "os"
+       "os/signal"
+       "syscall"
+
+       "golang.org/x/sys/windows/svc"
+)
+
+// Run executes service name by calling appropriate handler function.
+// The process is running on console, unlike real service. Use Ctrl+C to
+// send "Stop" command to your service.
+func Run(name string, handler svc.Handler) error {
+       cmds := make(chan svc.ChangeRequest)
+       changes := make(chan svc.Status)
+
+       sig := make(chan os.Signal)
+       signal.Notify(sig)
+
+       go func() {
+               status := svc.Status{State: svc.Stopped}
+               for {
+                       select {
+                       case <-sig:
+                               cmds <- svc.ChangeRequest{svc.Stop, status}
+                       case status = <-changes:
+                       }
+               }
+       }()
+
+       _, errno := handler.Execute([]string{name}, cmds, changes)
+       if errno != 0 {
+               return syscall.Errno(errno)
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/event.go b/vendor/golang.org/x/sys/windows/svc/event.go
new file mode 100644 (file)
index 0000000..0508e22
--- /dev/null
@@ -0,0 +1,48 @@
+// 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 windows
+
+package svc
+
+import (
+       "errors"
+
+       "golang.org/x/sys/windows"
+)
+
+// event represents auto-reset, initially non-signaled Windows event.
+// It is used to communicate between go and asm parts of this package.
+type event struct {
+       h windows.Handle
+}
+
+func newEvent() (*event, error) {
+       h, err := windows.CreateEvent(nil, 0, 0, nil)
+       if err != nil {
+               return nil, err
+       }
+       return &event{h: h}, nil
+}
+
+func (e *event) Close() error {
+       return windows.CloseHandle(e.h)
+}
+
+func (e *event) Set() error {
+       return windows.SetEvent(e.h)
+}
+
+func (e *event) Wait() error {
+       s, err := windows.WaitForSingleObject(e.h, windows.INFINITE)
+       switch s {
+       case windows.WAIT_OBJECT_0:
+               break
+       case windows.WAIT_FAILED:
+               return err
+       default:
+               return errors.New("unexpected result from WaitForSingleObject")
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/eventlog/install.go b/vendor/golang.org/x/sys/windows/svc/eventlog/install.go
new file mode 100644 (file)
index 0000000..c76a376
--- /dev/null
@@ -0,0 +1,80 @@
+// 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 windows
+
+package eventlog
+
+import (
+       "errors"
+
+       "golang.org/x/sys/windows"
+       "golang.org/x/sys/windows/registry"
+)
+
+const (
+       // Log levels.
+       Info    = windows.EVENTLOG_INFORMATION_TYPE
+       Warning = windows.EVENTLOG_WARNING_TYPE
+       Error   = windows.EVENTLOG_ERROR_TYPE
+)
+
+const addKeyName = `SYSTEM\CurrentControlSet\Services\EventLog\Application`
+
+// Install modifies PC registry to allow logging with an event source src.
+// It adds all required keys and values to the event log registry key.
+// Install uses msgFile as the event message file. If useExpandKey is true,
+// the event message file is installed as REG_EXPAND_SZ value,
+// otherwise as REG_SZ. Use bitwise of log.Error, log.Warning and
+// log.Info to specify events supported by the new event source.
+func Install(src, msgFile string, useExpandKey bool, eventsSupported uint32) error {
+       appkey, err := registry.OpenKey(registry.LOCAL_MACHINE, addKeyName, registry.CREATE_SUB_KEY)
+       if err != nil {
+               return err
+       }
+       defer appkey.Close()
+
+       sk, alreadyExist, err := registry.CreateKey(appkey, src, registry.SET_VALUE)
+       if err != nil {
+               return err
+       }
+       defer sk.Close()
+       if alreadyExist {
+               return errors.New(addKeyName + `\` + src + " registry key already exists")
+       }
+
+       err = sk.SetDWordValue("CustomSource", 1)
+       if err != nil {
+               return err
+       }
+       if useExpandKey {
+               err = sk.SetExpandStringValue("EventMessageFile", msgFile)
+       } else {
+               err = sk.SetStringValue("EventMessageFile", msgFile)
+       }
+       if err != nil {
+               return err
+       }
+       err = sk.SetDWordValue("TypesSupported", eventsSupported)
+       if err != nil {
+               return err
+       }
+       return nil
+}
+
+// InstallAsEventCreate is the same as Install, but uses
+// %SystemRoot%\System32\EventCreate.exe as the event message file.
+func InstallAsEventCreate(src string, eventsSupported uint32) error {
+       return Install(src, "%SystemRoot%\\System32\\EventCreate.exe", true, eventsSupported)
+}
+
+// Remove deletes all registry elements installed by the correspondent Install.
+func Remove(src string) error {
+       appkey, err := registry.OpenKey(registry.LOCAL_MACHINE, addKeyName, registry.SET_VALUE)
+       if err != nil {
+               return err
+       }
+       defer appkey.Close()
+       return registry.DeleteKey(appkey, src)
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/eventlog/log.go b/vendor/golang.org/x/sys/windows/svc/eventlog/log.go
new file mode 100644 (file)
index 0000000..46e5153
--- /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.
+
+// +build windows
+
+// Package eventlog implements access to Windows event log.
+//
+package eventlog
+
+import (
+       "errors"
+       "syscall"
+
+       "golang.org/x/sys/windows"
+)
+
+// Log provides access to the system log.
+type Log struct {
+       Handle windows.Handle
+}
+
+// Open retrieves a handle to the specified event log.
+func Open(source string) (*Log, error) {
+       return OpenRemote("", source)
+}
+
+// OpenRemote does the same as Open, but on different computer host.
+func OpenRemote(host, source string) (*Log, error) {
+       if source == "" {
+               return nil, errors.New("Specify event log source")
+       }
+       var s *uint16
+       if host != "" {
+               s = syscall.StringToUTF16Ptr(host)
+       }
+       h, err := windows.RegisterEventSource(s, syscall.StringToUTF16Ptr(source))
+       if err != nil {
+               return nil, err
+       }
+       return &Log{Handle: h}, nil
+}
+
+// Close closes event log l.
+func (l *Log) Close() error {
+       return windows.DeregisterEventSource(l.Handle)
+}
+
+func (l *Log) report(etype uint16, eid uint32, msg string) error {
+       ss := []*uint16{syscall.StringToUTF16Ptr(msg)}
+       return windows.ReportEvent(l.Handle, etype, 0, eid, 0, 1, 0, &ss[0], nil)
+}
+
+// Info writes an information event msg with event id eid to the end of event log l.
+// When EventCreate.exe is used, eid must be between 1 and 1000.
+func (l *Log) Info(eid uint32, msg string) error {
+       return l.report(windows.EVENTLOG_INFORMATION_TYPE, eid, msg)
+}
+
+// Warning writes an warning event msg with event id eid to the end of event log l.
+// When EventCreate.exe is used, eid must be between 1 and 1000.
+func (l *Log) Warning(eid uint32, msg string) error {
+       return l.report(windows.EVENTLOG_WARNING_TYPE, eid, msg)
+}
+
+// Error writes an error event msg with event id eid to the end of event log l.
+// When EventCreate.exe is used, eid must be between 1 and 1000.
+func (l *Log) Error(eid uint32, msg string) error {
+       return l.report(windows.EVENTLOG_ERROR_TYPE, eid, msg)
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go b/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go
new file mode 100644 (file)
index 0000000..4dd8ad9
--- /dev/null
@@ -0,0 +1,51 @@
+// 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 windows
+
+package eventlog_test
+
+import (
+       "testing"
+
+       "golang.org/x/sys/windows/svc/eventlog"
+)
+
+func TestLog(t *testing.T) {
+       if testing.Short() {
+               t.Skip("skipping test in short mode - it modifies system logs")
+       }
+
+       const name = "mylog"
+       const supports = eventlog.Error | eventlog.Warning | eventlog.Info
+       err := eventlog.InstallAsEventCreate(name, supports)
+       if err != nil {
+               t.Fatalf("Install failed: %s", err)
+       }
+       defer func() {
+               err = eventlog.Remove(name)
+               if err != nil {
+                       t.Fatalf("Remove failed: %s", err)
+               }
+       }()
+
+       l, err := eventlog.Open(name)
+       if err != nil {
+               t.Fatalf("Open failed: %s", err)
+       }
+       defer l.Close()
+
+       err = l.Info(1, "info")
+       if err != nil {
+               t.Fatalf("Info failed: %s", err)
+       }
+       err = l.Warning(2, "warning")
+       if err != nil {
+               t.Fatalf("Warning failed: %s", err)
+       }
+       err = l.Error(3, "error")
+       if err != nil {
+               t.Fatalf("Error failed: %s", err)
+       }
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/example/beep.go b/vendor/golang.org/x/sys/windows/svc/example/beep.go
new file mode 100644 (file)
index 0000000..dcf2340
--- /dev/null
@@ -0,0 +1,22 @@
+// 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 windows
+
+package main
+
+import (
+       "syscall"
+)
+
+// BUG(brainman): MessageBeep Windows api is broken on Windows 7,
+// so this example does not beep when runs as service on Windows 7.
+
+var (
+       beepFunc = syscall.MustLoadDLL("user32.dll").MustFindProc("MessageBeep")
+)
+
+func beep() {
+       beepFunc.Call(0xffffffff)
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/example/install.go b/vendor/golang.org/x/sys/windows/svc/example/install.go
new file mode 100644 (file)
index 0000000..39cb00d
--- /dev/null
@@ -0,0 +1,92 @@
+// 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 windows
+
+package main
+
+import (
+       "fmt"
+       "os"
+       "path/filepath"
+
+       "golang.org/x/sys/windows/svc/eventlog"
+       "golang.org/x/sys/windows/svc/mgr"
+)
+
+func exePath() (string, error) {
+       prog := os.Args[0]
+       p, err := filepath.Abs(prog)
+       if err != nil {
+               return "", err
+       }
+       fi, err := os.Stat(p)
+       if err == nil {
+               if !fi.Mode().IsDir() {
+                       return p, nil
+               }
+               err = fmt.Errorf("%s is directory", p)
+       }
+       if filepath.Ext(p) == "" {
+               p += ".exe"
+               fi, err := os.Stat(p)
+               if err == nil {
+                       if !fi.Mode().IsDir() {
+                               return p, nil
+                       }
+                       err = fmt.Errorf("%s is directory", p)
+               }
+       }
+       return "", err
+}
+
+func installService(name, desc string) error {
+       exepath, err := exePath()
+       if err != nil {
+               return err
+       }
+       m, err := mgr.Connect()
+       if err != nil {
+               return err
+       }
+       defer m.Disconnect()
+       s, err := m.OpenService(name)
+       if err == nil {
+               s.Close()
+               return fmt.Errorf("service %s already exists", name)
+       }
+       s, err = m.CreateService(name, exepath, mgr.Config{DisplayName: desc}, "is", "auto-started")
+       if err != nil {
+               return err
+       }
+       defer s.Close()
+       err = eventlog.InstallAsEventCreate(name, eventlog.Error|eventlog.Warning|eventlog.Info)
+       if err != nil {
+               s.Delete()
+               return fmt.Errorf("SetupEventLogSource() failed: %s", err)
+       }
+       return nil
+}
+
+func removeService(name string) error {
+       m, err := mgr.Connect()
+       if err != nil {
+               return err
+       }
+       defer m.Disconnect()
+       s, err := m.OpenService(name)
+       if err != nil {
+               return fmt.Errorf("service %s is not installed", name)
+       }
+       defer s.Close()
+       err = s.Delete()
+       if err != nil {
+               return err
+       }
+       err = eventlog.Remove(name)
+       if err != nil {
+               return fmt.Errorf("RemoveEventLogSource() failed: %s", err)
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/example/main.go b/vendor/golang.org/x/sys/windows/svc/example/main.go
new file mode 100644 (file)
index 0000000..dc96c08
--- /dev/null
@@ -0,0 +1,76 @@
+// 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 windows
+
+// Example service program that beeps.
+//
+// The program demonstrates how to create Windows service and
+// install / remove it on a computer. It also shows how to
+// stop / start / pause / continue any service, and how to
+// write to event log. It also shows how to use debug
+// facilities available in debug package.
+//
+package main
+
+import (
+       "fmt"
+       "log"
+       "os"
+       "strings"
+
+       "golang.org/x/sys/windows/svc"
+)
+
+func usage(errmsg string) {
+       fmt.Fprintf(os.Stderr,
+               "%s\n\n"+
+                       "usage: %s <command>\n"+
+                       "       where <command> is one of\n"+
+                       "       install, remove, debug, start, stop, pause or continue.\n",
+               errmsg, os.Args[0])
+       os.Exit(2)
+}
+
+func main() {
+       const svcName = "myservice"
+
+       isIntSess, err := svc.IsAnInteractiveSession()
+       if err != nil {
+               log.Fatalf("failed to determine if we are running in an interactive session: %v", err)
+       }
+       if !isIntSess {
+               runService(svcName, false)
+               return
+       }
+
+       if len(os.Args) < 2 {
+               usage("no command specified")
+       }
+
+       cmd := strings.ToLower(os.Args[1])
+       switch cmd {
+       case "debug":
+               runService(svcName, true)
+               return
+       case "install":
+               err = installService(svcName, "my service")
+       case "remove":
+               err = removeService(svcName)
+       case "start":
+               err = startService(svcName)
+       case "stop":
+               err = controlService(svcName, svc.Stop, svc.Stopped)
+       case "pause":
+               err = controlService(svcName, svc.Pause, svc.Paused)
+       case "continue":
+               err = controlService(svcName, svc.Continue, svc.Running)
+       default:
+               usage(fmt.Sprintf("invalid command %s", cmd))
+       }
+       if err != nil {
+               log.Fatalf("failed to %s %s: %v", cmd, svcName, err)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/example/manage.go b/vendor/golang.org/x/sys/windows/svc/example/manage.go
new file mode 100644 (file)
index 0000000..782dbd9
--- /dev/null
@@ -0,0 +1,62 @@
+// 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 windows
+
+package main
+
+import (
+       "fmt"
+       "time"
+
+       "golang.org/x/sys/windows/svc"
+       "golang.org/x/sys/windows/svc/mgr"
+)
+
+func startService(name string) error {
+       m, err := mgr.Connect()
+       if err != nil {
+               return err
+       }
+       defer m.Disconnect()
+       s, err := m.OpenService(name)
+       if err != nil {
+               return fmt.Errorf("could not access service: %v", err)
+       }
+       defer s.Close()
+       err = s.Start("is", "manual-started")
+       if err != nil {
+               return fmt.Errorf("could not start service: %v", err)
+       }
+       return nil
+}
+
+func controlService(name string, c svc.Cmd, to svc.State) error {
+       m, err := mgr.Connect()
+       if err != nil {
+               return err
+       }
+       defer m.Disconnect()
+       s, err := m.OpenService(name)
+       if err != nil {
+               return fmt.Errorf("could not access service: %v", err)
+       }
+       defer s.Close()
+       status, err := s.Control(c)
+       if err != nil {
+               return fmt.Errorf("could not send control=%d: %v", c, err)
+       }
+       timeout := time.Now().Add(10 * time.Second)
+       for status.State != to {
+               if timeout.Before(time.Now()) {
+                       return fmt.Errorf("timeout waiting for service to go to state=%d", to)
+               }
+               time.Sleep(300 * time.Millisecond)
+               status, err = s.Query()
+               if err != nil {
+                       return fmt.Errorf("could not retrieve service status: %v", err)
+               }
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/example/service.go b/vendor/golang.org/x/sys/windows/svc/example/service.go
new file mode 100644 (file)
index 0000000..237e809
--- /dev/null
@@ -0,0 +1,82 @@
+// 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 windows
+
+package main
+
+import (
+       "fmt"
+       "time"
+
+       "golang.org/x/sys/windows/svc"
+       "golang.org/x/sys/windows/svc/debug"
+       "golang.org/x/sys/windows/svc/eventlog"
+)
+
+var elog debug.Log
+
+type myservice struct{}
+
+func (m *myservice) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (ssec bool, errno uint32) {
+       const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown | svc.AcceptPauseAndContinue
+       changes <- svc.Status{State: svc.StartPending}
+       fasttick := time.Tick(500 * time.Millisecond)
+       slowtick := time.Tick(2 * time.Second)
+       tick := fasttick
+       changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted}
+loop:
+       for {
+               select {
+               case <-tick:
+                       beep()
+                       elog.Info(1, "beep")
+               case c := <-r:
+                       switch c.Cmd {
+                       case svc.Interrogate:
+                               changes <- c.CurrentStatus
+                               // Testing deadlock from https://code.google.com/p/winsvc/issues/detail?id=4
+                               time.Sleep(100 * time.Millisecond)
+                               changes <- c.CurrentStatus
+                       case svc.Stop, svc.Shutdown:
+                               break loop
+                       case svc.Pause:
+                               changes <- svc.Status{State: svc.Paused, Accepts: cmdsAccepted}
+                               tick = slowtick
+                       case svc.Continue:
+                               changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted}
+                               tick = fasttick
+                       default:
+                               elog.Error(1, fmt.Sprintf("unexpected control request #%d", c))
+                       }
+               }
+       }
+       changes <- svc.Status{State: svc.StopPending}
+       return
+}
+
+func runService(name string, isDebug bool) {
+       var err error
+       if isDebug {
+               elog = debug.New(name)
+       } else {
+               elog, err = eventlog.Open(name)
+               if err != nil {
+                       return
+               }
+       }
+       defer elog.Close()
+
+       elog.Info(1, fmt.Sprintf("starting %s service", name))
+       run := svc.Run
+       if isDebug {
+               run = debug.Run
+       }
+       err = run(name, &myservice{})
+       if err != nil {
+               elog.Error(1, fmt.Sprintf("%s service failed: %v", name, err))
+               return
+       }
+       elog.Info(1, fmt.Sprintf("%s service stopped", name))
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/go12.c b/vendor/golang.org/x/sys/windows/svc/go12.c
new file mode 100644 (file)
index 0000000..6f1be1f
--- /dev/null
@@ -0,0 +1,24 @@
+// 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 windows
+// +build !go1.3
+
+// copied from pkg/runtime
+typedef        unsigned int    uint32;
+typedef        unsigned long long int  uint64;
+#ifdef _64BIT
+typedef        uint64          uintptr;
+#else
+typedef        uint32          uintptr;
+#endif
+
+// from sys_386.s or sys_amd64.s
+void ·servicemain(void);
+
+void
+·getServiceMain(uintptr *r)
+{
+       *r = (uintptr)·servicemain;
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/go12.go b/vendor/golang.org/x/sys/windows/svc/go12.go
new file mode 100644 (file)
index 0000000..6f0a924
--- /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.
+
+// +build windows
+// +build !go1.3
+
+package svc
+
+// from go12.c
+func getServiceMain(r *uintptr)
diff --git a/vendor/golang.org/x/sys/windows/svc/go13.go b/vendor/golang.org/x/sys/windows/svc/go13.go
new file mode 100644 (file)
index 0000000..432a9e7
--- /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.
+
+// +build windows
+// +build go1.3
+
+package svc
+
+import "unsafe"
+
+const ptrSize = 4 << (^uintptr(0) >> 63) // unsafe.Sizeof(uintptr(0)) but an ideal const
+
+// Should be a built-in for unsafe.Pointer?
+func add(p unsafe.Pointer, x uintptr) unsafe.Pointer {
+       return unsafe.Pointer(uintptr(p) + x)
+}
+
+// funcPC returns the entry PC of the function f.
+// It assumes that f is a func value. Otherwise the behavior is undefined.
+func funcPC(f interface{}) uintptr {
+       return **(**uintptr)(add(unsafe.Pointer(&f), ptrSize))
+}
+
+// from sys_386.s and sys_amd64.s
+func servicectlhandler(ctl uint32) uintptr
+func servicemain(argc uint32, argv **uint16)
+
+func getServiceMain(r *uintptr) {
+       *r = funcPC(servicemain)
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/config.go b/vendor/golang.org/x/sys/windows/svc/mgr/config.go
new file mode 100644 (file)
index 0000000..0a6edba
--- /dev/null
@@ -0,0 +1,139 @@
+// 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 windows
+
+package mgr
+
+import (
+       "syscall"
+       "unicode/utf16"
+       "unsafe"
+
+       "golang.org/x/sys/windows"
+)
+
+const (
+       // Service start types.
+       StartManual    = windows.SERVICE_DEMAND_START // the service must be started manually
+       StartAutomatic = windows.SERVICE_AUTO_START   // the service will start by itself whenever the computer reboots
+       StartDisabled  = windows.SERVICE_DISABLED     // the service cannot be started
+
+       // The severity of the error, and action taken,
+       // if this service fails to start.
+       ErrorCritical = windows.SERVICE_ERROR_CRITICAL
+       ErrorIgnore   = windows.SERVICE_ERROR_IGNORE
+       ErrorNormal   = windows.SERVICE_ERROR_NORMAL
+       ErrorSevere   = windows.SERVICE_ERROR_SEVERE
+)
+
+// TODO(brainman): Password is not returned by windows.QueryServiceConfig, not sure how to get it.
+
+type Config struct {
+       ServiceType      uint32
+       StartType        uint32
+       ErrorControl     uint32
+       BinaryPathName   string // fully qualified path to the service binary file, can also include arguments for an auto-start service
+       LoadOrderGroup   string
+       TagId            uint32
+       Dependencies     []string
+       ServiceStartName string // name of the account under which the service should run
+       DisplayName      string
+       Password         string
+       Description      string
+}
+
+func toString(p *uint16) string {
+       if p == nil {
+               return ""
+       }
+       return syscall.UTF16ToString((*[4096]uint16)(unsafe.Pointer(p))[:])
+}
+
+func toStringSlice(ps *uint16) []string {
+       if ps == nil {
+               return nil
+       }
+       r := make([]string, 0)
+       for from, i, p := 0, 0, (*[1 << 24]uint16)(unsafe.Pointer(ps)); true; i++ {
+               if p[i] == 0 {
+                       // empty string marks the end
+                       if i <= from {
+                               break
+                       }
+                       r = append(r, string(utf16.Decode(p[from:i])))
+                       from = i + 1
+               }
+       }
+       return r
+}
+
+// Config retrieves service s configuration paramteres.
+func (s *Service) Config() (Config, error) {
+       var p *windows.QUERY_SERVICE_CONFIG
+       n := uint32(1024)
+       for {
+               b := make([]byte, n)
+               p = (*windows.QUERY_SERVICE_CONFIG)(unsafe.Pointer(&b[0]))
+               err := windows.QueryServiceConfig(s.Handle, p, n, &n)
+               if err == nil {
+                       break
+               }
+               if err.(syscall.Errno) != syscall.ERROR_INSUFFICIENT_BUFFER {
+                       return Config{}, err
+               }
+               if n <= uint32(len(b)) {
+                       return Config{}, err
+               }
+       }
+
+       var p2 *windows.SERVICE_DESCRIPTION
+       n = uint32(1024)
+       for {
+               b := make([]byte, n)
+               p2 = (*windows.SERVICE_DESCRIPTION)(unsafe.Pointer(&b[0]))
+               err := windows.QueryServiceConfig2(s.Handle,
+                       windows.SERVICE_CONFIG_DESCRIPTION, &b[0], n, &n)
+               if err == nil {
+                       break
+               }
+               if err.(syscall.Errno) != syscall.ERROR_INSUFFICIENT_BUFFER {
+                       return Config{}, err
+               }
+               if n <= uint32(len(b)) {
+                       return Config{}, err
+               }
+       }
+
+       return Config{
+               ServiceType:      p.ServiceType,
+               StartType:        p.StartType,
+               ErrorControl:     p.ErrorControl,
+               BinaryPathName:   toString(p.BinaryPathName),
+               LoadOrderGroup:   toString(p.LoadOrderGroup),
+               TagId:            p.TagId,
+               Dependencies:     toStringSlice(p.Dependencies),
+               ServiceStartName: toString(p.ServiceStartName),
+               DisplayName:      toString(p.DisplayName),
+               Description:      toString(p2.Description),
+       }, nil
+}
+
+func updateDescription(handle windows.Handle, desc string) error {
+       d := windows.SERVICE_DESCRIPTION{toPtr(desc)}
+       return windows.ChangeServiceConfig2(handle,
+               windows.SERVICE_CONFIG_DESCRIPTION, (*byte)(unsafe.Pointer(&d)))
+}
+
+// UpdateConfig updates service s configuration parameters.
+func (s *Service) UpdateConfig(c Config) error {
+       err := windows.ChangeServiceConfig(s.Handle, c.ServiceType, c.StartType,
+               c.ErrorControl, toPtr(c.BinaryPathName), toPtr(c.LoadOrderGroup),
+               nil, toStringBlock(c.Dependencies), toPtr(c.ServiceStartName),
+               toPtr(c.Password), toPtr(c.DisplayName))
+       if err != nil {
+               return err
+       }
+       return updateDescription(s.Handle, c.Description)
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go b/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go
new file mode 100644 (file)
index 0000000..da8ceb6
--- /dev/null
@@ -0,0 +1,119 @@
+// 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 windows
+
+// Package mgr can be used to manage Windows service programs.
+// It can be used to install and remove them. It can also start,
+// stop and pause them. The package can query / change current
+// service state and config parameters.
+//
+package mgr
+
+import (
+       "syscall"
+       "unicode/utf16"
+
+       "golang.org/x/sys/windows"
+)
+
+// Mgr is used to manage Windows service.
+type Mgr struct {
+       Handle windows.Handle
+}
+
+// Connect establishes a connection to the service control manager.
+func Connect() (*Mgr, error) {
+       return ConnectRemote("")
+}
+
+// ConnectRemote establishes a connection to the
+// service control manager on computer named host.
+func ConnectRemote(host string) (*Mgr, error) {
+       var s *uint16
+       if host != "" {
+               s = syscall.StringToUTF16Ptr(host)
+       }
+       h, err := windows.OpenSCManager(s, nil, windows.SC_MANAGER_ALL_ACCESS)
+       if err != nil {
+               return nil, err
+       }
+       return &Mgr{Handle: h}, nil
+}
+
+// Disconnect closes connection to the service control manager m.
+func (m *Mgr) Disconnect() error {
+       return windows.CloseServiceHandle(m.Handle)
+}
+
+func toPtr(s string) *uint16 {
+       if len(s) == 0 {
+               return nil
+       }
+       return syscall.StringToUTF16Ptr(s)
+}
+
+// toStringBlock terminates strings in ss with 0, and then
+// concatenates them together. It also adds extra 0 at the end.
+func toStringBlock(ss []string) *uint16 {
+       if len(ss) == 0 {
+               return nil
+       }
+       t := ""
+       for _, s := range ss {
+               if s != "" {
+                       t += s + "\x00"
+               }
+       }
+       if t == "" {
+               return nil
+       }
+       t += "\x00"
+       return &utf16.Encode([]rune(t))[0]
+}
+
+// CreateService installs new service name on the system.
+// The service will be executed by running exepath binary.
+// Use config c to specify service parameters.
+// If service StartType is set to StartAutomatic,
+// args will be passed to svc.Handle.Execute.
+func (m *Mgr) CreateService(name, exepath string, c Config, args ...string) (*Service, error) {
+       if c.StartType == 0 {
+               c.StartType = StartManual
+       }
+       if c.ErrorControl == 0 {
+               c.ErrorControl = ErrorNormal
+       }
+       if c.ServiceType == 0 {
+               c.ServiceType = windows.SERVICE_WIN32_OWN_PROCESS
+       }
+       s := syscall.EscapeArg(exepath)
+       for _, v := range args {
+               s += " " + syscall.EscapeArg(v)
+       }
+       h, err := windows.CreateService(m.Handle, toPtr(name), toPtr(c.DisplayName),
+               windows.SERVICE_ALL_ACCESS, c.ServiceType,
+               c.StartType, c.ErrorControl, toPtr(s), toPtr(c.LoadOrderGroup),
+               nil, toStringBlock(c.Dependencies), toPtr(c.ServiceStartName), toPtr(c.Password))
+       if err != nil {
+               return nil, err
+       }
+       if c.Description != "" {
+               err = updateDescription(h, c.Description)
+               if err != nil {
+                       return nil, err
+               }
+       }
+       return &Service{Name: name, Handle: h}, nil
+}
+
+// OpenService retrieves access to service name, so it can
+// be interrogated and controlled.
+func (m *Mgr) OpenService(name string) (*Service, error) {
+       h, err := windows.OpenService(m.Handle, syscall.StringToUTF16Ptr(name), windows.SERVICE_ALL_ACCESS)
+       if err != nil {
+               return nil, err
+       }
+       return &Service{Name: name, Handle: h}, nil
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go b/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go
new file mode 100644 (file)
index 0000000..78be970
--- /dev/null
@@ -0,0 +1,154 @@
+// 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 windows
+
+package mgr_test
+
+import (
+       "os"
+       "path/filepath"
+       "sort"
+       "strings"
+       "syscall"
+       "testing"
+       "time"
+
+       "golang.org/x/sys/windows/svc/mgr"
+)
+
+func TestOpenLanManServer(t *testing.T) {
+       m, err := mgr.Connect()
+       if err != nil {
+               if errno, ok := err.(syscall.Errno); ok && errno == syscall.ERROR_ACCESS_DENIED {
+                       t.Skip("Skipping test: we don't have rights to manage services.")
+               }
+               t.Fatalf("SCM connection failed: %s", err)
+       }
+       defer m.Disconnect()
+
+       s, err := m.OpenService("LanmanServer")
+       if err != nil {
+               t.Fatalf("OpenService(lanmanserver) failed: %s", err)
+       }
+       defer s.Close()
+
+       _, err = s.Config()
+       if err != nil {
+               t.Fatalf("Config failed: %s", err)
+       }
+}
+
+func install(t *testing.T, m *mgr.Mgr, name, exepath string, c mgr.Config) {
+       // Sometimes it takes a while for the service to get
+       // removed after previous test run.
+       for i := 0; ; i++ {
+               s, err := m.OpenService(name)
+               if err != nil {
+                       break
+               }
+               s.Close()
+
+               if i > 10 {
+                       t.Fatalf("service %s already exists", name)
+               }
+               time.Sleep(300 * time.Millisecond)
+       }
+
+       s, err := m.CreateService(name, exepath, c)
+       if err != nil {
+               t.Fatalf("CreateService(%s) failed: %v", name, err)
+       }
+       defer s.Close()
+}
+
+func depString(d []string) string {
+       if len(d) == 0 {
+               return ""
+       }
+       for i := range d {
+               d[i] = strings.ToLower(d[i])
+       }
+       ss := sort.StringSlice(d)
+       ss.Sort()
+       return strings.Join([]string(ss), " ")
+}
+
+func testConfig(t *testing.T, s *mgr.Service, should mgr.Config) mgr.Config {
+       is, err := s.Config()
+       if err != nil {
+               t.Fatalf("Config failed: %s", err)
+       }
+       if should.DisplayName != is.DisplayName {
+               t.Fatalf("config mismatch: DisplayName is %q, but should have %q", is.DisplayName, should.DisplayName)
+       }
+       if should.StartType != is.StartType {
+               t.Fatalf("config mismatch: StartType is %v, but should have %v", is.StartType, should.StartType)
+       }
+       if should.Description != is.Description {
+               t.Fatalf("config mismatch: Description is %q, but should have %q", is.Description, should.Description)
+       }
+       if depString(should.Dependencies) != depString(is.Dependencies) {
+               t.Fatalf("config mismatch: Dependencies is %v, but should have %v", is.Dependencies, should.Dependencies)
+       }
+       return is
+}
+
+func remove(t *testing.T, s *mgr.Service) {
+       err := s.Delete()
+       if err != nil {
+               t.Fatalf("Delete failed: %s", err)
+       }
+}
+
+func TestMyService(t *testing.T) {
+       if testing.Short() {
+               t.Skip("skipping test in short mode - it modifies system services")
+       }
+
+       const name = "myservice"
+
+       m, err := mgr.Connect()
+       if err != nil {
+               if errno, ok := err.(syscall.Errno); ok && errno == syscall.ERROR_ACCESS_DENIED {
+                       t.Skip("Skipping test: we don't have rights to manage services.")
+               }
+               t.Fatalf("SCM connection failed: %s", err)
+       }
+       defer m.Disconnect()
+
+       c := mgr.Config{
+               StartType:    mgr.StartDisabled,
+               DisplayName:  "my service",
+               Description:  "my service is just a test",
+               Dependencies: []string{"LanmanServer", "W32Time"},
+       }
+
+       exename := os.Args[0]
+       exepath, err := filepath.Abs(exename)
+       if err != nil {
+               t.Fatalf("filepath.Abs(%s) failed: %s", exename, err)
+       }
+
+       install(t, m, name, exepath, c)
+
+       s, err := m.OpenService(name)
+       if err != nil {
+               t.Fatalf("service %s is not installed", name)
+       }
+       defer s.Close()
+
+       c.BinaryPathName = exepath
+       c = testConfig(t, s, c)
+
+       c.StartType = mgr.StartManual
+       err = s.UpdateConfig(c)
+       if err != nil {
+               t.Fatalf("UpdateConfig failed: %v", err)
+       }
+
+       testConfig(t, s, c)
+
+       remove(t, s)
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/service.go b/vendor/golang.org/x/sys/windows/svc/mgr/service.go
new file mode 100644 (file)
index 0000000..465f3c3
--- /dev/null
@@ -0,0 +1,74 @@
+// 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 windows
+
+package mgr
+
+import (
+       "syscall"
+
+       "golang.org/x/sys/windows"
+       "golang.org/x/sys/windows/svc"
+)
+
+// TODO(brainman): Use EnumDependentServices to enumerate dependent services.
+
+// TODO(brainman): Use EnumServicesStatus to enumerate services in the specified service control manager database.
+
+// Service is used to access Windows service.
+type Service struct {
+       Name   string
+       Handle windows.Handle
+}
+
+// Delete marks service s for deletion from the service control manager database.
+func (s *Service) Delete() error {
+       return windows.DeleteService(s.Handle)
+}
+
+// Close relinquish access to the service s.
+func (s *Service) Close() error {
+       return windows.CloseServiceHandle(s.Handle)
+}
+
+// Start starts service s.
+// args will be passed to svc.Handler.Execute.
+func (s *Service) Start(args ...string) error {
+       var p **uint16
+       if len(args) > 0 {
+               vs := make([]*uint16, len(args))
+               for i, _ := range vs {
+                       vs[i] = syscall.StringToUTF16Ptr(args[i])
+               }
+               p = &vs[0]
+       }
+       return windows.StartService(s.Handle, uint32(len(args)), p)
+}
+
+// Control sends state change request c to the servce s.
+func (s *Service) Control(c svc.Cmd) (svc.Status, error) {
+       var t windows.SERVICE_STATUS
+       err := windows.ControlService(s.Handle, uint32(c), &t)
+       if err != nil {
+               return svc.Status{}, err
+       }
+       return svc.Status{
+               State:   svc.State(t.CurrentState),
+               Accepts: svc.Accepted(t.ControlsAccepted),
+       }, nil
+}
+
+// Query returns current status of service s.
+func (s *Service) Query() (svc.Status, error) {
+       var t windows.SERVICE_STATUS
+       err := windows.QueryServiceStatus(s.Handle, &t)
+       if err != nil {
+               return svc.Status{}, err
+       }
+       return svc.Status{
+               State:   svc.State(t.CurrentState),
+               Accepts: svc.Accepted(t.ControlsAccepted),
+       }, nil
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/security.go b/vendor/golang.org/x/sys/windows/svc/security.go
new file mode 100644 (file)
index 0000000..6fbc923
--- /dev/null
@@ -0,0 +1,62 @@
+// 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 windows
+
+package svc
+
+import (
+       "unsafe"
+
+       "golang.org/x/sys/windows"
+)
+
+func allocSid(subAuth0 uint32) (*windows.SID, error) {
+       var sid *windows.SID
+       err := windows.AllocateAndInitializeSid(&windows.SECURITY_NT_AUTHORITY,
+               1, subAuth0, 0, 0, 0, 0, 0, 0, 0, &sid)
+       if err != nil {
+               return nil, err
+       }
+       return sid, nil
+}
+
+// IsAnInteractiveSession determines if calling process is running interactively.
+// It queries the process token for membership in the Interactive group.
+// http://stackoverflow.com/questions/2668851/how-do-i-detect-that-my-application-is-running-as-service-or-in-an-interactive-s
+func IsAnInteractiveSession() (bool, error) {
+       interSid, err := allocSid(windows.SECURITY_INTERACTIVE_RID)
+       if err != nil {
+               return false, err
+       }
+       defer windows.FreeSid(interSid)
+
+       serviceSid, err := allocSid(windows.SECURITY_SERVICE_RID)
+       if err != nil {
+               return false, err
+       }
+       defer windows.FreeSid(serviceSid)
+
+       t, err := windows.OpenCurrentProcessToken()
+       if err != nil {
+               return false, err
+       }
+       defer t.Close()
+
+       gs, err := t.GetTokenGroups()
+       if err != nil {
+               return false, err
+       }
+       p := unsafe.Pointer(&gs.Groups[0])
+       groups := (*[2 << 20]windows.SIDAndAttributes)(p)[:gs.GroupCount]
+       for _, g := range groups {
+               if windows.EqualSid(g.Sid, interSid) {
+                       return true, nil
+               }
+               if windows.EqualSid(g.Sid, serviceSid) {
+                       return false, nil
+               }
+       }
+       return false, nil
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/service.go b/vendor/golang.org/x/sys/windows/svc/service.go
new file mode 100644 (file)
index 0000000..9864f7a
--- /dev/null
@@ -0,0 +1,316 @@
+// 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 windows
+
+// Package svc provides everything required to build Windows service.
+//
+package svc
+
+import (
+       "errors"
+       "runtime"
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/sys/windows"
+)
+
+// State describes service execution state (Stopped, Running and so on).
+type State uint32
+
+const (
+       Stopped         = State(windows.SERVICE_STOPPED)
+       StartPending    = State(windows.SERVICE_START_PENDING)
+       StopPending     = State(windows.SERVICE_STOP_PENDING)
+       Running         = State(windows.SERVICE_RUNNING)
+       ContinuePending = State(windows.SERVICE_CONTINUE_PENDING)
+       PausePending    = State(windows.SERVICE_PAUSE_PENDING)
+       Paused          = State(windows.SERVICE_PAUSED)
+)
+
+// Cmd represents service state change request. It is sent to a service
+// by the service manager, and should be actioned upon by the service.
+type Cmd uint32
+
+const (
+       Stop        = Cmd(windows.SERVICE_CONTROL_STOP)
+       Pause       = Cmd(windows.SERVICE_CONTROL_PAUSE)
+       Continue    = Cmd(windows.SERVICE_CONTROL_CONTINUE)
+       Interrogate = Cmd(windows.SERVICE_CONTROL_INTERROGATE)
+       Shutdown    = Cmd(windows.SERVICE_CONTROL_SHUTDOWN)
+)
+
+// Accepted is used to describe commands accepted by the service.
+// Note that Interrogate is always accepted.
+type Accepted uint32
+
+const (
+       AcceptStop             = Accepted(windows.SERVICE_ACCEPT_STOP)
+       AcceptShutdown         = Accepted(windows.SERVICE_ACCEPT_SHUTDOWN)
+       AcceptPauseAndContinue = Accepted(windows.SERVICE_ACCEPT_PAUSE_CONTINUE)
+)
+
+// Status combines State and Accepted commands to fully describe running service.
+type Status struct {
+       State      State
+       Accepts    Accepted
+       CheckPoint uint32 // used to report progress during a lengthy operation
+       WaitHint   uint32 // estimated time required for a pending operation, in milliseconds
+}
+
+// ChangeRequest is sent to the service Handler to request service status change.
+type ChangeRequest struct {
+       Cmd           Cmd
+       CurrentStatus Status
+}
+
+// Handler is the interface that must be implemented to build Windows service.
+type Handler interface {
+
+       // Execute will be called by the package code at the start of
+       // the service, and the service will exit once Execute completes.
+       // Inside Execute you must read service change requests from r and
+       // act accordingly. You must keep service control manager up to date
+       // about state of your service by writing into s as required.
+       // args contains service name followed by argument strings passed
+       // to the service.
+       // You can provide service exit code in exitCode return parameter,
+       // with 0 being "no error". You can also indicate if exit code,
+       // if any, is service specific or not by using svcSpecificEC
+       // parameter.
+       Execute(args []string, r <-chan ChangeRequest, s chan<- Status) (svcSpecificEC bool, exitCode uint32)
+}
+
+var (
+       // These are used by asm code.
+       goWaitsH                     uintptr
+       cWaitsH                      uintptr
+       ssHandle                     uintptr
+       sName                        *uint16
+       sArgc                        uintptr
+       sArgv                        **uint16
+       ctlHandlerProc               uintptr
+       cSetEvent                    uintptr
+       cWaitForSingleObject         uintptr
+       cRegisterServiceCtrlHandlerW uintptr
+)
+
+func init() {
+       k := syscall.MustLoadDLL("kernel32.dll")
+       cSetEvent = k.MustFindProc("SetEvent").Addr()
+       cWaitForSingleObject = k.MustFindProc("WaitForSingleObject").Addr()
+       a := syscall.MustLoadDLL("advapi32.dll")
+       cRegisterServiceCtrlHandlerW = a.MustFindProc("RegisterServiceCtrlHandlerW").Addr()
+}
+
+type ctlEvent struct {
+       cmd   Cmd
+       errno uint32
+}
+
+// service provides access to windows service api.
+type service struct {
+       name    string
+       h       windows.Handle
+       cWaits  *event
+       goWaits *event
+       c       chan ctlEvent
+       handler Handler
+}
+
+func newService(name string, handler Handler) (*service, error) {
+       var s service
+       var err error
+       s.name = name
+       s.c = make(chan ctlEvent)
+       s.handler = handler
+       s.cWaits, err = newEvent()
+       if err != nil {
+               return nil, err
+       }
+       s.goWaits, err = newEvent()
+       if err != nil {
+               s.cWaits.Close()
+               return nil, err
+       }
+       return &s, nil
+}
+
+func (s *service) close() error {
+       s.cWaits.Close()
+       s.goWaits.Close()
+       return nil
+}
+
+type exitCode struct {
+       isSvcSpecific bool
+       errno         uint32
+}
+
+func (s *service) updateStatus(status *Status, ec *exitCode) error {
+       if s.h == 0 {
+               return errors.New("updateStatus with no service status handle")
+       }
+       var t windows.SERVICE_STATUS
+       t.ServiceType = windows.SERVICE_WIN32_OWN_PROCESS
+       t.CurrentState = uint32(status.State)
+       if status.Accepts&AcceptStop != 0 {
+               t.ControlsAccepted |= windows.SERVICE_ACCEPT_STOP
+       }
+       if status.Accepts&AcceptShutdown != 0 {
+               t.ControlsAccepted |= windows.SERVICE_ACCEPT_SHUTDOWN
+       }
+       if status.Accepts&AcceptPauseAndContinue != 0 {
+               t.ControlsAccepted |= windows.SERVICE_ACCEPT_PAUSE_CONTINUE
+       }
+       if ec.errno == 0 {
+               t.Win32ExitCode = windows.NO_ERROR
+               t.ServiceSpecificExitCode = windows.NO_ERROR
+       } else if ec.isSvcSpecific {
+               t.Win32ExitCode = uint32(windows.ERROR_SERVICE_SPECIFIC_ERROR)
+               t.ServiceSpecificExitCode = ec.errno
+       } else {
+               t.Win32ExitCode = ec.errno
+               t.ServiceSpecificExitCode = windows.NO_ERROR
+       }
+       t.CheckPoint = status.CheckPoint
+       t.WaitHint = status.WaitHint
+       return windows.SetServiceStatus(s.h, &t)
+}
+
+const (
+       sysErrSetServiceStatusFailed = uint32(syscall.APPLICATION_ERROR) + iota
+       sysErrNewThreadInCallback
+)
+
+func (s *service) run() {
+       s.goWaits.Wait()
+       s.h = windows.Handle(ssHandle)
+       argv := (*[100]*int16)(unsafe.Pointer(sArgv))[:sArgc]
+       args := make([]string, len(argv))
+       for i, a := range argv {
+               args[i] = syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(a))[:])
+       }
+
+       cmdsToHandler := make(chan ChangeRequest)
+       changesFromHandler := make(chan Status)
+       exitFromHandler := make(chan exitCode)
+
+       go func() {
+               ss, errno := s.handler.Execute(args, cmdsToHandler, changesFromHandler)
+               exitFromHandler <- exitCode{ss, errno}
+       }()
+
+       status := Status{State: Stopped}
+       ec := exitCode{isSvcSpecific: true, errno: 0}
+       var outch chan ChangeRequest
+       inch := s.c
+       var cmd Cmd
+loop:
+       for {
+               select {
+               case r := <-inch:
+                       if r.errno != 0 {
+                               ec.errno = r.errno
+                               break loop
+                       }
+                       inch = nil
+                       outch = cmdsToHandler
+                       cmd = r.cmd
+               case outch <- ChangeRequest{cmd, status}:
+                       inch = s.c
+                       outch = nil
+               case c := <-changesFromHandler:
+                       err := s.updateStatus(&c, &ec)
+                       if err != nil {
+                               // best suitable error number
+                               ec.errno = sysErrSetServiceStatusFailed
+                               if err2, ok := err.(syscall.Errno); ok {
+                                       ec.errno = uint32(err2)
+                               }
+                               break loop
+                       }
+                       status = c
+               case ec = <-exitFromHandler:
+                       break loop
+               }
+       }
+
+       s.updateStatus(&Status{State: Stopped}, &ec)
+       s.cWaits.Set()
+}
+
+func newCallback(fn interface{}) (cb uintptr, err error) {
+       defer func() {
+               r := recover()
+               if r == nil {
+                       return
+               }
+               cb = 0
+               switch v := r.(type) {
+               case string:
+                       err = errors.New(v)
+               case error:
+                       err = v
+               default:
+                       err = errors.New("unexpected panic in syscall.NewCallback")
+               }
+       }()
+       return syscall.NewCallback(fn), nil
+}
+
+// BUG(brainman): There is no mechanism to run multiple services
+// inside one single executable. Perhaps, it can be overcome by
+// using RegisterServiceCtrlHandlerEx Windows api.
+
+// Run executes service name by calling appropriate handler function.
+func Run(name string, handler Handler) error {
+       runtime.LockOSThread()
+
+       tid := windows.GetCurrentThreadId()
+
+       s, err := newService(name, handler)
+       if err != nil {
+               return err
+       }
+
+       ctlHandler := func(ctl uint32) uintptr {
+               e := ctlEvent{cmd: Cmd(ctl)}
+               // We assume that this callback function is running on
+               // the same thread as Run. Nowhere in MS documentation
+               // I could find statement to guarantee that. So putting
+               // check here to verify, otherwise things will go bad
+               // quickly, if ignored.
+               i := windows.GetCurrentThreadId()
+               if i != tid {
+                       e.errno = sysErrNewThreadInCallback
+               }
+               s.c <- e
+               return 0
+       }
+
+       var svcmain uintptr
+       getServiceMain(&svcmain)
+       t := []windows.SERVICE_TABLE_ENTRY{
+               {syscall.StringToUTF16Ptr(s.name), svcmain},
+               {nil, 0},
+       }
+
+       goWaitsH = uintptr(s.goWaits.h)
+       cWaitsH = uintptr(s.cWaits.h)
+       sName = t[0].ServiceName
+       ctlHandlerProc, err = newCallback(ctlHandler)
+       if err != nil {
+               return err
+       }
+
+       go s.run()
+
+       err = windows.StartServiceCtrlDispatcher(&t[0])
+       if err != nil {
+               return err
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/svc_test.go b/vendor/golang.org/x/sys/windows/svc/svc_test.go
new file mode 100644 (file)
index 0000000..764da54
--- /dev/null
@@ -0,0 +1,118 @@
+// 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 windows
+
+package svc_test
+
+import (
+       "io/ioutil"
+       "os"
+       "os/exec"
+       "path/filepath"
+       "testing"
+       "time"
+
+       "golang.org/x/sys/windows/svc"
+       "golang.org/x/sys/windows/svc/mgr"
+)
+
+func getState(t *testing.T, s *mgr.Service) svc.State {
+       status, err := s.Query()
+       if err != nil {
+               t.Fatalf("Query(%s) failed: %s", s.Name, err)
+       }
+       return status.State
+}
+
+func testState(t *testing.T, s *mgr.Service, want svc.State) {
+       have := getState(t, s)
+       if have != want {
+               t.Fatalf("%s state is=%d want=%d", s.Name, have, want)
+       }
+}
+
+func waitState(t *testing.T, s *mgr.Service, want svc.State) {
+       for i := 0; ; i++ {
+               have := getState(t, s)
+               if have == want {
+                       return
+               }
+               if i > 10 {
+                       t.Fatalf("%s state is=%d, waiting timeout", s.Name, have)
+               }
+               time.Sleep(300 * time.Millisecond)
+       }
+}
+
+func TestExample(t *testing.T) {
+       if testing.Short() {
+               t.Skip("skipping test in short mode - it modifies system services")
+       }
+
+       const name = "myservice"
+
+       m, err := mgr.Connect()
+       if err != nil {
+               t.Fatalf("SCM connection failed: %s", err)
+       }
+       defer m.Disconnect()
+
+       dir, err := ioutil.TempDir("", "svc")
+       if err != nil {
+               t.Fatalf("failed to create temp directory: %v", err)
+       }
+       defer os.RemoveAll(dir)
+
+       exepath := filepath.Join(dir, "a.exe")
+       o, err := exec.Command("go", "build", "-o", exepath, "golang.org/x/sys/windows/svc/example").CombinedOutput()
+       if err != nil {
+               t.Fatalf("failed to build service program: %v\n%v", err, string(o))
+       }
+
+       s, err := m.OpenService(name)
+       if err == nil {
+               err = s.Delete()
+               if err != nil {
+                       s.Close()
+                       t.Fatalf("Delete failed: %s", err)
+               }
+               s.Close()
+       }
+       s, err = m.CreateService(name, exepath, mgr.Config{DisplayName: "my service"}, "is", "auto-started")
+       if err != nil {
+               t.Fatalf("CreateService(%s) failed: %v", name, err)
+       }
+       defer s.Close()
+
+       testState(t, s, svc.Stopped)
+       err = s.Start("is", "manual-started")
+       if err != nil {
+               t.Fatalf("Start(%s) failed: %s", s.Name, err)
+       }
+       waitState(t, s, svc.Running)
+       time.Sleep(1 * time.Second)
+
+       // testing deadlock from issues 4.
+       _, err = s.Control(svc.Interrogate)
+       if err != nil {
+               t.Fatalf("Control(%s) failed: %s", s.Name, err)
+       }
+       _, err = s.Control(svc.Interrogate)
+       if err != nil {
+               t.Fatalf("Control(%s) failed: %s", s.Name, err)
+       }
+       time.Sleep(1 * time.Second)
+
+       _, err = s.Control(svc.Stop)
+       if err != nil {
+               t.Fatalf("Control(%s) failed: %s", s.Name, err)
+       }
+       waitState(t, s, svc.Stopped)
+
+       err = s.Delete()
+       if err != nil {
+               t.Fatalf("Delete failed: %s", err)
+       }
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/sys_386.s b/vendor/golang.org/x/sys/windows/svc/sys_386.s
new file mode 100644 (file)
index 0000000..5e11bfa
--- /dev/null
@@ -0,0 +1,67 @@
+// 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 windows
+
+// func servicemain(argc uint32, argv **uint16)
+TEXT ·servicemain(SB),7,$0
+       MOVL    argc+0(FP), AX
+       MOVL    AX, ·sArgc(SB)
+       MOVL    argv+4(FP), AX
+       MOVL    AX, ·sArgv(SB)
+
+       PUSHL   BP
+       PUSHL   BX
+       PUSHL   SI
+       PUSHL   DI
+
+       SUBL    $12, SP
+
+       MOVL    ·sName(SB), AX
+       MOVL    AX, (SP)
+       MOVL    $·servicectlhandler(SB), AX
+       MOVL    AX, 4(SP)
+       MOVL    ·cRegisterServiceCtrlHandlerW(SB), AX
+       MOVL    SP, BP
+       CALL    AX
+       MOVL    BP, SP
+       CMPL    AX, $0
+       JE      exit
+       MOVL    AX, ·ssHandle(SB)
+
+       MOVL    ·goWaitsH(SB), AX
+       MOVL    AX, (SP)
+       MOVL    ·cSetEvent(SB), AX
+       MOVL    SP, BP
+       CALL    AX
+       MOVL    BP, SP
+
+       MOVL    ·cWaitsH(SB), AX
+       MOVL    AX, (SP)
+       MOVL    $-1, AX
+       MOVL    AX, 4(SP)
+       MOVL    ·cWaitForSingleObject(SB), AX
+       MOVL    SP, BP
+       CALL    AX
+       MOVL    BP, SP
+
+exit:
+       ADDL    $12, SP
+
+       POPL    DI
+       POPL    SI
+       POPL    BX
+       POPL    BP
+
+       MOVL    0(SP), CX
+       ADDL    $12, SP
+       JMP     CX
+
+// I do not know why, but this seems to be the only way to call
+// ctlHandlerProc on Windows 7.
+
+// func servicectlhandler(ctl uint32) uintptr
+TEXT ·servicectlhandler(SB),7,$0
+       MOVL    ·ctlHandlerProc(SB), CX
+       JMP     CX
diff --git a/vendor/golang.org/x/sys/windows/svc/sys_amd64.s b/vendor/golang.org/x/sys/windows/svc/sys_amd64.s
new file mode 100644 (file)
index 0000000..87dbec8
--- /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.
+
+// +build windows
+
+// func servicemain(argc uint32, argv **uint16)
+TEXT ·servicemain(SB),7,$0
+       MOVL    CX, ·sArgc(SB)
+       MOVL    DX, ·sArgv(SB)
+
+       SUBQ    $32, SP         // stack for the first 4 syscall params
+
+       MOVQ    ·sName(SB), CX
+       MOVQ    $·servicectlhandler(SB), DX
+       MOVQ    ·cRegisterServiceCtrlHandlerW(SB), AX
+       CALL    AX
+       CMPQ    AX, $0
+       JE      exit
+       MOVQ    AX, ·ssHandle(SB)
+
+       MOVQ    ·goWaitsH(SB), CX
+       MOVQ    ·cSetEvent(SB), AX
+       CALL    AX
+
+       MOVQ    ·cWaitsH(SB), CX
+       MOVQ    $4294967295, DX
+       MOVQ    ·cWaitForSingleObject(SB), AX
+       CALL    AX
+
+exit:
+       ADDQ    $32, SP
+       RET
+
+// I do not know why, but this seems to be the only way to call
+// ctlHandlerProc on Windows 7.
+
+// func servicectlhandler(ctl uint32) uintptr
+TEXT ·servicectlhandler(SB),7,$0
+       MOVQ    ·ctlHandlerProc(SB), AX
+       JMP     AX
diff --git a/vendor/golang.org/x/sys/windows/syscall.go b/vendor/golang.org/x/sys/windows/syscall.go
new file mode 100644 (file)
index 0000000..4e2fbe8
--- /dev/null
@@ -0,0 +1,71 @@
+// 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 windows
+
+// Package windows contains an interface to the low-level operating system
+// primitives.  OS details vary depending on the underlying system, and
+// by default, godoc will display the OS-specific documentation for the current
+// system.  If you want godoc to display syscall 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 windows // import "golang.org/x/sys/windows"
+
+import (
+       "syscall"
+)
+
+// 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, syscall.EINVAL).
+func ByteSliceFromString(s string) ([]byte, error) {
+       for i := 0; i < len(s); i++ {
+               if s[i] == 0 {
+                       return nil, syscall.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, syscall.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 mksyscall.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
+}
diff --git a/vendor/golang.org/x/sys/windows/syscall_test.go b/vendor/golang.org/x/sys/windows/syscall_test.go
new file mode 100644 (file)
index 0000000..62588b9
--- /dev/null
@@ -0,0 +1,33 @@
+// 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 windows
+
+package windows_test
+
+import (
+       "testing"
+
+       "golang.org/x/sys/windows"
+)
+
+func testSetGetenv(t *testing.T, key, value string) {
+       err := windows.Setenv(key, value)
+       if err != nil {
+               t.Fatalf("Setenv failed to set %q: %v", value, err)
+       }
+       newvalue, found := windows.Getenv(key)
+       if !found {
+               t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value)
+       }
+       if newvalue != value {
+               t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value)
+       }
+}
+
+func TestEnv(t *testing.T) {
+       testSetGetenv(t, "TESTENV", "AVALUE")
+       // make sure TESTENV gets set to "", not deleted
+       testSetGetenv(t, "TESTENV", "")
+}
diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go
new file mode 100644 (file)
index 0000000..99b11fe
--- /dev/null
@@ -0,0 +1,991 @@
+// 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.
+
+// Windows system calls.
+
+package windows
+
+import (
+       errorspkg "errors"
+       "sync"
+       "syscall"
+       "unicode/utf16"
+       "unsafe"
+)
+
+type Handle uintptr
+
+const InvalidHandle = ^Handle(0)
+
+// StringToUTF16 is deprecated. Use UTF16FromString instead.
+// If s contains a NUL byte this function panics instead of
+// returning an error.
+func StringToUTF16(s string) []uint16 {
+       a, err := UTF16FromString(s)
+       if err != nil {
+               panic("windows: string with NUL passed to StringToUTF16")
+       }
+       return a
+}
+
+// UTF16FromString returns the UTF-16 encoding of the UTF-8 string
+// s, with a terminating NUL added. If s contains a NUL byte at any
+// location, it returns (nil, syscall.EINVAL).
+func UTF16FromString(s string) ([]uint16, error) {
+       for i := 0; i < len(s); i++ {
+               if s[i] == 0 {
+                       return nil, syscall.EINVAL
+               }
+       }
+       return utf16.Encode([]rune(s + "\x00")), nil
+}
+
+// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
+// with a terminating NUL removed.
+func UTF16ToString(s []uint16) string {
+       for i, v := range s {
+               if v == 0 {
+                       s = s[0:i]
+                       break
+               }
+       }
+       return string(utf16.Decode(s))
+}
+
+// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.
+// If s contains a NUL byte this function panics instead of
+// returning an error.
+func StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] }
+
+// UTF16PtrFromString returns pointer to the UTF-16 encoding of
+// the UTF-8 string s, with a terminating NUL added. If s
+// contains a NUL byte at any location, it returns (nil, syscall.EINVAL).
+func UTF16PtrFromString(s string) (*uint16, error) {
+       a, err := UTF16FromString(s)
+       if err != nil {
+               return nil, err
+       }
+       return &a[0], nil
+}
+
+func Getpagesize() int { return 4096 }
+
+// Converts a Go function to a function pointer conforming
+// to the stdcall or cdecl calling convention.  This is useful when
+// interoperating with Windows code requiring callbacks.
+// Implemented in runtime/syscall_windows.goc
+func NewCallback(fn interface{}) uintptr
+func NewCallbackCDecl(fn interface{}) uintptr
+
+// windows api calls
+
+//sys  GetLastError() (lasterr error)
+//sys  LoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW
+//sys  LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW
+//sys  FreeLibrary(handle Handle) (err error)
+//sys  GetProcAddress(module Handle, procname string) (proc uintptr, err error)
+//sys  GetVersion() (ver uint32, err error)
+//sys  FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW
+//sys  ExitProcess(exitcode uint32)
+//sys  CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW
+//sys  ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
+//sys  WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
+//sys  SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]
+//sys  CloseHandle(handle Handle) (err error)
+//sys  GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle]
+//sys  SetStdHandle(stdhandle uint32, handle Handle) (err error)
+//sys  findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW
+//sys  findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW
+//sys  FindClose(handle Handle) (err error)
+//sys  GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error)
+//sys  GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW
+//sys  SetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW
+//sys  CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW
+//sys  RemoveDirectory(path *uint16) (err error) = RemoveDirectoryW
+//sys  DeleteFile(path *uint16) (err error) = DeleteFileW
+//sys  MoveFile(from *uint16, to *uint16) (err error) = MoveFileW
+//sys  MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW
+//sys  GetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW
+//sys  GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW
+//sys  SetEndOfFile(handle Handle) (err error)
+//sys  GetSystemTimeAsFileTime(time *Filetime)
+//sys  GetSystemTimePreciseAsFileTime(time *Filetime)
+//sys  GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff]
+//sys  CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error)
+//sys  GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error)
+//sys  PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error)
+//sys  CancelIo(s Handle) (err error)
+//sys  CancelIoEx(s Handle, o *Overlapped) (err error)
+//sys  CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW
+//sys  OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error)
+//sys  TerminateProcess(handle Handle, exitcode uint32) (err error)
+//sys  GetExitCodeProcess(handle Handle, exitcode *uint32) (err error)
+//sys  GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW
+//sys  GetCurrentProcess() (pseudoHandle Handle, err error)
+//sys  GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error)
+//sys  DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error)
+//sys  WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff]
+//sys  GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW
+//sys  CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error)
+//sys  GetFileType(filehandle Handle) (n uint32, err error)
+//sys  CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW
+//sys  CryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext
+//sys  CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom
+//sys  GetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW
+//sys  FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW
+//sys  GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW
+//sys  SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW
+//sys  SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)
+//sys  GetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW
+//sys  SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW
+//sys  GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW
+//sys  GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW
+//sys  CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW
+//sys  LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0]
+//sys  SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error)
+//sys  FlushFileBuffers(handle Handle) (err error)
+//sys  GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW
+//sys  GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW
+//sys  GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW
+//sys  CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) = kernel32.CreateFileMappingW
+//sys  MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error)
+//sys  UnmapViewOfFile(addr uintptr) (err error)
+//sys  FlushViewOfFile(addr uintptr, length uintptr) (err error)
+//sys  VirtualLock(addr uintptr, length uintptr) (err error)
+//sys  VirtualUnlock(addr uintptr, length uintptr) (err error)
+//sys  TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
+//sys  ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
+//sys  CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW
+//sys   CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) [failretval==InvalidHandle] = crypt32.CertOpenStore
+//sys  CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore
+//sys   CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore
+//sys  CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore
+//sys   CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain
+//sys   CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain
+//sys   CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext
+//sys   CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext
+//sys   CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy
+//sys  RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW
+//sys  RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey
+//sys  RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW
+//sys  RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW
+//sys  RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW
+//sys  getCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId
+//sys  GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode
+//sys  WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW
+//sys  ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW
+//sys  CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot
+//sys  Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW
+//sys  Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW
+//sys  DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error)
+// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.
+//sys  CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW
+//sys  CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW
+//sys  GetCurrentThreadId() (id uint32)
+//sys  CreateEvent(eventAttrs *syscall.SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) = kernel32.CreateEventW
+//sys  SetEvent(event Handle) (err error) = kernel32.SetEvent
+
+// syscall interface implementation for other packages
+
+func Exit(code int) { ExitProcess(uint32(code)) }
+
+func makeInheritSa() *SecurityAttributes {
+       var sa SecurityAttributes
+       sa.Length = uint32(unsafe.Sizeof(sa))
+       sa.InheritHandle = 1
+       return &sa
+}
+
+func Open(path string, mode int, perm uint32) (fd Handle, err error) {
+       if len(path) == 0 {
+               return InvalidHandle, ERROR_FILE_NOT_FOUND
+       }
+       pathp, err := UTF16PtrFromString(path)
+       if err != nil {
+               return InvalidHandle, err
+       }
+       var access uint32
+       switch mode & (O_RDONLY | O_WRONLY | O_RDWR) {
+       case O_RDONLY:
+               access = GENERIC_READ
+       case O_WRONLY:
+               access = GENERIC_WRITE
+       case O_RDWR:
+               access = GENERIC_READ | GENERIC_WRITE
+       }
+       if mode&O_CREAT != 0 {
+               access |= GENERIC_WRITE
+       }
+       if mode&O_APPEND != 0 {
+               access &^= GENERIC_WRITE
+               access |= FILE_APPEND_DATA
+       }
+       sharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE)
+       var sa *SecurityAttributes
+       if mode&O_CLOEXEC == 0 {
+               sa = makeInheritSa()
+       }
+       var createmode uint32
+       switch {
+       case mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL):
+               createmode = CREATE_NEW
+       case mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC):
+               createmode = CREATE_ALWAYS
+       case mode&O_CREAT == O_CREAT:
+               createmode = OPEN_ALWAYS
+       case mode&O_TRUNC == O_TRUNC:
+               createmode = TRUNCATE_EXISTING
+       default:
+               createmode = OPEN_EXISTING
+       }
+       h, e := CreateFile(pathp, access, sharemode, sa, createmode, FILE_ATTRIBUTE_NORMAL, 0)
+       return h, e
+}
+
+func Read(fd Handle, p []byte) (n int, err error) {
+       var done uint32
+       e := ReadFile(fd, p, &done, nil)
+       if e != nil {
+               if e == ERROR_BROKEN_PIPE {
+                       // NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin
+                       return 0, nil
+               }
+               return 0, e
+       }
+       if raceenabled {
+               if done > 0 {
+                       raceWriteRange(unsafe.Pointer(&p[0]), int(done))
+               }
+               raceAcquire(unsafe.Pointer(&ioSync))
+       }
+       return int(done), nil
+}
+
+func Write(fd Handle, p []byte) (n int, err error) {
+       if raceenabled {
+               raceReleaseMerge(unsafe.Pointer(&ioSync))
+       }
+       var done uint32
+       e := WriteFile(fd, p, &done, nil)
+       if e != nil {
+               return 0, e
+       }
+       if raceenabled && done > 0 {
+               raceReadRange(unsafe.Pointer(&p[0]), int(done))
+       }
+       return int(done), nil
+}
+
+var ioSync int64
+
+func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {
+       var w uint32
+       switch whence {
+       case 0:
+               w = FILE_BEGIN
+       case 1:
+               w = FILE_CURRENT
+       case 2:
+               w = FILE_END
+       }
+       hi := int32(offset >> 32)
+       lo := int32(offset)
+       // use GetFileType to check pipe, pipe can't do seek
+       ft, _ := GetFileType(fd)
+       if ft == FILE_TYPE_PIPE {
+               return 0, syscall.EPIPE
+       }
+       rlo, e := SetFilePointer(fd, lo, &hi, w)
+       if e != nil {
+               return 0, e
+       }
+       return int64(hi)<<32 + int64(rlo), nil
+}
+
+func Close(fd Handle) (err error) {
+       return CloseHandle(fd)
+}
+
+var (
+       Stdin  = getStdHandle(STD_INPUT_HANDLE)
+       Stdout = getStdHandle(STD_OUTPUT_HANDLE)
+       Stderr = getStdHandle(STD_ERROR_HANDLE)
+)
+
+func getStdHandle(stdhandle uint32) (fd Handle) {
+       r, _ := GetStdHandle(stdhandle)
+       CloseOnExec(r)
+       return r
+}
+
+const ImplementsGetwd = true
+
+func Getwd() (wd string, err error) {
+       b := make([]uint16, 300)
+       n, e := GetCurrentDirectory(uint32(len(b)), &b[0])
+       if e != nil {
+               return "", e
+       }
+       return string(utf16.Decode(b[0:n])), nil
+}
+
+func Chdir(path string) (err error) {
+       pathp, err := UTF16PtrFromString(path)
+       if err != nil {
+               return err
+       }
+       return SetCurrentDirectory(pathp)
+}
+
+func Mkdir(path string, mode uint32) (err error) {
+       pathp, err := UTF16PtrFromString(path)
+       if err != nil {
+               return err
+       }
+       return CreateDirectory(pathp, nil)
+}
+
+func Rmdir(path string) (err error) {
+       pathp, err := UTF16PtrFromString(path)
+       if err != nil {
+               return err
+       }
+       return RemoveDirectory(pathp)
+}
+
+func Unlink(path string) (err error) {
+       pathp, err := UTF16PtrFromString(path)
+       if err != nil {
+               return err
+       }
+       return DeleteFile(pathp)
+}
+
+func Rename(oldpath, newpath string) (err error) {
+       from, err := UTF16PtrFromString(oldpath)
+       if err != nil {
+               return err
+       }
+       to, err := UTF16PtrFromString(newpath)
+       if err != nil {
+               return err
+       }
+       return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING)
+}
+
+func ComputerName() (name string, err error) {
+       var n uint32 = MAX_COMPUTERNAME_LENGTH + 1
+       b := make([]uint16, n)
+       e := GetComputerName(&b[0], &n)
+       if e != nil {
+               return "", e
+       }
+       return string(utf16.Decode(b[0:n])), nil
+}
+
+func Ftruncate(fd Handle, length int64) (err error) {
+       curoffset, e := Seek(fd, 0, 1)
+       if e != nil {
+               return e
+       }
+       defer Seek(fd, curoffset, 0)
+       _, e = Seek(fd, length, 0)
+       if e != nil {
+               return e
+       }
+       e = SetEndOfFile(fd)
+       if e != nil {
+               return e
+       }
+       return nil
+}
+
+func Gettimeofday(tv *Timeval) (err error) {
+       var ft Filetime
+       GetSystemTimeAsFileTime(&ft)
+       *tv = NsecToTimeval(ft.Nanoseconds())
+       return nil
+}
+
+func Pipe(p []Handle) (err error) {
+       if len(p) != 2 {
+               return syscall.EINVAL
+       }
+       var r, w Handle
+       e := CreatePipe(&r, &w, makeInheritSa(), 0)
+       if e != nil {
+               return e
+       }
+       p[0] = r
+       p[1] = w
+       return nil
+}
+
+func Utimes(path string, tv []Timeval) (err error) {
+       if len(tv) != 2 {
+               return syscall.EINVAL
+       }
+       pathp, e := UTF16PtrFromString(path)
+       if e != nil {
+               return e
+       }
+       h, e := CreateFile(pathp,
+               FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,
+               OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
+       if e != nil {
+               return e
+       }
+       defer Close(h)
+       a := NsecToFiletime(tv[0].Nanoseconds())
+       w := NsecToFiletime(tv[1].Nanoseconds())
+       return SetFileTime(h, nil, &a, &w)
+}
+
+func UtimesNano(path string, ts []Timespec) (err error) {
+       if len(ts) != 2 {
+               return syscall.EINVAL
+       }
+       pathp, e := UTF16PtrFromString(path)
+       if e != nil {
+               return e
+       }
+       h, e := CreateFile(pathp,
+               FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,
+               OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
+       if e != nil {
+               return e
+       }
+       defer Close(h)
+       a := NsecToFiletime(TimespecToNsec(ts[0]))
+       w := NsecToFiletime(TimespecToNsec(ts[1]))
+       return SetFileTime(h, nil, &a, &w)
+}
+
+func Fsync(fd Handle) (err error) {
+       return FlushFileBuffers(fd)
+}
+
+func Chmod(path string, mode uint32) (err error) {
+       if mode == 0 {
+               return syscall.EINVAL
+       }
+       p, e := UTF16PtrFromString(path)
+       if e != nil {
+               return e
+       }
+       attrs, e := GetFileAttributes(p)
+       if e != nil {
+               return e
+       }
+       if mode&S_IWRITE != 0 {
+               attrs &^= FILE_ATTRIBUTE_READONLY
+       } else {
+               attrs |= FILE_ATTRIBUTE_READONLY
+       }
+       return SetFileAttributes(p, attrs)
+}
+
+func LoadCancelIoEx() error {
+       return procCancelIoEx.Find()
+}
+
+func LoadSetFileCompletionNotificationModes() error {
+       return procSetFileCompletionNotificationModes.Find()
+}
+
+// net api calls
+
+const socket_error = uintptr(^uint32(0))
+
+//sys  WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup
+//sys  WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup
+//sys  WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl
+//sys  socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket
+//sys  Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt
+//sys  Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt
+//sys  bind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind
+//sys  connect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect
+//sys  getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname
+//sys  getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername
+//sys  listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen
+//sys  shutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown
+//sys  Closesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket
+//sys  AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx
+//sys  GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs
+//sys  WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv
+//sys  WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend
+//sys  WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32,  from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom
+//sys  WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32,  overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo
+//sys  GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname
+//sys  GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname
+//sys  Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs
+//sys  GetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname
+//sys  DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W
+//sys  DnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree
+//sys  DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W
+//sys  GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW
+//sys  FreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW
+//sys  GetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry
+//sys  GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo
+//sys  SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes
+//sys  WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW
+//sys  GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses
+//sys  GetACP() (acp uint32) = kernel32.GetACP
+//sys  MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar
+
+// For testing: clients can set this flag to force
+// creation of IPv6 sockets to return EAFNOSUPPORT.
+var SocketDisableIPv6 bool
+
+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 RawSockaddr struct {
+       Family uint16
+       Data   [14]int8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [96]int8
+}
+
+type Sockaddr interface {
+       sockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs
+}
+
+type SockaddrInet4 struct {
+       Port int
+       Addr [4]byte
+       raw  RawSockaddrInet4
+}
+
+func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) {
+       if sa.Port < 0 || sa.Port > 0xFFFF {
+               return nil, 0, syscall.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), int32(unsafe.Sizeof(sa.raw)), nil
+}
+
+type SockaddrInet6 struct {
+       Port   int
+       ZoneId uint32
+       Addr   [16]byte
+       raw    RawSockaddrInet6
+}
+
+func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) {
+       if sa.Port < 0 || sa.Port > 0xFFFF {
+               return nil, 0, syscall.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), int32(unsafe.Sizeof(sa.raw)), nil
+}
+
+type SockaddrUnix struct {
+       Name string
+}
+
+func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) {
+       // TODO(brainman): implement SockaddrUnix.sockaddr()
+       return nil, 0, syscall.EWINDOWS
+}
+
+func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
+       switch rsa.Addr.Family {
+       case AF_UNIX:
+               return nil, syscall.EWINDOWS
+
+       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, syscall.EAFNOSUPPORT
+}
+
+func Socket(domain, typ, proto int) (fd Handle, err error) {
+       if domain == AF_INET6 && SocketDisableIPv6 {
+               return InvalidHandle, syscall.EAFNOSUPPORT
+       }
+       return socket(int32(domain), int32(typ), int32(proto))
+}
+
+func SetsockoptInt(fd Handle, level, opt int, value int) (err error) {
+       v := int32(value)
+       return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v)))
+}
+
+func Bind(fd Handle, sa Sockaddr) (err error) {
+       ptr, n, err := sa.sockaddr()
+       if err != nil {
+               return err
+       }
+       return bind(fd, ptr, n)
+}
+
+func Connect(fd Handle, sa Sockaddr) (err error) {
+       ptr, n, err := sa.sockaddr()
+       if err != nil {
+               return err
+       }
+       return connect(fd, ptr, n)
+}
+
+func Getsockname(fd Handle) (sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       l := int32(unsafe.Sizeof(rsa))
+       if err = getsockname(fd, &rsa, &l); err != nil {
+               return
+       }
+       return rsa.Sockaddr()
+}
+
+func Getpeername(fd Handle) (sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       l := int32(unsafe.Sizeof(rsa))
+       if err = getpeername(fd, &rsa, &l); err != nil {
+               return
+       }
+       return rsa.Sockaddr()
+}
+
+func Listen(s Handle, n int) (err error) {
+       return listen(s, int32(n))
+}
+
+func Shutdown(fd Handle, how int) (err error) {
+       return shutdown(fd, int32(how))
+}
+
+func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) {
+       rsa, l, err := to.sockaddr()
+       if err != nil {
+               return err
+       }
+       return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine)
+}
+
+func LoadGetAddrInfo() error {
+       return procGetAddrInfoW.Find()
+}
+
+var connectExFunc struct {
+       once sync.Once
+       addr uintptr
+       err  error
+}
+
+func LoadConnectEx() error {
+       connectExFunc.once.Do(func() {
+               var s Handle
+               s, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
+               if connectExFunc.err != nil {
+                       return
+               }
+               defer CloseHandle(s)
+               var n uint32
+               connectExFunc.err = WSAIoctl(s,
+                       SIO_GET_EXTENSION_FUNCTION_POINTER,
+                       (*byte)(unsafe.Pointer(&WSAID_CONNECTEX)),
+                       uint32(unsafe.Sizeof(WSAID_CONNECTEX)),
+                       (*byte)(unsafe.Pointer(&connectExFunc.addr)),
+                       uint32(unsafe.Sizeof(connectExFunc.addr)),
+                       &n, nil, 0)
+       })
+       return connectExFunc.err
+}
+
+func connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = error(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error {
+       err := LoadConnectEx()
+       if err != nil {
+               return errorspkg.New("failed to find ConnectEx: " + err.Error())
+       }
+       ptr, n, err := sa.sockaddr()
+       if err != nil {
+               return err
+       }
+       return connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped)
+}
+
+// Invented structures to support what package os expects.
+type Rusage struct {
+       CreationTime Filetime
+       ExitTime     Filetime
+       KernelTime   Filetime
+       UserTime     Filetime
+}
+
+type WaitStatus struct {
+       ExitCode uint32
+}
+
+func (w WaitStatus) Exited() bool { return true }
+
+func (w WaitStatus) ExitStatus() int { return int(w.ExitCode) }
+
+func (w WaitStatus) Signal() Signal { return -1 }
+
+func (w WaitStatus) CoreDump() bool { return false }
+
+func (w WaitStatus) Stopped() bool { return false }
+
+func (w WaitStatus) Continued() bool { return false }
+
+func (w WaitStatus) StopSignal() Signal { return -1 }
+
+func (w WaitStatus) Signaled() bool { return false }
+
+func (w WaitStatus) TrapCause() int { return -1 }
+
+// Timespec is an invented structure on Windows, but here for
+// consistency with the corresponding package for other operating systems.
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+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
+}
+
+// TODO(brainman): fix all needed for net
+
+func Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS }
+func Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) {
+       return 0, nil, syscall.EWINDOWS
+}
+func Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error)       { return syscall.EWINDOWS }
+func SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS }
+
+// The Linger struct is wrong but we only noticed after Go 1.
+// sysLinger is the real system call structure.
+
+// BUG(brainman): The definition of Linger is not appropriate for direct use
+// with Setsockopt and Getsockopt.
+// Use SetsockoptLinger instead.
+
+type Linger struct {
+       Onoff  int32
+       Linger int32
+}
+
+type sysLinger struct {
+       Onoff  uint16
+       Linger uint16
+}
+
+type IPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+func GetsockoptInt(fd Handle, level, opt int) (int, error) { return -1, syscall.EWINDOWS }
+
+func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) {
+       sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)}
+       return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys)))
+}
+
+func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) {
+       return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4)
+}
+func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) {
+       return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq)))
+}
+func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) {
+       return syscall.EWINDOWS
+}
+
+func Getpid() (pid int) { return int(getCurrentProcessId()) }
+
+func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) {
+       // NOTE(rsc): The Win32finddata struct is wrong for the system call:
+       // the two paths are each one uint16 short. Use the correct struct,
+       // a win32finddata1, and then copy the results out.
+       // There is no loss of expressivity here, because the final
+       // uint16, if it is used, is supposed to be a NUL, and Go doesn't need that.
+       // For Go 1.1, we might avoid the allocation of win32finddata1 here
+       // by adding a final Bug [2]uint16 field to the struct and then
+       // adjusting the fields in the result directly.
+       var data1 win32finddata1
+       handle, err = findFirstFile1(name, &data1)
+       if err == nil {
+               copyFindData(data, &data1)
+       }
+       return
+}
+
+func FindNextFile(handle Handle, data *Win32finddata) (err error) {
+       var data1 win32finddata1
+       err = findNextFile1(handle, &data1)
+       if err == nil {
+               copyFindData(data, &data1)
+       }
+       return
+}
+
+func getProcessEntry(pid int) (*ProcessEntry32, error) {
+       snapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
+       if err != nil {
+               return nil, err
+       }
+       defer CloseHandle(snapshot)
+       var procEntry ProcessEntry32
+       procEntry.Size = uint32(unsafe.Sizeof(procEntry))
+       if err = Process32First(snapshot, &procEntry); err != nil {
+               return nil, err
+       }
+       for {
+               if procEntry.ProcessID == uint32(pid) {
+                       return &procEntry, nil
+               }
+               err = Process32Next(snapshot, &procEntry)
+               if err != nil {
+                       return nil, err
+               }
+       }
+}
+
+func Getppid() (ppid int) {
+       pe, err := getProcessEntry(Getpid())
+       if err != nil {
+               return -1
+       }
+       return int(pe.ParentProcessID)
+}
+
+// TODO(brainman): fix all needed for os
+func Fchdir(fd Handle) (err error)             { return syscall.EWINDOWS }
+func Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS }
+func Symlink(path, link string) (err error)    { return syscall.EWINDOWS }
+
+func Fchmod(fd Handle, mode uint32) (err error)        { return syscall.EWINDOWS }
+func Chown(path string, uid int, gid int) (err error)  { return syscall.EWINDOWS }
+func Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS }
+func Fchown(fd Handle, uid int, gid int) (err error)   { return syscall.EWINDOWS }
+
+func Getuid() (uid int)                  { return -1 }
+func Geteuid() (euid int)                { return -1 }
+func Getgid() (gid int)                  { return -1 }
+func Getegid() (egid int)                { return -1 }
+func Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS }
+
+type Signal int
+
+func (s Signal) Signal() {}
+
+func (s Signal) String() string {
+       if 0 <= s && int(s) < len(signals) {
+               str := signals[s]
+               if str != "" {
+                       return str
+               }
+       }
+       return "signal " + itoa(int(s))
+}
+
+func LoadCreateSymbolicLink() error {
+       return procCreateSymbolicLinkW.Find()
+}
+
+// Readlink returns the destination of the named symbolic link.
+func Readlink(path string, buf []byte) (n int, err error) {
+       fd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING,
+               FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0)
+       if err != nil {
+               return -1, err
+       }
+       defer CloseHandle(fd)
+
+       rdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE)
+       var bytesReturned uint32
+       err = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil)
+       if err != nil {
+               return -1, err
+       }
+
+       rdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0]))
+       var s string
+       switch rdb.ReparseTag {
+       case IO_REPARSE_TAG_SYMLINK:
+               data := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))
+               p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))
+               s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])
+       case IO_REPARSE_TAG_MOUNT_POINT:
+               data := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer))
+               p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0]))
+               s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2])
+       default:
+               // the path is not a symlink or junction but another type of reparse
+               // point
+               return -1, syscall.ENOENT
+       }
+       n = copy(buf, []byte(s))
+
+       return n, nil
+}
diff --git a/vendor/golang.org/x/sys/windows/syscall_windows_test.go b/vendor/golang.org/x/sys/windows/syscall_windows_test.go
new file mode 100644 (file)
index 0000000..0f73c11
--- /dev/null
@@ -0,0 +1,107 @@
+// 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 windows_test
+
+import (
+       "io/ioutil"
+       "os"
+       "path/filepath"
+       "syscall"
+       "testing"
+       "unsafe"
+
+       "golang.org/x/sys/windows"
+)
+
+func TestWin32finddata(t *testing.T) {
+       dir, err := ioutil.TempDir("", "go-build")
+       if err != nil {
+               t.Fatalf("failed to create temp directory: %v", err)
+       }
+       defer os.RemoveAll(dir)
+
+       path := filepath.Join(dir, "long_name.and_extension")
+       f, err := os.Create(path)
+       if err != nil {
+               t.Fatalf("failed to create %v: %v", path, err)
+       }
+       f.Close()
+
+       type X struct {
+               fd  windows.Win32finddata
+               got byte
+               pad [10]byte // to protect ourselves
+
+       }
+       var want byte = 2 // it is unlikely to have this character in the filename
+       x := X{got: want}
+
+       pathp, _ := windows.UTF16PtrFromString(path)
+       h, err := windows.FindFirstFile(pathp, &(x.fd))
+       if err != nil {
+               t.Fatalf("FindFirstFile failed: %v", err)
+       }
+       err = windows.FindClose(h)
+       if err != nil {
+               t.Fatalf("FindClose failed: %v", err)
+       }
+
+       if x.got != want {
+               t.Fatalf("memory corruption: want=%d got=%d", want, x.got)
+       }
+}
+
+func TestFormatMessage(t *testing.T) {
+       dll := windows.MustLoadDLL("pdh.dll")
+
+       pdhOpenQuery := func(datasrc *uint16, userdata uint32, query *windows.Handle) (errno uintptr) {
+               r0, _, _ := syscall.Syscall(dll.MustFindProc("PdhOpenQueryW").Addr(), 3, uintptr(unsafe.Pointer(datasrc)), uintptr(userdata), uintptr(unsafe.Pointer(query)))
+               return r0
+       }
+
+       pdhCloseQuery := func(query windows.Handle) (errno uintptr) {
+               r0, _, _ := syscall.Syscall(dll.MustFindProc("PdhCloseQuery").Addr(), 1, uintptr(query), 0, 0)
+               return r0
+       }
+
+       var q windows.Handle
+       name, err := windows.UTF16PtrFromString("no_such_source")
+       if err != nil {
+               t.Fatal(err)
+       }
+       errno := pdhOpenQuery(name, 0, &q)
+       if errno == 0 {
+               pdhCloseQuery(q)
+               t.Fatal("PdhOpenQuery succeeded, but expected to fail.")
+       }
+
+       const flags uint32 = syscall.FORMAT_MESSAGE_FROM_HMODULE | syscall.FORMAT_MESSAGE_ARGUMENT_ARRAY | syscall.FORMAT_MESSAGE_IGNORE_INSERTS
+       buf := make([]uint16, 300)
+       _, err = windows.FormatMessage(flags, uintptr(dll.Handle), uint32(errno), 0, buf, nil)
+       if err != nil {
+               t.Fatal("FormatMessage for handle=%x and errno=%x failed: %v", dll.Handle, errno, err)
+       }
+}
+
+func abort(funcname string, err error) {
+       panic(funcname + " failed: " + err.Error())
+}
+
+func ExampleLoadLibrary() {
+       h, err := windows.LoadLibrary("kernel32.dll")
+       if err != nil {
+               abort("LoadLibrary", err)
+       }
+       defer windows.FreeLibrary(h)
+       proc, err := windows.GetProcAddress(h, "GetVersion")
+       if err != nil {
+               abort("GetProcAddress", err)
+       }
+       r, _, _ := syscall.Syscall(uintptr(proc), 0, 0, 0, 0)
+       major := byte(r)
+       minor := uint8(r >> 8)
+       build := uint16(r >> 16)
+       print("windows version ", major, ".", minor, " (Build ", build, ")\n")
+}
diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go
new file mode 100644 (file)
index 0000000..f7bc8d6
--- /dev/null
@@ -0,0 +1,2289 @@
+// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT
+
+package windows
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ unsafe.Pointer
+
+// Do the interface allocations only once for common
+// Errno values.
+const (
+       errnoERROR_IO_PENDING = 997
+)
+
+var (
+       errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
+)
+
+// errnoErr returns common boxed Errno values, to prevent
+// allocations at runtime.
+func errnoErr(e syscall.Errno) error {
+       switch e {
+       case 0:
+               return nil
+       case errnoERROR_IO_PENDING:
+               return errERROR_IO_PENDING
+       }
+       // TODO: add more here, after collecting data on the common
+       // error values see on Windows. (perhaps when running
+       // all.bat?)
+       return e
+}
+
+var (
+       modadvapi32 = NewLazySystemDLL("advapi32.dll")
+       modkernel32 = NewLazySystemDLL("kernel32.dll")
+       modshell32  = NewLazySystemDLL("shell32.dll")
+       modmswsock  = NewLazySystemDLL("mswsock.dll")
+       modcrypt32  = NewLazySystemDLL("crypt32.dll")
+       modws2_32   = NewLazySystemDLL("ws2_32.dll")
+       moddnsapi   = NewLazySystemDLL("dnsapi.dll")
+       modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
+       modsecur32  = NewLazySystemDLL("secur32.dll")
+       modnetapi32 = NewLazySystemDLL("netapi32.dll")
+       moduserenv  = NewLazySystemDLL("userenv.dll")
+
+       procRegisterEventSourceW               = modadvapi32.NewProc("RegisterEventSourceW")
+       procDeregisterEventSource              = modadvapi32.NewProc("DeregisterEventSource")
+       procReportEventW                       = modadvapi32.NewProc("ReportEventW")
+       procOpenSCManagerW                     = modadvapi32.NewProc("OpenSCManagerW")
+       procCloseServiceHandle                 = modadvapi32.NewProc("CloseServiceHandle")
+       procCreateServiceW                     = modadvapi32.NewProc("CreateServiceW")
+       procOpenServiceW                       = modadvapi32.NewProc("OpenServiceW")
+       procDeleteService                      = modadvapi32.NewProc("DeleteService")
+       procStartServiceW                      = modadvapi32.NewProc("StartServiceW")
+       procQueryServiceStatus                 = modadvapi32.NewProc("QueryServiceStatus")
+       procControlService                     = modadvapi32.NewProc("ControlService")
+       procStartServiceCtrlDispatcherW        = modadvapi32.NewProc("StartServiceCtrlDispatcherW")
+       procSetServiceStatus                   = modadvapi32.NewProc("SetServiceStatus")
+       procChangeServiceConfigW               = modadvapi32.NewProc("ChangeServiceConfigW")
+       procQueryServiceConfigW                = modadvapi32.NewProc("QueryServiceConfigW")
+       procChangeServiceConfig2W              = modadvapi32.NewProc("ChangeServiceConfig2W")
+       procQueryServiceConfig2W               = modadvapi32.NewProc("QueryServiceConfig2W")
+       procGetLastError                       = modkernel32.NewProc("GetLastError")
+       procLoadLibraryW                       = modkernel32.NewProc("LoadLibraryW")
+       procLoadLibraryExW                     = modkernel32.NewProc("LoadLibraryExW")
+       procFreeLibrary                        = modkernel32.NewProc("FreeLibrary")
+       procGetProcAddress                     = modkernel32.NewProc("GetProcAddress")
+       procGetVersion                         = modkernel32.NewProc("GetVersion")
+       procFormatMessageW                     = modkernel32.NewProc("FormatMessageW")
+       procExitProcess                        = modkernel32.NewProc("ExitProcess")
+       procCreateFileW                        = modkernel32.NewProc("CreateFileW")
+       procReadFile                           = modkernel32.NewProc("ReadFile")
+       procWriteFile                          = modkernel32.NewProc("WriteFile")
+       procSetFilePointer                     = modkernel32.NewProc("SetFilePointer")
+       procCloseHandle                        = modkernel32.NewProc("CloseHandle")
+       procGetStdHandle                       = modkernel32.NewProc("GetStdHandle")
+       procSetStdHandle                       = modkernel32.NewProc("SetStdHandle")
+       procFindFirstFileW                     = modkernel32.NewProc("FindFirstFileW")
+       procFindNextFileW                      = modkernel32.NewProc("FindNextFileW")
+       procFindClose                          = modkernel32.NewProc("FindClose")
+       procGetFileInformationByHandle         = modkernel32.NewProc("GetFileInformationByHandle")
+       procGetCurrentDirectoryW               = modkernel32.NewProc("GetCurrentDirectoryW")
+       procSetCurrentDirectoryW               = modkernel32.NewProc("SetCurrentDirectoryW")
+       procCreateDirectoryW                   = modkernel32.NewProc("CreateDirectoryW")
+       procRemoveDirectoryW                   = modkernel32.NewProc("RemoveDirectoryW")
+       procDeleteFileW                        = modkernel32.NewProc("DeleteFileW")
+       procMoveFileW                          = modkernel32.NewProc("MoveFileW")
+       procMoveFileExW                        = modkernel32.NewProc("MoveFileExW")
+       procGetComputerNameW                   = modkernel32.NewProc("GetComputerNameW")
+       procGetComputerNameExW                 = modkernel32.NewProc("GetComputerNameExW")
+       procSetEndOfFile                       = modkernel32.NewProc("SetEndOfFile")
+       procGetSystemTimeAsFileTime            = modkernel32.NewProc("GetSystemTimeAsFileTime")
+       procGetSystemTimePreciseAsFileTime     = modkernel32.NewProc("GetSystemTimePreciseAsFileTime")
+       procGetTimeZoneInformation             = modkernel32.NewProc("GetTimeZoneInformation")
+       procCreateIoCompletionPort             = modkernel32.NewProc("CreateIoCompletionPort")
+       procGetQueuedCompletionStatus          = modkernel32.NewProc("GetQueuedCompletionStatus")
+       procPostQueuedCompletionStatus         = modkernel32.NewProc("PostQueuedCompletionStatus")
+       procCancelIo                           = modkernel32.NewProc("CancelIo")
+       procCancelIoEx                         = modkernel32.NewProc("CancelIoEx")
+       procCreateProcessW                     = modkernel32.NewProc("CreateProcessW")
+       procOpenProcess                        = modkernel32.NewProc("OpenProcess")
+       procTerminateProcess                   = modkernel32.NewProc("TerminateProcess")
+       procGetExitCodeProcess                 = modkernel32.NewProc("GetExitCodeProcess")
+       procGetStartupInfoW                    = modkernel32.NewProc("GetStartupInfoW")
+       procGetCurrentProcess                  = modkernel32.NewProc("GetCurrentProcess")
+       procGetProcessTimes                    = modkernel32.NewProc("GetProcessTimes")
+       procDuplicateHandle                    = modkernel32.NewProc("DuplicateHandle")
+       procWaitForSingleObject                = modkernel32.NewProc("WaitForSingleObject")
+       procGetTempPathW                       = modkernel32.NewProc("GetTempPathW")
+       procCreatePipe                         = modkernel32.NewProc("CreatePipe")
+       procGetFileType                        = modkernel32.NewProc("GetFileType")
+       procCryptAcquireContextW               = modadvapi32.NewProc("CryptAcquireContextW")
+       procCryptReleaseContext                = modadvapi32.NewProc("CryptReleaseContext")
+       procCryptGenRandom                     = modadvapi32.NewProc("CryptGenRandom")
+       procGetEnvironmentStringsW             = modkernel32.NewProc("GetEnvironmentStringsW")
+       procFreeEnvironmentStringsW            = modkernel32.NewProc("FreeEnvironmentStringsW")
+       procGetEnvironmentVariableW            = modkernel32.NewProc("GetEnvironmentVariableW")
+       procSetEnvironmentVariableW            = modkernel32.NewProc("SetEnvironmentVariableW")
+       procSetFileTime                        = modkernel32.NewProc("SetFileTime")
+       procGetFileAttributesW                 = modkernel32.NewProc("GetFileAttributesW")
+       procSetFileAttributesW                 = modkernel32.NewProc("SetFileAttributesW")
+       procGetFileAttributesExW               = modkernel32.NewProc("GetFileAttributesExW")
+       procGetCommandLineW                    = modkernel32.NewProc("GetCommandLineW")
+       procCommandLineToArgvW                 = modshell32.NewProc("CommandLineToArgvW")
+       procLocalFree                          = modkernel32.NewProc("LocalFree")
+       procSetHandleInformation               = modkernel32.NewProc("SetHandleInformation")
+       procFlushFileBuffers                   = modkernel32.NewProc("FlushFileBuffers")
+       procGetFullPathNameW                   = modkernel32.NewProc("GetFullPathNameW")
+       procGetLongPathNameW                   = modkernel32.NewProc("GetLongPathNameW")
+       procGetShortPathNameW                  = modkernel32.NewProc("GetShortPathNameW")
+       procCreateFileMappingW                 = modkernel32.NewProc("CreateFileMappingW")
+       procMapViewOfFile                      = modkernel32.NewProc("MapViewOfFile")
+       procUnmapViewOfFile                    = modkernel32.NewProc("UnmapViewOfFile")
+       procFlushViewOfFile                    = modkernel32.NewProc("FlushViewOfFile")
+       procVirtualLock                        = modkernel32.NewProc("VirtualLock")
+       procVirtualUnlock                      = modkernel32.NewProc("VirtualUnlock")
+       procTransmitFile                       = modmswsock.NewProc("TransmitFile")
+       procReadDirectoryChangesW              = modkernel32.NewProc("ReadDirectoryChangesW")
+       procCertOpenSystemStoreW               = modcrypt32.NewProc("CertOpenSystemStoreW")
+       procCertOpenStore                      = modcrypt32.NewProc("CertOpenStore")
+       procCertEnumCertificatesInStore        = modcrypt32.NewProc("CertEnumCertificatesInStore")
+       procCertAddCertificateContextToStore   = modcrypt32.NewProc("CertAddCertificateContextToStore")
+       procCertCloseStore                     = modcrypt32.NewProc("CertCloseStore")
+       procCertGetCertificateChain            = modcrypt32.NewProc("CertGetCertificateChain")
+       procCertFreeCertificateChain           = modcrypt32.NewProc("CertFreeCertificateChain")
+       procCertCreateCertificateContext       = modcrypt32.NewProc("CertCreateCertificateContext")
+       procCertFreeCertificateContext         = modcrypt32.NewProc("CertFreeCertificateContext")
+       procCertVerifyCertificateChainPolicy   = modcrypt32.NewProc("CertVerifyCertificateChainPolicy")
+       procRegOpenKeyExW                      = modadvapi32.NewProc("RegOpenKeyExW")
+       procRegCloseKey                        = modadvapi32.NewProc("RegCloseKey")
+       procRegQueryInfoKeyW                   = modadvapi32.NewProc("RegQueryInfoKeyW")
+       procRegEnumKeyExW                      = modadvapi32.NewProc("RegEnumKeyExW")
+       procRegQueryValueExW                   = modadvapi32.NewProc("RegQueryValueExW")
+       procGetCurrentProcessId                = modkernel32.NewProc("GetCurrentProcessId")
+       procGetConsoleMode                     = modkernel32.NewProc("GetConsoleMode")
+       procWriteConsoleW                      = modkernel32.NewProc("WriteConsoleW")
+       procReadConsoleW                       = modkernel32.NewProc("ReadConsoleW")
+       procCreateToolhelp32Snapshot           = modkernel32.NewProc("CreateToolhelp32Snapshot")
+       procProcess32FirstW                    = modkernel32.NewProc("Process32FirstW")
+       procProcess32NextW                     = modkernel32.NewProc("Process32NextW")
+       procDeviceIoControl                    = modkernel32.NewProc("DeviceIoControl")
+       procCreateSymbolicLinkW                = modkernel32.NewProc("CreateSymbolicLinkW")
+       procCreateHardLinkW                    = modkernel32.NewProc("CreateHardLinkW")
+       procGetCurrentThreadId                 = modkernel32.NewProc("GetCurrentThreadId")
+       procCreateEventW                       = modkernel32.NewProc("CreateEventW")
+       procSetEvent                           = modkernel32.NewProc("SetEvent")
+       procWSAStartup                         = modws2_32.NewProc("WSAStartup")
+       procWSACleanup                         = modws2_32.NewProc("WSACleanup")
+       procWSAIoctl                           = modws2_32.NewProc("WSAIoctl")
+       procsocket                             = modws2_32.NewProc("socket")
+       procsetsockopt                         = modws2_32.NewProc("setsockopt")
+       procgetsockopt                         = modws2_32.NewProc("getsockopt")
+       procbind                               = modws2_32.NewProc("bind")
+       procconnect                            = modws2_32.NewProc("connect")
+       procgetsockname                        = modws2_32.NewProc("getsockname")
+       procgetpeername                        = modws2_32.NewProc("getpeername")
+       proclisten                             = modws2_32.NewProc("listen")
+       procshutdown                           = modws2_32.NewProc("shutdown")
+       procclosesocket                        = modws2_32.NewProc("closesocket")
+       procAcceptEx                           = modmswsock.NewProc("AcceptEx")
+       procGetAcceptExSockaddrs               = modmswsock.NewProc("GetAcceptExSockaddrs")
+       procWSARecv                            = modws2_32.NewProc("WSARecv")
+       procWSASend                            = modws2_32.NewProc("WSASend")
+       procWSARecvFrom                        = modws2_32.NewProc("WSARecvFrom")
+       procWSASendTo                          = modws2_32.NewProc("WSASendTo")
+       procgethostbyname                      = modws2_32.NewProc("gethostbyname")
+       procgetservbyname                      = modws2_32.NewProc("getservbyname")
+       procntohs                              = modws2_32.NewProc("ntohs")
+       procgetprotobyname                     = modws2_32.NewProc("getprotobyname")
+       procDnsQuery_W                         = moddnsapi.NewProc("DnsQuery_W")
+       procDnsRecordListFree                  = moddnsapi.NewProc("DnsRecordListFree")
+       procDnsNameCompare_W                   = moddnsapi.NewProc("DnsNameCompare_W")
+       procGetAddrInfoW                       = modws2_32.NewProc("GetAddrInfoW")
+       procFreeAddrInfoW                      = modws2_32.NewProc("FreeAddrInfoW")
+       procGetIfEntry                         = modiphlpapi.NewProc("GetIfEntry")
+       procGetAdaptersInfo                    = modiphlpapi.NewProc("GetAdaptersInfo")
+       procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes")
+       procWSAEnumProtocolsW                  = modws2_32.NewProc("WSAEnumProtocolsW")
+       procGetAdaptersAddresses               = modiphlpapi.NewProc("GetAdaptersAddresses")
+       procGetACP                             = modkernel32.NewProc("GetACP")
+       procMultiByteToWideChar                = modkernel32.NewProc("MultiByteToWideChar")
+       procTranslateNameW                     = modsecur32.NewProc("TranslateNameW")
+       procGetUserNameExW                     = modsecur32.NewProc("GetUserNameExW")
+       procNetUserGetInfo                     = modnetapi32.NewProc("NetUserGetInfo")
+       procNetGetJoinInformation              = modnetapi32.NewProc("NetGetJoinInformation")
+       procNetApiBufferFree                   = modnetapi32.NewProc("NetApiBufferFree")
+       procLookupAccountSidW                  = modadvapi32.NewProc("LookupAccountSidW")
+       procLookupAccountNameW                 = modadvapi32.NewProc("LookupAccountNameW")
+       procConvertSidToStringSidW             = modadvapi32.NewProc("ConvertSidToStringSidW")
+       procConvertStringSidToSidW             = modadvapi32.NewProc("ConvertStringSidToSidW")
+       procGetLengthSid                       = modadvapi32.NewProc("GetLengthSid")
+       procCopySid                            = modadvapi32.NewProc("CopySid")
+       procAllocateAndInitializeSid           = modadvapi32.NewProc("AllocateAndInitializeSid")
+       procFreeSid                            = modadvapi32.NewProc("FreeSid")
+       procEqualSid                           = modadvapi32.NewProc("EqualSid")
+       procOpenProcessToken                   = modadvapi32.NewProc("OpenProcessToken")
+       procGetTokenInformation                = modadvapi32.NewProc("GetTokenInformation")
+       procGetUserProfileDirectoryW           = moduserenv.NewProc("GetUserProfileDirectoryW")
+)
+
+func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func DeregisterEventSource(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {
+       r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData)))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))
+       handle = Handle(r0)
+       if handle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CloseServiceHandle(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))
+       handle = Handle(r0)
+       if handle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func DeleteService(service Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {
+       r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) {
+       r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status)))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {
+       r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) {
+       r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info)))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetLastError() (lasterr error) {
+       r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
+       if r0 != 0 {
+               lasterr = syscall.Errno(r0)
+       }
+       return
+}
+
+func LoadLibrary(libname string) (handle Handle, err error) {
+       var _p0 *uint16
+       _p0, err = syscall.UTF16PtrFromString(libname)
+       if err != nil {
+               return
+       }
+       return _LoadLibrary(_p0)
+}
+
+func _LoadLibrary(libname *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {
+       var _p0 *uint16
+       _p0, err = syscall.UTF16PtrFromString(libname)
+       if err != nil {
+               return
+       }
+       return _LoadLibraryEx(_p0, zero, flags)
+}
+
+func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))
+       handle = Handle(r0)
+       if handle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func FreeLibrary(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetProcAddress(module Handle, procname string) (proc uintptr, err error) {
+       var _p0 *byte
+       _p0, err = syscall.BytePtrFromString(procname)
+       if err != nil {
+               return
+       }
+       return _GetProcAddress(module, _p0)
+}
+
+func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {
+       r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)
+       proc = uintptr(r0)
+       if proc == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetVersion() (ver uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0)
+       ver = uint32(r0)
+       if ver == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {
+       var _p0 *uint16
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r0, _, e1 := syscall.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ExitProcess(exitcode uint32) {
+       syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0)
+       return
+}
+
+func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {
+       r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0)
+       newlowoffset = uint32(r0)
+       if newlowoffset == 0xffffffff {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CloseHandle(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetStdHandle(stdhandle uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func SetStdHandle(stdhandle uint32, handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func findNextFile1(handle Handle, data *win32finddata1) (err error) {
+       r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func FindClose(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
+       n = uint32(r0)
+       if n == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func SetCurrentDirectory(path *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {
+       r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func RemoveDirectory(path *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func DeleteFile(path *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func MoveFile(from *uint16, to *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetComputerName(buf *uint16, n *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func SetEndOfFile(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetSystemTimeAsFileTime(time *Filetime) {
+       syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
+       return
+}
+
+func GetSystemTimePreciseAsFileTime(time *Filetime) {
+       syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0)
+       return
+}
+
+func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0)
+       rc = uint32(r0)
+       if rc == 0xffffffff {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CancelIo(s Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CancelIoEx(s Handle, o *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {
+       var _p0 uint32
+       if inheritHandles {
+               _p0 = 1
+       } else {
+               _p0 = 0
+       }
+       r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) {
+       var _p0 uint32
+       if inheritHandle {
+               _p0 = 1
+       } else {
+               _p0 = 0
+       }
+       r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(pid))
+       handle = Handle(r0)
+       if handle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func TerminateProcess(handle Handle, exitcode uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetStartupInfo(startupInfo *StartupInfo) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetCurrentProcess() (pseudoHandle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procGetCurrentProcess.Addr(), 0, 0, 0, 0)
+       pseudoHandle = Handle(r0)
+       if pseudoHandle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {
+       var _p0 uint32
+       if bInheritHandle {
+               _p0 = 1
+       } else {
+               _p0 = 0
+       }
+       r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)
+       event = uint32(r0)
+       if event == 0xffffffff {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0)
+       n = uint32(r0)
+       if n == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetFileType(filehandle Handle) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CryptReleaseContext(provhandle Handle, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) {
+       r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf)))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetEnvironmentStrings() (envs *uint16, err error) {
+       r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0)
+       envs = (*uint16)(unsafe.Pointer(r0))
+       if envs == nil {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func FreeEnvironmentStrings(envs *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))
+       n = uint32(r0)
+       if n == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func SetEnvironmentVariable(name *uint16, value *uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {
+       r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetFileAttributes(name *uint16) (attrs uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
+       attrs = uint32(r0)
+       if attrs == INVALID_FILE_ATTRIBUTES {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func SetFileAttributes(name *uint16, attrs uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetCommandLine() (cmd *uint16) {
+       r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0)
+       cmd = (*uint16)(unsafe.Pointer(r0))
+       return
+}
+
+func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
+       r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
+       argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
+       if argv == nil {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func LocalFree(hmem Handle) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)
+       handle = Handle(r0)
+       if handle != 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func FlushFileBuffers(handle Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0)
+       n = uint32(r0)
+       if n == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))
+       n = uint32(r0)
+       if n == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {
+       r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))
+       n = uint32(r0)
+       if n == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name)))
+       handle = Handle(r0)
+       if handle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {
+       r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0)
+       addr = uintptr(r0)
+       if addr == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func UnmapViewOfFile(addr uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func FlushViewOfFile(addr uintptr, length uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func VirtualLock(addr uintptr, length uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func VirtualUnlock(addr uintptr, length uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
+       var _p0 uint32
+       if watchSubTree {
+               _p0 = 1
+       } else {
+               _p0 = 0
+       }
+       r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)
+       store = Handle(r0)
+       if store == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) {
+       r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0)
+       context = (*CertContext)(unsafe.Pointer(r0))
+       if context == nil {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {
+       r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CertCloseStore(store Handle, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {
+       r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CertFreeCertificateChain(ctx *CertChainContext) {
+       syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
+       return
+}
+
+func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {
+       r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))
+       context = (*CertContext)(unsafe.Pointer(r0))
+       if context == nil {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CertFreeCertificateContext(ctx *CertContext) (err error) {
+       r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {
+       r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {
+       r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0)
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func RegCloseKey(key Handle) (regerrno error) {
+       r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0)
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) {
+       r0, _, _ := syscall.Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime)))
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
+       r0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0)
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
+       r0, _, _ := syscall.Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)))
+       if r0 != 0 {
+               regerrno = syscall.Errno(r0)
+       }
+       return
+}
+
+func getCurrentProcessId() (pid uint32) {
+       r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0)
+       pid = uint32(r0)
+       return
+}
+
+func GetConsoleMode(console Handle, mode *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {
+       r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {
+       r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {
+       r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {
+       r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))
+       if r1&0xff == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved))
+       if r1&0xff == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetCurrentThreadId() (id uint32) {
+       r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0)
+       id = uint32(r0)
+       return
+}
+
+func CreateEvent(eventAttrs *syscall.SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0)
+       handle = Handle(r0)
+       if handle == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func SetEvent(event Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
+       r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
+       if r0 != 0 {
+               sockerr = syscall.Errno(r0)
+       }
+       return
+}
+
+func WSACleanup() (err error) {
+       r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {
+       r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine))
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func socket(af int32, typ int32, protocol int32) (handle Handle, err error) {
+       r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))
+       handle = Handle(r0)
+       if handle == InvalidHandle {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0)
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen))
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func listen(s Handle, backlog int32) (err error) {
+       r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0)
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func shutdown(s Handle, how int32) (err error) {
+       r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func Closesocket(s Handle) (err error) {
+       r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0)
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
+       r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {
+       syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0)
+       return
+}
+
+func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0)
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {
+       r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))
+       if r1 == socket_error {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetHostByName(name string) (h *Hostent, err error) {
+       var _p0 *byte
+       _p0, err = syscall.BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       return _GetHostByName(_p0)
+}
+
+func _GetHostByName(name *byte) (h *Hostent, err error) {
+       r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
+       h = (*Hostent)(unsafe.Pointer(r0))
+       if h == nil {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetServByName(name string, proto string) (s *Servent, err error) {
+       var _p0 *byte
+       _p0, err = syscall.BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = syscall.BytePtrFromString(proto)
+       if err != nil {
+               return
+       }
+       return _GetServByName(_p0, _p1)
+}
+
+func _GetServByName(name *byte, proto *byte) (s *Servent, err error) {
+       r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0)
+       s = (*Servent)(unsafe.Pointer(r0))
+       if s == nil {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func Ntohs(netshort uint16) (u uint16) {
+       r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0)
+       u = uint16(r0)
+       return
+}
+
+func GetProtoByName(name string) (p *Protoent, err error) {
+       var _p0 *byte
+       _p0, err = syscall.BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       return _GetProtoByName(_p0)
+}
+
+func _GetProtoByName(name *byte) (p *Protoent, err error) {
+       r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)
+       p = (*Protoent)(unsafe.Pointer(r0))
+       if p == nil {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
+       var _p0 *uint16
+       _p0, status = syscall.UTF16PtrFromString(name)
+       if status != nil {
+               return
+       }
+       return _DnsQuery(_p0, qtype, options, extra, qrs, pr)
+}
+
+func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {
+       r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr)))
+       if r0 != 0 {
+               status = syscall.Errno(r0)
+       }
+       return
+}
+
+func DnsRecordListFree(rl *DNSRecord, freetype uint32) {
+       syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0)
+       return
+}
+
+func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {
+       r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)
+       same = r0 != 0
+       return
+}
+
+func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) {
+       r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0)
+       if r0 != 0 {
+               sockerr = syscall.Errno(r0)
+       }
+       return
+}
+
+func FreeAddrInfoW(addrinfo *AddrinfoW) {
+       syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0)
+       return
+}
+
+func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
+       r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
+       if r0 != 0 {
+               errcode = syscall.Errno(r0)
+       }
+       return
+}
+
+func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
+       r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0)
+       if r0 != 0 {
+               errcode = syscall.Errno(r0)
+       }
+       return
+}
+
+func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {
+       r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {
+       r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength)))
+       n = int32(r0)
+       if n == -1 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) {
+       r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0)
+       if r0 != 0 {
+               errcode = syscall.Errno(r0)
+       }
+       return
+}
+
+func GetACP() (acp uint32) {
+       r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0)
+       acp = uint32(r0)
+       return
+}
+
+func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {
+       r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar))
+       nwrite = int32(r0)
+       if nwrite == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0)
+       if r1&0xff == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize)))
+       if r1&0xff == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) {
+       r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0)
+       if r0 != 0 {
+               neterr = syscall.Errno(r0)
+       }
+       return
+}
+
+func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) {
+       r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType)))
+       if r0 != 0 {
+               neterr = syscall.Errno(r0)
+       }
+       return
+}
+
+func NetApiBufferFree(buf *byte) (neterr error) {
+       r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if r0 != 0 {
+               neterr = syscall.Errno(r0)
+       }
+       return
+}
+
+func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) {
+       r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) {
+       r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetLengthSid(sid *SID) (len uint32) {
+       r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+       len = uint32(r0)
+       return
+}
+
+func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) {
+       r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid)))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) {
+       r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func FreeSid(sid *SID) (err error) {
+       r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0)
+       if r1 != 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) {
+       r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0)
+       isEqual = r0 != 0
+       return
+}
+
+func OpenProcessToken(h Handle, access uint32, token *Token) (err error) {
+       r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token)))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0)
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
+
+func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
+       r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))
+       if r1 == 0 {
+               if e1 != 0 {
+                       err = errnoErr(e1)
+               } else {
+                       err = syscall.EINVAL
+               }
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/windows/ztypes_windows.go b/vendor/golang.org/x/sys/windows/ztypes_windows.go
new file mode 100644 (file)
index 0000000..a907ff2
--- /dev/null
@@ -0,0 +1,1242 @@
+// 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.
+
+package windows
+
+import "syscall"
+
+const (
+       // Windows errors.
+       ERROR_FILE_NOT_FOUND         syscall.Errno = 2
+       ERROR_PATH_NOT_FOUND         syscall.Errno = 3
+       ERROR_ACCESS_DENIED          syscall.Errno = 5
+       ERROR_NO_MORE_FILES          syscall.Errno = 18
+       ERROR_HANDLE_EOF             syscall.Errno = 38
+       ERROR_NETNAME_DELETED        syscall.Errno = 64
+       ERROR_FILE_EXISTS            syscall.Errno = 80
+       ERROR_BROKEN_PIPE            syscall.Errno = 109
+       ERROR_BUFFER_OVERFLOW        syscall.Errno = 111
+       ERROR_INSUFFICIENT_BUFFER    syscall.Errno = 122
+       ERROR_MOD_NOT_FOUND          syscall.Errno = 126
+       ERROR_PROC_NOT_FOUND         syscall.Errno = 127
+       ERROR_ALREADY_EXISTS         syscall.Errno = 183
+       ERROR_ENVVAR_NOT_FOUND       syscall.Errno = 203
+       ERROR_MORE_DATA              syscall.Errno = 234
+       ERROR_OPERATION_ABORTED      syscall.Errno = 995
+       ERROR_IO_PENDING             syscall.Errno = 997
+       ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066
+       ERROR_NOT_FOUND              syscall.Errno = 1168
+       ERROR_PRIVILEGE_NOT_HELD     syscall.Errno = 1314
+       WSAEACCES                    syscall.Errno = 10013
+       WSAECONNRESET                syscall.Errno = 10054
+)
+
+const (
+       // Invented values to support what package os expects.
+       O_RDONLY   = 0x00000
+       O_WRONLY   = 0x00001
+       O_RDWR     = 0x00002
+       O_CREAT    = 0x00040
+       O_EXCL     = 0x00080
+       O_NOCTTY   = 0x00100
+       O_TRUNC    = 0x00200
+       O_NONBLOCK = 0x00800
+       O_APPEND   = 0x00400
+       O_SYNC     = 0x01000
+       O_ASYNC    = 0x02000
+       O_CLOEXEC  = 0x80000
+)
+
+const (
+       // More invented values for signals
+       SIGHUP  = Signal(0x1)
+       SIGINT  = Signal(0x2)
+       SIGQUIT = Signal(0x3)
+       SIGILL  = Signal(0x4)
+       SIGTRAP = Signal(0x5)
+       SIGABRT = Signal(0x6)
+       SIGBUS  = Signal(0x7)
+       SIGFPE  = Signal(0x8)
+       SIGKILL = Signal(0x9)
+       SIGSEGV = Signal(0xb)
+       SIGPIPE = Signal(0xd)
+       SIGALRM = Signal(0xe)
+       SIGTERM = Signal(0xf)
+)
+
+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",
+}
+
+const (
+       GENERIC_READ    = 0x80000000
+       GENERIC_WRITE   = 0x40000000
+       GENERIC_EXECUTE = 0x20000000
+       GENERIC_ALL     = 0x10000000
+
+       FILE_LIST_DIRECTORY   = 0x00000001
+       FILE_APPEND_DATA      = 0x00000004
+       FILE_WRITE_ATTRIBUTES = 0x00000100
+
+       FILE_SHARE_READ              = 0x00000001
+       FILE_SHARE_WRITE             = 0x00000002
+       FILE_SHARE_DELETE            = 0x00000004
+       FILE_ATTRIBUTE_READONLY      = 0x00000001
+       FILE_ATTRIBUTE_HIDDEN        = 0x00000002
+       FILE_ATTRIBUTE_SYSTEM        = 0x00000004
+       FILE_ATTRIBUTE_DIRECTORY     = 0x00000010
+       FILE_ATTRIBUTE_ARCHIVE       = 0x00000020
+       FILE_ATTRIBUTE_NORMAL        = 0x00000080
+       FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
+
+       INVALID_FILE_ATTRIBUTES = 0xffffffff
+
+       CREATE_NEW        = 1
+       CREATE_ALWAYS     = 2
+       OPEN_EXISTING     = 3
+       OPEN_ALWAYS       = 4
+       TRUNCATE_EXISTING = 5
+
+       FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
+       FILE_FLAG_BACKUP_SEMANTICS   = 0x02000000
+       FILE_FLAG_OVERLAPPED         = 0x40000000
+
+       HANDLE_FLAG_INHERIT    = 0x00000001
+       STARTF_USESTDHANDLES   = 0x00000100
+       STARTF_USESHOWWINDOW   = 0x00000001
+       DUPLICATE_CLOSE_SOURCE = 0x00000001
+       DUPLICATE_SAME_ACCESS  = 0x00000002
+
+       STD_INPUT_HANDLE  = -10 & (1<<32 - 1)
+       STD_OUTPUT_HANDLE = -11 & (1<<32 - 1)
+       STD_ERROR_HANDLE  = -12 & (1<<32 - 1)
+
+       FILE_BEGIN   = 0
+       FILE_CURRENT = 1
+       FILE_END     = 2
+
+       LANG_ENGLISH       = 0x09
+       SUBLANG_ENGLISH_US = 0x01
+
+       FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
+       FORMAT_MESSAGE_IGNORE_INSERTS  = 512
+       FORMAT_MESSAGE_FROM_STRING     = 1024
+       FORMAT_MESSAGE_FROM_HMODULE    = 2048
+       FORMAT_MESSAGE_FROM_SYSTEM     = 4096
+       FORMAT_MESSAGE_ARGUMENT_ARRAY  = 8192
+       FORMAT_MESSAGE_MAX_WIDTH_MASK  = 255
+
+       MAX_PATH      = 260
+       MAX_LONG_PATH = 32768
+
+       MAX_COMPUTERNAME_LENGTH = 15
+
+       TIME_ZONE_ID_UNKNOWN  = 0
+       TIME_ZONE_ID_STANDARD = 1
+
+       TIME_ZONE_ID_DAYLIGHT = 2
+       IGNORE                = 0
+       INFINITE              = 0xffffffff
+
+       WAIT_TIMEOUT   = 258
+       WAIT_ABANDONED = 0x00000080
+       WAIT_OBJECT_0  = 0x00000000
+       WAIT_FAILED    = 0xFFFFFFFF
+
+       CREATE_NEW_PROCESS_GROUP   = 0x00000200
+       CREATE_UNICODE_ENVIRONMENT = 0x00000400
+
+       PROCESS_TERMINATE         = 1
+       PROCESS_QUERY_INFORMATION = 0x00000400
+       SYNCHRONIZE               = 0x00100000
+
+       PAGE_READONLY          = 0x02
+       PAGE_READWRITE         = 0x04
+       PAGE_WRITECOPY         = 0x08
+       PAGE_EXECUTE_READ      = 0x20
+       PAGE_EXECUTE_READWRITE = 0x40
+       PAGE_EXECUTE_WRITECOPY = 0x80
+
+       FILE_MAP_COPY    = 0x01
+       FILE_MAP_WRITE   = 0x02
+       FILE_MAP_READ    = 0x04
+       FILE_MAP_EXECUTE = 0x20
+
+       CTRL_C_EVENT     = 0
+       CTRL_BREAK_EVENT = 1
+
+       // Windows reserves errors >= 1<<29 for application use.
+       APPLICATION_ERROR = 1 << 29
+)
+
+const (
+       // flags for CreateToolhelp32Snapshot
+       TH32CS_SNAPHEAPLIST = 0x01
+       TH32CS_SNAPPROCESS  = 0x02
+       TH32CS_SNAPTHREAD   = 0x04
+       TH32CS_SNAPMODULE   = 0x08
+       TH32CS_SNAPMODULE32 = 0x10
+       TH32CS_SNAPALL      = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD
+       TH32CS_INHERIT      = 0x80000000
+)
+
+const (
+       // filters for ReadDirectoryChangesW
+       FILE_NOTIFY_CHANGE_FILE_NAME   = 0x001
+       FILE_NOTIFY_CHANGE_DIR_NAME    = 0x002
+       FILE_NOTIFY_CHANGE_ATTRIBUTES  = 0x004
+       FILE_NOTIFY_CHANGE_SIZE        = 0x008
+       FILE_NOTIFY_CHANGE_LAST_WRITE  = 0x010
+       FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020
+       FILE_NOTIFY_CHANGE_CREATION    = 0x040
+       FILE_NOTIFY_CHANGE_SECURITY    = 0x100
+)
+
+const (
+       // do not reorder
+       FILE_ACTION_ADDED = iota + 1
+       FILE_ACTION_REMOVED
+       FILE_ACTION_MODIFIED
+       FILE_ACTION_RENAMED_OLD_NAME
+       FILE_ACTION_RENAMED_NEW_NAME
+)
+
+const (
+       // wincrypt.h
+       PROV_RSA_FULL                    = 1
+       PROV_RSA_SIG                     = 2
+       PROV_DSS                         = 3
+       PROV_FORTEZZA                    = 4
+       PROV_MS_EXCHANGE                 = 5
+       PROV_SSL                         = 6
+       PROV_RSA_SCHANNEL                = 12
+       PROV_DSS_DH                      = 13
+       PROV_EC_ECDSA_SIG                = 14
+       PROV_EC_ECNRA_SIG                = 15
+       PROV_EC_ECDSA_FULL               = 16
+       PROV_EC_ECNRA_FULL               = 17
+       PROV_DH_SCHANNEL                 = 18
+       PROV_SPYRUS_LYNKS                = 20
+       PROV_RNG                         = 21
+       PROV_INTEL_SEC                   = 22
+       PROV_REPLACE_OWF                 = 23
+       PROV_RSA_AES                     = 24
+       CRYPT_VERIFYCONTEXT              = 0xF0000000
+       CRYPT_NEWKEYSET                  = 0x00000008
+       CRYPT_DELETEKEYSET               = 0x00000010
+       CRYPT_MACHINE_KEYSET             = 0x00000020
+       CRYPT_SILENT                     = 0x00000040
+       CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080
+
+       USAGE_MATCH_TYPE_AND = 0
+       USAGE_MATCH_TYPE_OR  = 1
+
+       X509_ASN_ENCODING   = 0x00000001
+       PKCS_7_ASN_ENCODING = 0x00010000
+
+       CERT_STORE_PROV_MEMORY = 2
+
+       CERT_STORE_ADD_ALWAYS = 4
+
+       CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004
+
+       CERT_TRUST_NO_ERROR                          = 0x00000000
+       CERT_TRUST_IS_NOT_TIME_VALID                 = 0x00000001
+       CERT_TRUST_IS_REVOKED                        = 0x00000004
+       CERT_TRUST_IS_NOT_SIGNATURE_VALID            = 0x00000008
+       CERT_TRUST_IS_NOT_VALID_FOR_USAGE            = 0x00000010
+       CERT_TRUST_IS_UNTRUSTED_ROOT                 = 0x00000020
+       CERT_TRUST_REVOCATION_STATUS_UNKNOWN         = 0x00000040
+       CERT_TRUST_IS_CYCLIC                         = 0x00000080
+       CERT_TRUST_INVALID_EXTENSION                 = 0x00000100
+       CERT_TRUST_INVALID_POLICY_CONSTRAINTS        = 0x00000200
+       CERT_TRUST_INVALID_BASIC_CONSTRAINTS         = 0x00000400
+       CERT_TRUST_INVALID_NAME_CONSTRAINTS          = 0x00000800
+       CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000
+       CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT   = 0x00002000
+       CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000
+       CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT      = 0x00008000
+       CERT_TRUST_IS_OFFLINE_REVOCATION             = 0x01000000
+       CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY          = 0x02000000
+       CERT_TRUST_IS_EXPLICIT_DISTRUST              = 0x04000000
+       CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT    = 0x08000000
+
+       CERT_CHAIN_POLICY_BASE              = 1
+       CERT_CHAIN_POLICY_AUTHENTICODE      = 2
+       CERT_CHAIN_POLICY_AUTHENTICODE_TS   = 3
+       CERT_CHAIN_POLICY_SSL               = 4
+       CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5
+       CERT_CHAIN_POLICY_NT_AUTH           = 6
+       CERT_CHAIN_POLICY_MICROSOFT_ROOT    = 7
+       CERT_CHAIN_POLICY_EV                = 8
+
+       CERT_E_EXPIRED       = 0x800B0101
+       CERT_E_ROLE          = 0x800B0103
+       CERT_E_PURPOSE       = 0x800B0106
+       CERT_E_UNTRUSTEDROOT = 0x800B0109
+       CERT_E_CN_NO_MATCH   = 0x800B010F
+
+       AUTHTYPE_CLIENT = 1
+       AUTHTYPE_SERVER = 2
+)
+
+var (
+       OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
+       OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
+       OID_SGC_NETSCAPE        = []byte("2.16.840.1.113730.4.1\x00")
+)
+
+// Invented values to support what package os expects.
+type Timeval struct {
+       Sec  int32
+       Usec int32
+}
+
+func (tv *Timeval) Nanoseconds() int64 {
+       return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+       tv.Sec = int32(nsec / 1e9)
+       tv.Usec = int32(nsec % 1e9 / 1e3)
+       return
+}
+
+type SecurityAttributes struct {
+       Length             uint32
+       SecurityDescriptor uintptr
+       InheritHandle      uint32
+}
+
+type Overlapped struct {
+       Internal     uintptr
+       InternalHigh uintptr
+       Offset       uint32
+       OffsetHigh   uint32
+       HEvent       Handle
+}
+
+type FileNotifyInformation struct {
+       NextEntryOffset uint32
+       Action          uint32
+       FileNameLength  uint32
+       FileName        uint16
+}
+
+type Filetime struct {
+       LowDateTime  uint32
+       HighDateTime uint32
+}
+
+// Nanoseconds returns Filetime ft in nanoseconds
+// since Epoch (00:00:00 UTC, January 1, 1970).
+func (ft *Filetime) Nanoseconds() int64 {
+       // 100-nanosecond intervals since January 1, 1601
+       nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)
+       // change starting time to the Epoch (00:00:00 UTC, January 1, 1970)
+       nsec -= 116444736000000000
+       // convert into nanoseconds
+       nsec *= 100
+       return nsec
+}
+
+func NsecToFiletime(nsec int64) (ft Filetime) {
+       // convert into 100-nanosecond
+       nsec /= 100
+       // change starting time to January 1, 1601
+       nsec += 116444736000000000
+       // split into high / low
+       ft.LowDateTime = uint32(nsec & 0xffffffff)
+       ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)
+       return ft
+}
+
+type Win32finddata struct {
+       FileAttributes    uint32
+       CreationTime      Filetime
+       LastAccessTime    Filetime
+       LastWriteTime     Filetime
+       FileSizeHigh      uint32
+       FileSizeLow       uint32
+       Reserved0         uint32
+       Reserved1         uint32
+       FileName          [MAX_PATH - 1]uint16
+       AlternateFileName [13]uint16
+}
+
+// This is the actual system call structure.
+// Win32finddata is what we committed to in Go 1.
+type win32finddata1 struct {
+       FileAttributes    uint32
+       CreationTime      Filetime
+       LastAccessTime    Filetime
+       LastWriteTime     Filetime
+       FileSizeHigh      uint32
+       FileSizeLow       uint32
+       Reserved0         uint32
+       Reserved1         uint32
+       FileName          [MAX_PATH]uint16
+       AlternateFileName [14]uint16
+}
+
+func copyFindData(dst *Win32finddata, src *win32finddata1) {
+       dst.FileAttributes = src.FileAttributes
+       dst.CreationTime = src.CreationTime
+       dst.LastAccessTime = src.LastAccessTime
+       dst.LastWriteTime = src.LastWriteTime
+       dst.FileSizeHigh = src.FileSizeHigh
+       dst.FileSizeLow = src.FileSizeLow
+       dst.Reserved0 = src.Reserved0
+       dst.Reserved1 = src.Reserved1
+
+       // The src is 1 element bigger than dst, but it must be NUL.
+       copy(dst.FileName[:], src.FileName[:])
+       copy(dst.AlternateFileName[:], src.AlternateFileName[:])
+}
+
+type ByHandleFileInformation struct {
+       FileAttributes     uint32
+       CreationTime       Filetime
+       LastAccessTime     Filetime
+       LastWriteTime      Filetime
+       VolumeSerialNumber uint32
+       FileSizeHigh       uint32
+       FileSizeLow        uint32
+       NumberOfLinks      uint32
+       FileIndexHigh      uint32
+       FileIndexLow       uint32
+}
+
+const (
+       GetFileExInfoStandard = 0
+       GetFileExMaxInfoLevel = 1
+)
+
+type Win32FileAttributeData struct {
+       FileAttributes uint32
+       CreationTime   Filetime
+       LastAccessTime Filetime
+       LastWriteTime  Filetime
+       FileSizeHigh   uint32
+       FileSizeLow    uint32
+}
+
+// ShowWindow constants
+const (
+       // winuser.h
+       SW_HIDE            = 0
+       SW_NORMAL          = 1
+       SW_SHOWNORMAL      = 1
+       SW_SHOWMINIMIZED   = 2
+       SW_SHOWMAXIMIZED   = 3
+       SW_MAXIMIZE        = 3
+       SW_SHOWNOACTIVATE  = 4
+       SW_SHOW            = 5
+       SW_MINIMIZE        = 6
+       SW_SHOWMINNOACTIVE = 7
+       SW_SHOWNA          = 8
+       SW_RESTORE         = 9
+       SW_SHOWDEFAULT     = 10
+       SW_FORCEMINIMIZE   = 11
+)
+
+type StartupInfo struct {
+       Cb            uint32
+       _             *uint16
+       Desktop       *uint16
+       Title         *uint16
+       X             uint32
+       Y             uint32
+       XSize         uint32
+       YSize         uint32
+       XCountChars   uint32
+       YCountChars   uint32
+       FillAttribute uint32
+       Flags         uint32
+       ShowWindow    uint16
+       _             uint16
+       _             *byte
+       StdInput      Handle
+       StdOutput     Handle
+       StdErr        Handle
+}
+
+type ProcessInformation struct {
+       Process   Handle
+       Thread    Handle
+       ProcessId uint32
+       ThreadId  uint32
+}
+
+type ProcessEntry32 struct {
+       Size            uint32
+       Usage           uint32
+       ProcessID       uint32
+       DefaultHeapID   uintptr
+       ModuleID        uint32
+       Threads         uint32
+       ParentProcessID uint32
+       PriClassBase    int32
+       Flags           uint32
+       ExeFile         [MAX_PATH]uint16
+}
+
+type Systemtime struct {
+       Year         uint16
+       Month        uint16
+       DayOfWeek    uint16
+       Day          uint16
+       Hour         uint16
+       Minute       uint16
+       Second       uint16
+       Milliseconds uint16
+}
+
+type Timezoneinformation struct {
+       Bias         int32
+       StandardName [32]uint16
+       StandardDate Systemtime
+       StandardBias int32
+       DaylightName [32]uint16
+       DaylightDate Systemtime
+       DaylightBias int32
+}
+
+// Socket related.
+
+const (
+       AF_UNSPEC  = 0
+       AF_UNIX    = 1
+       AF_INET    = 2
+       AF_INET6   = 23
+       AF_NETBIOS = 17
+
+       SOCK_STREAM    = 1
+       SOCK_DGRAM     = 2
+       SOCK_RAW       = 3
+       SOCK_SEQPACKET = 5
+
+       IPPROTO_IP   = 0
+       IPPROTO_IPV6 = 0x29
+       IPPROTO_TCP  = 6
+       IPPROTO_UDP  = 17
+
+       SOL_SOCKET                = 0xffff
+       SO_REUSEADDR              = 4
+       SO_KEEPALIVE              = 8
+       SO_DONTROUTE              = 16
+       SO_BROADCAST              = 32
+       SO_LINGER                 = 128
+       SO_RCVBUF                 = 0x1002
+       SO_SNDBUF                 = 0x1001
+       SO_UPDATE_ACCEPT_CONTEXT  = 0x700b
+       SO_UPDATE_CONNECT_CONTEXT = 0x7010
+
+       IOC_OUT                            = 0x40000000
+       IOC_IN                             = 0x80000000
+       IOC_VENDOR                         = 0x18000000
+       IOC_INOUT                          = IOC_IN | IOC_OUT
+       IOC_WS2                            = 0x08000000
+       SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6
+       SIO_KEEPALIVE_VALS                 = IOC_IN | IOC_VENDOR | 4
+       SIO_UDP_CONNRESET                  = IOC_IN | IOC_VENDOR | 12
+
+       // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460
+
+       IP_TOS             = 0x3
+       IP_TTL             = 0x4
+       IP_MULTICAST_IF    = 0x9
+       IP_MULTICAST_TTL   = 0xa
+       IP_MULTICAST_LOOP  = 0xb
+       IP_ADD_MEMBERSHIP  = 0xc
+       IP_DROP_MEMBERSHIP = 0xd
+
+       IPV6_V6ONLY         = 0x1b
+       IPV6_UNICAST_HOPS   = 0x4
+       IPV6_MULTICAST_IF   = 0x9
+       IPV6_MULTICAST_HOPS = 0xa
+       IPV6_MULTICAST_LOOP = 0xb
+       IPV6_JOIN_GROUP     = 0xc
+       IPV6_LEAVE_GROUP    = 0xd
+
+       SOMAXCONN = 0x7fffffff
+
+       TCP_NODELAY = 1
+
+       SHUT_RD   = 0
+       SHUT_WR   = 1
+       SHUT_RDWR = 2
+
+       WSADESCRIPTION_LEN = 256
+       WSASYS_STATUS_LEN  = 128
+)
+
+type WSABuf struct {
+       Len uint32
+       Buf *byte
+}
+
+// Invented values to support what package os expects.
+const (
+       S_IFMT   = 0x1f000
+       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_IWRITE = 0x80
+       S_IWUSR  = 0x80
+       S_IXUSR  = 0x40
+)
+
+const (
+       FILE_TYPE_CHAR    = 0x0002
+       FILE_TYPE_DISK    = 0x0001
+       FILE_TYPE_PIPE    = 0x0003
+       FILE_TYPE_REMOTE  = 0x8000
+       FILE_TYPE_UNKNOWN = 0x0000
+)
+
+type Hostent struct {
+       Name     *byte
+       Aliases  **byte
+       AddrType uint16
+       Length   uint16
+       AddrList **byte
+}
+
+type Protoent struct {
+       Name    *byte
+       Aliases **byte
+       Proto   uint16
+}
+
+const (
+       DNS_TYPE_A       = 0x0001
+       DNS_TYPE_NS      = 0x0002
+       DNS_TYPE_MD      = 0x0003
+       DNS_TYPE_MF      = 0x0004
+       DNS_TYPE_CNAME   = 0x0005
+       DNS_TYPE_SOA     = 0x0006
+       DNS_TYPE_MB      = 0x0007
+       DNS_TYPE_MG      = 0x0008
+       DNS_TYPE_MR      = 0x0009
+       DNS_TYPE_NULL    = 0x000a
+       DNS_TYPE_WKS     = 0x000b
+       DNS_TYPE_PTR     = 0x000c
+       DNS_TYPE_HINFO   = 0x000d
+       DNS_TYPE_MINFO   = 0x000e
+       DNS_TYPE_MX      = 0x000f
+       DNS_TYPE_TEXT    = 0x0010
+       DNS_TYPE_RP      = 0x0011
+       DNS_TYPE_AFSDB   = 0x0012
+       DNS_TYPE_X25     = 0x0013
+       DNS_TYPE_ISDN    = 0x0014
+       DNS_TYPE_RT      = 0x0015
+       DNS_TYPE_NSAP    = 0x0016
+       DNS_TYPE_NSAPPTR = 0x0017
+       DNS_TYPE_SIG     = 0x0018
+       DNS_TYPE_KEY     = 0x0019
+       DNS_TYPE_PX      = 0x001a
+       DNS_TYPE_GPOS    = 0x001b
+       DNS_TYPE_AAAA    = 0x001c
+       DNS_TYPE_LOC     = 0x001d
+       DNS_TYPE_NXT     = 0x001e
+       DNS_TYPE_EID     = 0x001f
+       DNS_TYPE_NIMLOC  = 0x0020
+       DNS_TYPE_SRV     = 0x0021
+       DNS_TYPE_ATMA    = 0x0022
+       DNS_TYPE_NAPTR   = 0x0023
+       DNS_TYPE_KX      = 0x0024
+       DNS_TYPE_CERT    = 0x0025
+       DNS_TYPE_A6      = 0x0026
+       DNS_TYPE_DNAME   = 0x0027
+       DNS_TYPE_SINK    = 0x0028
+       DNS_TYPE_OPT     = 0x0029
+       DNS_TYPE_DS      = 0x002B
+       DNS_TYPE_RRSIG   = 0x002E
+       DNS_TYPE_NSEC    = 0x002F
+       DNS_TYPE_DNSKEY  = 0x0030
+       DNS_TYPE_DHCID   = 0x0031
+       DNS_TYPE_UINFO   = 0x0064
+       DNS_TYPE_UID     = 0x0065
+       DNS_TYPE_GID     = 0x0066
+       DNS_TYPE_UNSPEC  = 0x0067
+       DNS_TYPE_ADDRS   = 0x00f8
+       DNS_TYPE_TKEY    = 0x00f9
+       DNS_TYPE_TSIG    = 0x00fa
+       DNS_TYPE_IXFR    = 0x00fb
+       DNS_TYPE_AXFR    = 0x00fc
+       DNS_TYPE_MAILB   = 0x00fd
+       DNS_TYPE_MAILA   = 0x00fe
+       DNS_TYPE_ALL     = 0x00ff
+       DNS_TYPE_ANY     = 0x00ff
+       DNS_TYPE_WINS    = 0xff01
+       DNS_TYPE_WINSR   = 0xff02
+       DNS_TYPE_NBSTAT  = 0xff01
+)
+
+const (
+       DNS_INFO_NO_RECORDS = 0x251D
+)
+
+const (
+       // flags inside DNSRecord.Dw
+       DnsSectionQuestion   = 0x0000
+       DnsSectionAnswer     = 0x0001
+       DnsSectionAuthority  = 0x0002
+       DnsSectionAdditional = 0x0003
+)
+
+type DNSSRVData struct {
+       Target   *uint16
+       Priority uint16
+       Weight   uint16
+       Port     uint16
+       Pad      uint16
+}
+
+type DNSPTRData struct {
+       Host *uint16
+}
+
+type DNSMXData struct {
+       NameExchange *uint16
+       Preference   uint16
+       Pad          uint16
+}
+
+type DNSTXTData struct {
+       StringCount uint16
+       StringArray [1]*uint16
+}
+
+type DNSRecord struct {
+       Next     *DNSRecord
+       Name     *uint16
+       Type     uint16
+       Length   uint16
+       Dw       uint32
+       Ttl      uint32
+       Reserved uint32
+       Data     [40]byte
+}
+
+const (
+       TF_DISCONNECT         = 1
+       TF_REUSE_SOCKET       = 2
+       TF_WRITE_BEHIND       = 4
+       TF_USE_DEFAULT_WORKER = 0
+       TF_USE_SYSTEM_THREAD  = 16
+       TF_USE_KERNEL_APC     = 32
+)
+
+type TransmitFileBuffers struct {
+       Head       uintptr
+       HeadLength uint32
+       Tail       uintptr
+       TailLength uint32
+}
+
+const (
+       IFF_UP           = 1
+       IFF_BROADCAST    = 2
+       IFF_LOOPBACK     = 4
+       IFF_POINTTOPOINT = 8
+       IFF_MULTICAST    = 16
+)
+
+const SIO_GET_INTERFACE_LIST = 0x4004747F
+
+// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.
+// will be fixed to change variable type as suitable.
+
+type SockaddrGen [24]byte
+
+type InterfaceInfo struct {
+       Flags            uint32
+       Address          SockaddrGen
+       BroadcastAddress SockaddrGen
+       Netmask          SockaddrGen
+}
+
+type IpAddressString struct {
+       String [16]byte
+}
+
+type IpMaskString IpAddressString
+
+type IpAddrString struct {
+       Next      *IpAddrString
+       IpAddress IpAddressString
+       IpMask    IpMaskString
+       Context   uint32
+}
+
+const MAX_ADAPTER_NAME_LENGTH = 256
+const MAX_ADAPTER_DESCRIPTION_LENGTH = 128
+const MAX_ADAPTER_ADDRESS_LENGTH = 8
+
+type IpAdapterInfo struct {
+       Next                *IpAdapterInfo
+       ComboIndex          uint32
+       AdapterName         [MAX_ADAPTER_NAME_LENGTH + 4]byte
+       Description         [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte
+       AddressLength       uint32
+       Address             [MAX_ADAPTER_ADDRESS_LENGTH]byte
+       Index               uint32
+       Type                uint32
+       DhcpEnabled         uint32
+       CurrentIpAddress    *IpAddrString
+       IpAddressList       IpAddrString
+       GatewayList         IpAddrString
+       DhcpServer          IpAddrString
+       HaveWins            bool
+       PrimaryWinsServer   IpAddrString
+       SecondaryWinsServer IpAddrString
+       LeaseObtained       int64
+       LeaseExpires        int64
+}
+
+const MAXLEN_PHYSADDR = 8
+const MAX_INTERFACE_NAME_LEN = 256
+const MAXLEN_IFDESCR = 256
+
+type MibIfRow struct {
+       Name            [MAX_INTERFACE_NAME_LEN]uint16
+       Index           uint32
+       Type            uint32
+       Mtu             uint32
+       Speed           uint32
+       PhysAddrLen     uint32
+       PhysAddr        [MAXLEN_PHYSADDR]byte
+       AdminStatus     uint32
+       OperStatus      uint32
+       LastChange      uint32
+       InOctets        uint32
+       InUcastPkts     uint32
+       InNUcastPkts    uint32
+       InDiscards      uint32
+       InErrors        uint32
+       InUnknownProtos uint32
+       OutOctets       uint32
+       OutUcastPkts    uint32
+       OutNUcastPkts   uint32
+       OutDiscards     uint32
+       OutErrors       uint32
+       OutQLen         uint32
+       DescrLen        uint32
+       Descr           [MAXLEN_IFDESCR]byte
+}
+
+type CertContext struct {
+       EncodingType uint32
+       EncodedCert  *byte
+       Length       uint32
+       CertInfo     uintptr
+       Store        Handle
+}
+
+type CertChainContext struct {
+       Size                       uint32
+       TrustStatus                CertTrustStatus
+       ChainCount                 uint32
+       Chains                     **CertSimpleChain
+       LowerQualityChainCount     uint32
+       LowerQualityChains         **CertChainContext
+       HasRevocationFreshnessTime uint32
+       RevocationFreshnessTime    uint32
+}
+
+type CertSimpleChain struct {
+       Size                       uint32
+       TrustStatus                CertTrustStatus
+       NumElements                uint32
+       Elements                   **CertChainElement
+       TrustListInfo              uintptr
+       HasRevocationFreshnessTime uint32
+       RevocationFreshnessTime    uint32
+}
+
+type CertChainElement struct {
+       Size              uint32
+       CertContext       *CertContext
+       TrustStatus       CertTrustStatus
+       RevocationInfo    *CertRevocationInfo
+       IssuanceUsage     *CertEnhKeyUsage
+       ApplicationUsage  *CertEnhKeyUsage
+       ExtendedErrorInfo *uint16
+}
+
+type CertRevocationInfo struct {
+       Size             uint32
+       RevocationResult uint32
+       RevocationOid    *byte
+       OidSpecificInfo  uintptr
+       HasFreshnessTime uint32
+       FreshnessTime    uint32
+       CrlInfo          uintptr // *CertRevocationCrlInfo
+}
+
+type CertTrustStatus struct {
+       ErrorStatus uint32
+       InfoStatus  uint32
+}
+
+type CertUsageMatch struct {
+       Type  uint32
+       Usage CertEnhKeyUsage
+}
+
+type CertEnhKeyUsage struct {
+       Length           uint32
+       UsageIdentifiers **byte
+}
+
+type CertChainPara struct {
+       Size                         uint32
+       RequestedUsage               CertUsageMatch
+       RequstedIssuancePolicy       CertUsageMatch
+       URLRetrievalTimeout          uint32
+       CheckRevocationFreshnessTime uint32
+       RevocationFreshnessTime      uint32
+       CacheResync                  *Filetime
+}
+
+type CertChainPolicyPara struct {
+       Size            uint32
+       Flags           uint32
+       ExtraPolicyPara uintptr
+}
+
+type SSLExtraCertChainPolicyPara struct {
+       Size       uint32
+       AuthType   uint32
+       Checks     uint32
+       ServerName *uint16
+}
+
+type CertChainPolicyStatus struct {
+       Size              uint32
+       Error             uint32
+       ChainIndex        uint32
+       ElementIndex      uint32
+       ExtraPolicyStatus uintptr
+}
+
+const (
+       // do not reorder
+       HKEY_CLASSES_ROOT = 0x80000000 + iota
+       HKEY_CURRENT_USER
+       HKEY_LOCAL_MACHINE
+       HKEY_USERS
+       HKEY_PERFORMANCE_DATA
+       HKEY_CURRENT_CONFIG
+       HKEY_DYN_DATA
+
+       KEY_QUERY_VALUE        = 1
+       KEY_SET_VALUE          = 2
+       KEY_CREATE_SUB_KEY     = 4
+       KEY_ENUMERATE_SUB_KEYS = 8
+       KEY_NOTIFY             = 16
+       KEY_CREATE_LINK        = 32
+       KEY_WRITE              = 0x20006
+       KEY_EXECUTE            = 0x20019
+       KEY_READ               = 0x20019
+       KEY_WOW64_64KEY        = 0x0100
+       KEY_WOW64_32KEY        = 0x0200
+       KEY_ALL_ACCESS         = 0xf003f
+)
+
+const (
+       // do not reorder
+       REG_NONE = iota
+       REG_SZ
+       REG_EXPAND_SZ
+       REG_BINARY
+       REG_DWORD_LITTLE_ENDIAN
+       REG_DWORD_BIG_ENDIAN
+       REG_LINK
+       REG_MULTI_SZ
+       REG_RESOURCE_LIST
+       REG_FULL_RESOURCE_DESCRIPTOR
+       REG_RESOURCE_REQUIREMENTS_LIST
+       REG_QWORD_LITTLE_ENDIAN
+       REG_DWORD = REG_DWORD_LITTLE_ENDIAN
+       REG_QWORD = REG_QWORD_LITTLE_ENDIAN
+)
+
+type AddrinfoW struct {
+       Flags     int32
+       Family    int32
+       Socktype  int32
+       Protocol  int32
+       Addrlen   uintptr
+       Canonname *uint16
+       Addr      uintptr
+       Next      *AddrinfoW
+}
+
+const (
+       AI_PASSIVE     = 1
+       AI_CANONNAME   = 2
+       AI_NUMERICHOST = 4
+)
+
+type GUID struct {
+       Data1 uint32
+       Data2 uint16
+       Data3 uint16
+       Data4 [8]byte
+}
+
+var WSAID_CONNECTEX = GUID{
+       0x25a207b9,
+       0xddf3,
+       0x4660,
+       [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},
+}
+
+const (
+       FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1
+       FILE_SKIP_SET_EVENT_ON_HANDLE        = 2
+)
+
+const (
+       WSAPROTOCOL_LEN    = 255
+       MAX_PROTOCOL_CHAIN = 7
+       BASE_PROTOCOL      = 1
+       LAYERED_PROTOCOL   = 0
+
+       XP1_CONNECTIONLESS           = 0x00000001
+       XP1_GUARANTEED_DELIVERY      = 0x00000002
+       XP1_GUARANTEED_ORDER         = 0x00000004
+       XP1_MESSAGE_ORIENTED         = 0x00000008
+       XP1_PSEUDO_STREAM            = 0x00000010
+       XP1_GRACEFUL_CLOSE           = 0x00000020
+       XP1_EXPEDITED_DATA           = 0x00000040
+       XP1_CONNECT_DATA             = 0x00000080
+       XP1_DISCONNECT_DATA          = 0x00000100
+       XP1_SUPPORT_BROADCAST        = 0x00000200
+       XP1_SUPPORT_MULTIPOINT       = 0x00000400
+       XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800
+       XP1_MULTIPOINT_DATA_PLANE    = 0x00001000
+       XP1_QOS_SUPPORTED            = 0x00002000
+       XP1_UNI_SEND                 = 0x00008000
+       XP1_UNI_RECV                 = 0x00010000
+       XP1_IFS_HANDLES              = 0x00020000
+       XP1_PARTIAL_MESSAGE          = 0x00040000
+       XP1_SAN_SUPPORT_SDP          = 0x00080000
+
+       PFL_MULTIPLE_PROTO_ENTRIES  = 0x00000001
+       PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002
+       PFL_HIDDEN                  = 0x00000004
+       PFL_MATCHES_PROTOCOL_ZERO   = 0x00000008
+       PFL_NETWORKDIRECT_PROVIDER  = 0x00000010
+)
+
+type WSAProtocolInfo struct {
+       ServiceFlags1     uint32
+       ServiceFlags2     uint32
+       ServiceFlags3     uint32
+       ServiceFlags4     uint32
+       ProviderFlags     uint32
+       ProviderId        GUID
+       CatalogEntryId    uint32
+       ProtocolChain     WSAProtocolChain
+       Version           int32
+       AddressFamily     int32
+       MaxSockAddr       int32
+       MinSockAddr       int32
+       SocketType        int32
+       Protocol          int32
+       ProtocolMaxOffset int32
+       NetworkByteOrder  int32
+       SecurityScheme    int32
+       MessageSize       uint32
+       ProviderReserved  uint32
+       ProtocolName      [WSAPROTOCOL_LEN + 1]uint16
+}
+
+type WSAProtocolChain struct {
+       ChainLen     int32
+       ChainEntries [MAX_PROTOCOL_CHAIN]uint32
+}
+
+type TCPKeepalive struct {
+       OnOff    uint32
+       Time     uint32
+       Interval uint32
+}
+
+type symbolicLinkReparseBuffer struct {
+       SubstituteNameOffset uint16
+       SubstituteNameLength uint16
+       PrintNameOffset      uint16
+       PrintNameLength      uint16
+       Flags                uint32
+       PathBuffer           [1]uint16
+}
+
+type mountPointReparseBuffer struct {
+       SubstituteNameOffset uint16
+       SubstituteNameLength uint16
+       PrintNameOffset      uint16
+       PrintNameLength      uint16
+       PathBuffer           [1]uint16
+}
+
+type reparseDataBuffer struct {
+       ReparseTag        uint32
+       ReparseDataLength uint16
+       Reserved          uint16
+
+       // GenericReparseBuffer
+       reparseBuffer byte
+}
+
+const (
+       FSCTL_GET_REPARSE_POINT          = 0x900A8
+       MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
+       IO_REPARSE_TAG_MOUNT_POINT       = 0xA0000003
+       IO_REPARSE_TAG_SYMLINK           = 0xA000000C
+       SYMBOLIC_LINK_FLAG_DIRECTORY     = 0x1
+)
+
+const (
+       ComputerNameNetBIOS                   = 0
+       ComputerNameDnsHostname               = 1
+       ComputerNameDnsDomain                 = 2
+       ComputerNameDnsFullyQualified         = 3
+       ComputerNamePhysicalNetBIOS           = 4
+       ComputerNamePhysicalDnsHostname       = 5
+       ComputerNamePhysicalDnsDomain         = 6
+       ComputerNamePhysicalDnsFullyQualified = 7
+       ComputerNameMax                       = 8
+)
+
+const (
+       MOVEFILE_REPLACE_EXISTING      = 0x1
+       MOVEFILE_COPY_ALLOWED          = 0x2
+       MOVEFILE_DELAY_UNTIL_REBOOT    = 0x4
+       MOVEFILE_WRITE_THROUGH         = 0x8
+       MOVEFILE_CREATE_HARDLINK       = 0x10
+       MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20
+)
+
+const GAA_FLAG_INCLUDE_PREFIX = 0x00000010
+
+const (
+       IF_TYPE_OTHER              = 1
+       IF_TYPE_ETHERNET_CSMACD    = 6
+       IF_TYPE_ISO88025_TOKENRING = 9
+       IF_TYPE_PPP                = 23
+       IF_TYPE_SOFTWARE_LOOPBACK  = 24
+       IF_TYPE_ATM                = 37
+       IF_TYPE_IEEE80211          = 71
+       IF_TYPE_TUNNEL             = 131
+       IF_TYPE_IEEE1394           = 144
+)
+
+type SocketAddress struct {
+       Sockaddr       *syscall.RawSockaddrAny
+       SockaddrLength int32
+}
+
+type IpAdapterUnicastAddress struct {
+       Length             uint32
+       Flags              uint32
+       Next               *IpAdapterUnicastAddress
+       Address            SocketAddress
+       PrefixOrigin       int32
+       SuffixOrigin       int32
+       DadState           int32
+       ValidLifetime      uint32
+       PreferredLifetime  uint32
+       LeaseLifetime      uint32
+       OnLinkPrefixLength uint8
+}
+
+type IpAdapterAnycastAddress struct {
+       Length  uint32
+       Flags   uint32
+       Next    *IpAdapterAnycastAddress
+       Address SocketAddress
+}
+
+type IpAdapterMulticastAddress struct {
+       Length  uint32
+       Flags   uint32
+       Next    *IpAdapterMulticastAddress
+       Address SocketAddress
+}
+
+type IpAdapterDnsServerAdapter struct {
+       Length   uint32
+       Reserved uint32
+       Next     *IpAdapterDnsServerAdapter
+       Address  SocketAddress
+}
+
+type IpAdapterPrefix struct {
+       Length       uint32
+       Flags        uint32
+       Next         *IpAdapterPrefix
+       Address      SocketAddress
+       PrefixLength uint32
+}
+
+type IpAdapterAddresses struct {
+       Length                uint32
+       IfIndex               uint32
+       Next                  *IpAdapterAddresses
+       AdapterName           *byte
+       FirstUnicastAddress   *IpAdapterUnicastAddress
+       FirstAnycastAddress   *IpAdapterAnycastAddress
+       FirstMulticastAddress *IpAdapterMulticastAddress
+       FirstDnsServerAddress *IpAdapterDnsServerAdapter
+       DnsSuffix             *uint16
+       Description           *uint16
+       FriendlyName          *uint16
+       PhysicalAddress       [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte
+       PhysicalAddressLength uint32
+       Flags                 uint32
+       Mtu                   uint32
+       IfType                uint32
+       OperStatus            uint32
+       Ipv6IfIndex           uint32
+       ZoneIndices           [16]uint32
+       FirstPrefix           *IpAdapterPrefix
+       /* more fields might be present here. */
+}
+
+const (
+       IfOperStatusUp             = 1
+       IfOperStatusDown           = 2
+       IfOperStatusTesting        = 3
+       IfOperStatusUnknown        = 4
+       IfOperStatusDormant        = 5
+       IfOperStatusNotPresent     = 6
+       IfOperStatusLowerLayerDown = 7
+)
diff --git a/vendor/golang.org/x/sys/windows/ztypes_windows_386.go b/vendor/golang.org/x/sys/windows/ztypes_windows_386.go
new file mode 100644 (file)
index 0000000..10f33be
--- /dev/null
@@ -0,0 +1,22 @@
+// 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.
+
+package windows
+
+type WSAData struct {
+       Version      uint16
+       HighVersion  uint16
+       Description  [WSADESCRIPTION_LEN + 1]byte
+       SystemStatus [WSASYS_STATUS_LEN + 1]byte
+       MaxSockets   uint16
+       MaxUdpDg     uint16
+       VendorInfo   *byte
+}
+
+type Servent struct {
+       Name    *byte
+       Aliases **byte
+       Port    uint16
+       Proto   *byte
+}
diff --git a/vendor/golang.org/x/sys/windows/ztypes_windows_amd64.go b/vendor/golang.org/x/sys/windows/ztypes_windows_amd64.go
new file mode 100644 (file)
index 0000000..3f272c2
--- /dev/null
@@ -0,0 +1,22 @@
+// 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.
+
+package windows
+
+type WSAData struct {
+       Version      uint16
+       HighVersion  uint16
+       MaxSockets   uint16
+       MaxUdpDg     uint16
+       VendorInfo   *byte
+       Description  [WSADESCRIPTION_LEN + 1]byte
+       SystemStatus [WSASYS_STATUS_LEN + 1]byte
+}
+
+type Servent struct {
+       Name    *byte
+       Aliases **byte
+       Proto   *byte
+       Port    uint16
+}
diff --git a/vendor/gopkg.in/yaml.v2/.travis.yml b/vendor/gopkg.in/yaml.v2/.travis.yml
new file mode 100644 (file)
index 0000000..004172a
--- /dev/null
@@ -0,0 +1,9 @@
+language: go
+
+go:
+    - 1.4
+    - 1.5
+    - 1.6
+    - tip
+
+go_import_path: gopkg.in/yaml.v2
diff --git a/vendor/gopkg.in/yaml.v2/LICENSE b/vendor/gopkg.in/yaml.v2/LICENSE
new file mode 100644 (file)
index 0000000..866d74a
--- /dev/null
@@ -0,0 +1,13 @@
+Copyright 2011-2016 Canonical Ltd.
+
+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/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..1884de6
--- /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 Apache License 2.0. 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..052ecfc
--- /dev/null
@@ -0,0 +1,682 @@
+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)))
+       }
+}
+
+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 == "" && n.implicit) {
+               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/decode_test.go b/vendor/gopkg.in/yaml.v2/decode_test.go
new file mode 100644 (file)
index 0000000..a6fea0f
--- /dev/null
@@ -0,0 +1,998 @@
+package yaml_test
+
+import (
+       "errors"
+       . "gopkg.in/check.v1"
+       "gopkg.in/yaml.v2"
+       "math"
+       "net"
+       "reflect"
+       "strings"
+       "time"
+)
+
+var unmarshalIntTest = 123
+
+var unmarshalTests = []struct {
+       data  string
+       value interface{}
+}{
+       {
+               "",
+               &struct{}{},
+       }, {
+               "{}", &struct{}{},
+       }, {
+               "v: hi",
+               map[string]string{"v": "hi"},
+       }, {
+               "v: hi", map[string]interface{}{"v": "hi"},
+       }, {
+               "v: true",
+               map[string]string{"v": "true"},
+       }, {
+               "v: true",
+               map[string]interface{}{"v": true},
+       }, {
+               "v: 10",
+               map[string]interface{}{"v": 10},
+       }, {
+               "v: 0b10",
+               map[string]interface{}{"v": 2},
+       }, {
+               "v: 0xA",
+               map[string]interface{}{"v": 10},
+       }, {
+               "v: 4294967296",
+               map[string]int64{"v": 4294967296},
+       }, {
+               "v: 0.1",
+               map[string]interface{}{"v": 0.1},
+       }, {
+               "v: .1",
+               map[string]interface{}{"v": 0.1},
+       }, {
+               "v: .Inf",
+               map[string]interface{}{"v": math.Inf(+1)},
+       }, {
+               "v: -.Inf",
+               map[string]interface{}{"v": math.Inf(-1)},
+       }, {
+               "v: -10",
+               map[string]interface{}{"v": -10},
+       }, {
+               "v: -.1",
+               map[string]interface{}{"v": -0.1},
+       },
+
+       // Simple values.
+       {
+               "123",
+               &unmarshalIntTest,
+       },
+
+       // Floats from spec
+       {
+               "canonical: 6.8523e+5",
+               map[string]interface{}{"canonical": 6.8523e+5},
+       }, {
+               "expo: 685.230_15e+03",
+               map[string]interface{}{"expo": 685.23015e+03},
+       }, {
+               "fixed: 685_230.15",
+               map[string]interface{}{"fixed": 685230.15},
+       }, {
+               "neginf: -.inf",
+               map[string]interface{}{"neginf": math.Inf(-1)},
+       }, {
+               "fixed: 685_230.15",
+               map[string]float64{"fixed": 685230.15},
+       },
+       //{"sexa: 190:20:30.15", map[string]interface{}{"sexa": 0}}, // Unsupported
+       //{"notanum: .NaN", map[string]interface{}{"notanum": math.NaN()}}, // Equality of NaN fails.
+
+       // Bools from spec
+       {
+               "canonical: y",
+               map[string]interface{}{"canonical": true},
+       }, {
+               "answer: NO",
+               map[string]interface{}{"answer": false},
+       }, {
+               "logical: True",
+               map[string]interface{}{"logical": true},
+       }, {
+               "option: on",
+               map[string]interface{}{"option": true},
+       }, {
+               "option: on",
+               map[string]bool{"option": true},
+       },
+       // Ints from spec
+       {
+               "canonical: 685230",
+               map[string]interface{}{"canonical": 685230},
+       }, {
+               "decimal: +685_230",
+               map[string]interface{}{"decimal": 685230},
+       }, {
+               "octal: 02472256",
+               map[string]interface{}{"octal": 685230},
+       }, {
+               "hexa: 0x_0A_74_AE",
+               map[string]interface{}{"hexa": 685230},
+       }, {
+               "bin: 0b1010_0111_0100_1010_1110",
+               map[string]interface{}{"bin": 685230},
+       }, {
+               "bin: -0b101010",
+               map[string]interface{}{"bin": -42},
+       }, {
+               "decimal: +685_230",
+               map[string]int{"decimal": 685230},
+       },
+
+       //{"sexa: 190:20:30", map[string]interface{}{"sexa": 0}}, // Unsupported
+
+       // Nulls from spec
+       {
+               "empty:",
+               map[string]interface{}{"empty": nil},
+       }, {
+               "canonical: ~",
+               map[string]interface{}{"canonical": nil},
+       }, {
+               "english: null",
+               map[string]interface{}{"english": nil},
+       }, {
+               "~: null key",
+               map[interface{}]string{nil: "null key"},
+       }, {
+               "empty:",
+               map[string]*bool{"empty": nil},
+       },
+
+       // Flow sequence
+       {
+               "seq: [A,B]",
+               map[string]interface{}{"seq": []interface{}{"A", "B"}},
+       }, {
+               "seq: [A,B,C,]",
+               map[string][]string{"seq": []string{"A", "B", "C"}},
+       }, {
+               "seq: [A,1,C]",
+               map[string][]string{"seq": []string{"A", "1", "C"}},
+       }, {
+               "seq: [A,1,C]",
+               map[string][]int{"seq": []int{1}},
+       }, {
+               "seq: [A,1,C]",
+               map[string]interface{}{"seq": []interface{}{"A", 1, "C"}},
+       },
+       // Block sequence
+       {
+               "seq:\n - A\n - B",
+               map[string]interface{}{"seq": []interface{}{"A", "B"}},
+       }, {
+               "seq:\n - A\n - B\n - C",
+               map[string][]string{"seq": []string{"A", "B", "C"}},
+       }, {
+               "seq:\n - A\n - 1\n - C",
+               map[string][]string{"seq": []string{"A", "1", "C"}},
+       }, {
+               "seq:\n - A\n - 1\n - C",
+               map[string][]int{"seq": []int{1}},
+       }, {
+               "seq:\n - A\n - 1\n - C",
+               map[string]interface{}{"seq": []interface{}{"A", 1, "C"}},
+       },
+
+       // Literal block scalar
+       {
+               "scalar: | # Comment\n\n literal\n\n \ttext\n\n",
+               map[string]string{"scalar": "\nliteral\n\n\ttext\n"},
+       },
+
+       // Folded block scalar
+       {
+               "scalar: > # Comment\n\n folded\n line\n \n next\n line\n  * one\n  * two\n\n last\n line\n\n",
+               map[string]string{"scalar": "\nfolded line\nnext line\n * one\n * two\n\nlast line\n"},
+       },
+
+       // Map inside interface with no type hints.
+       {
+               "a: {b: c}",
+               map[interface{}]interface{}{"a": map[interface{}]interface{}{"b": "c"}},
+       },
+
+       // Structs and type conversions.
+       {
+               "hello: world",
+               &struct{ Hello string }{"world"},
+       }, {
+               "a: {b: c}",
+               &struct{ A struct{ B string } }{struct{ B string }{"c"}},
+       }, {
+               "a: {b: c}",
+               &struct{ A *struct{ B string } }{&struct{ B string }{"c"}},
+       }, {
+               "a: {b: c}",
+               &struct{ A map[string]string }{map[string]string{"b": "c"}},
+       }, {
+               "a: {b: c}",
+               &struct{ A *map[string]string }{&map[string]string{"b": "c"}},
+       }, {
+               "a:",
+               &struct{ A map[string]string }{},
+       }, {
+               "a: 1",
+               &struct{ A int }{1},
+       }, {
+               "a: 1",
+               &struct{ A float64 }{1},
+       }, {
+               "a: 1.0",
+               &struct{ A int }{1},
+       }, {
+               "a: 1.0",
+               &struct{ A uint }{1},
+       }, {
+               "a: [1, 2]",
+               &struct{ A []int }{[]int{1, 2}},
+       }, {
+               "a: 1",
+               &struct{ B int }{0},
+       }, {
+               "a: 1",
+               &struct {
+                       B int "a"
+               }{1},
+       }, {
+               "a: y",
+               &struct{ A bool }{true},
+       },
+
+       // Some cross type conversions
+       {
+               "v: 42",
+               map[string]uint{"v": 42},
+       }, {
+               "v: -42",
+               map[string]uint{},
+       }, {
+               "v: 4294967296",
+               map[string]uint64{"v": 4294967296},
+       }, {
+               "v: -4294967296",
+               map[string]uint64{},
+       },
+
+       // int
+       {
+               "int_max: 2147483647",
+               map[string]int{"int_max": math.MaxInt32},
+       },
+       {
+               "int_min: -2147483648",
+               map[string]int{"int_min": math.MinInt32},
+       },
+       {
+               "int_overflow: 9223372036854775808", // math.MaxInt64 + 1
+               map[string]int{},
+       },
+
+       // int64
+       {
+               "int64_max: 9223372036854775807",
+               map[string]int64{"int64_max": math.MaxInt64},
+       },
+       {
+               "int64_max_base2: 0b111111111111111111111111111111111111111111111111111111111111111",
+               map[string]int64{"int64_max_base2": math.MaxInt64},
+       },
+       {
+               "int64_min: -9223372036854775808",
+               map[string]int64{"int64_min": math.MinInt64},
+       },
+       {
+               "int64_neg_base2: -0b111111111111111111111111111111111111111111111111111111111111111",
+               map[string]int64{"int64_neg_base2": -math.MaxInt64},
+       },
+       {
+               "int64_overflow: 9223372036854775808", // math.MaxInt64 + 1
+               map[string]int64{},
+       },
+
+       // uint
+       {
+               "uint_min: 0",
+               map[string]uint{"uint_min": 0},
+       },
+       {
+               "uint_max: 4294967295",
+               map[string]uint{"uint_max": math.MaxUint32},
+       },
+       {
+               "uint_underflow: -1",
+               map[string]uint{},
+       },
+
+       // uint64
+       {
+               "uint64_min: 0",
+               map[string]uint{"uint64_min": 0},
+       },
+       {
+               "uint64_max: 18446744073709551615",
+               map[string]uint64{"uint64_max": math.MaxUint64},
+       },
+       {
+               "uint64_max_base2: 0b1111111111111111111111111111111111111111111111111111111111111111",
+               map[string]uint64{"uint64_max_base2": math.MaxUint64},
+       },
+       {
+               "uint64_maxint64: 9223372036854775807",
+               map[string]uint64{"uint64_maxint64": math.MaxInt64},
+       },
+       {
+               "uint64_underflow: -1",
+               map[string]uint64{},
+       },
+
+       // float32
+       {
+               "float32_max: 3.40282346638528859811704183484516925440e+38",
+               map[string]float32{"float32_max": math.MaxFloat32},
+       },
+       {
+               "float32_nonzero: 1.401298464324817070923729583289916131280e-45",
+               map[string]float32{"float32_nonzero": math.SmallestNonzeroFloat32},
+       },
+       {
+               "float32_maxuint64: 18446744073709551615",
+               map[string]float32{"float32_maxuint64": float32(math.MaxUint64)},
+       },
+       {
+               "float32_maxuint64+1: 18446744073709551616",
+               map[string]float32{"float32_maxuint64+1": float32(math.MaxUint64 + 1)},
+       },
+
+       // float64
+       {
+               "float64_max: 1.797693134862315708145274237317043567981e+308",
+               map[string]float64{"float64_max": math.MaxFloat64},
+       },
+       {
+               "float64_nonzero: 4.940656458412465441765687928682213723651e-324",
+               map[string]float64{"float64_nonzero": math.SmallestNonzeroFloat64},
+       },
+       {
+               "float64_maxuint64: 18446744073709551615",
+               map[string]float64{"float64_maxuint64": float64(math.MaxUint64)},
+       },
+       {
+               "float64_maxuint64+1: 18446744073709551616",
+               map[string]float64{"float64_maxuint64+1": float64(math.MaxUint64 + 1)},
+       },
+
+       // Overflow cases.
+       {
+               "v: 4294967297",
+               map[string]int32{},
+       }, {
+               "v: 128",
+               map[string]int8{},
+       },
+
+       // Quoted values.
+       {
+               "'1': '\"2\"'",
+               map[interface{}]interface{}{"1": "\"2\""},
+       }, {
+               "v:\n- A\n- 'B\n\n  C'\n",
+               map[string][]string{"v": []string{"A", "B\nC"}},
+       },
+
+       // Explicit tags.
+       {
+               "v: !!float '1.1'",
+               map[string]interface{}{"v": 1.1},
+       }, {
+               "v: !!null ''",
+               map[string]interface{}{"v": nil},
+       }, {
+               "%TAG !y! tag:yaml.org,2002:\n---\nv: !y!int '1'",
+               map[string]interface{}{"v": 1},
+       },
+
+       // Anchors and aliases.
+       {
+               "a: &x 1\nb: &y 2\nc: *x\nd: *y\n",
+               &struct{ A, B, C, D int }{1, 2, 1, 2},
+       }, {
+               "a: &a {c: 1}\nb: *a",
+               &struct {
+                       A, B struct {
+                               C int
+                       }
+               }{struct{ C int }{1}, struct{ C int }{1}},
+       }, {
+               "a: &a [1, 2]\nb: *a",
+               &struct{ B []int }{[]int{1, 2}},
+       }, {
+               "b: *a\na: &a {c: 1}",
+               &struct {
+                       A, B struct {
+                               C int
+                       }
+               }{struct{ C int }{1}, struct{ C int }{1}},
+       },
+
+       // Bug #1133337
+       {
+               "foo: ''",
+               map[string]*string{"foo": new(string)},
+       }, {
+               "foo: null",
+               map[string]string{"foo": ""},
+       }, {
+               "foo: null",
+               map[string]interface{}{"foo": nil},
+       },
+
+       // Ignored field
+       {
+               "a: 1\nb: 2\n",
+               &struct {
+                       A int
+                       B int "-"
+               }{1, 0},
+       },
+
+       // Bug #1191981
+       {
+               "" +
+                       "%YAML 1.1\n" +
+                       "--- !!str\n" +
+                       `"Generic line break (no glyph)\n\` + "\n" +
+                       ` Generic line break (glyphed)\n\` + "\n" +
+                       ` Line separator\u2028\` + "\n" +
+                       ` Paragraph separator\u2029"` + "\n",
+               "" +
+                       "Generic line break (no glyph)\n" +
+                       "Generic line break (glyphed)\n" +
+                       "Line separator\u2028Paragraph separator\u2029",
+       },
+
+       // Struct inlining
+       {
+               "a: 1\nb: 2\nc: 3\n",
+               &struct {
+                       A int
+                       C inlineB `yaml:",inline"`
+               }{1, inlineB{2, inlineC{3}}},
+       },
+
+       // Map inlining
+       {
+               "a: 1\nb: 2\nc: 3\n",
+               &struct {
+                       A int
+                       C map[string]int `yaml:",inline"`
+               }{1, map[string]int{"b": 2, "c": 3}},
+       },
+
+       // bug 1243827
+       {
+               "a: -b_c",
+               map[string]interface{}{"a": "-b_c"},
+       },
+       {
+               "a: +b_c",
+               map[string]interface{}{"a": "+b_c"},
+       },
+       {
+               "a: 50cent_of_dollar",
+               map[string]interface{}{"a": "50cent_of_dollar"},
+       },
+
+       // Duration
+       {
+               "a: 3s",
+               map[string]time.Duration{"a": 3 * time.Second},
+       },
+
+       // Issue #24.
+       {
+               "a: <foo>",
+               map[string]string{"a": "<foo>"},
+       },
+
+       // Base 60 floats are obsolete and unsupported.
+       {
+               "a: 1:1\n",
+               map[string]string{"a": "1:1"},
+       },
+
+       // Binary data.
+       {
+               "a: !!binary gIGC\n",
+               map[string]string{"a": "\x80\x81\x82"},
+       }, {
+               "a: !!binary |\n  " + strings.Repeat("kJCQ", 17) + "kJ\n  CQ\n",
+               map[string]string{"a": strings.Repeat("\x90", 54)},
+       }, {
+               "a: !!binary |\n  " + strings.Repeat("A", 70) + "\n  ==\n",
+               map[string]string{"a": strings.Repeat("\x00", 52)},
+       },
+
+       // Ordered maps.
+       {
+               "{b: 2, a: 1, d: 4, c: 3, sub: {e: 5}}",
+               &yaml.MapSlice{{"b", 2}, {"a", 1}, {"d", 4}, {"c", 3}, {"sub", yaml.MapSlice{{"e", 5}}}},
+       },
+
+       // Issue #39.
+       {
+               "a:\n b:\n  c: d\n",
+               map[string]struct{ B interface{} }{"a": {map[interface{}]interface{}{"c": "d"}}},
+       },
+
+       // Custom map type.
+       {
+               "a: {b: c}",
+               M{"a": M{"b": "c"}},
+       },
+
+       // Support encoding.TextUnmarshaler.
+       {
+               "a: 1.2.3.4\n",
+               map[string]net.IP{"a": net.IPv4(1, 2, 3, 4)},
+       },
+       {
+               "a: 2015-02-24T18:19:39Z\n",
+               map[string]time.Time{"a": time.Unix(1424801979, 0).In(time.UTC)},
+       },
+
+       // Encode empty lists as zero-length slices.
+       {
+               "a: []",
+               &struct{ A []int }{[]int{}},
+       },
+
+       // UTF-16-LE
+       {
+               "\xff\xfe\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00\n\x00",
+               M{"ñoño": "very yes"},
+       },
+       // UTF-16-LE with surrogate.
+       {
+               "\xff\xfe\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00 \x00=\xd8\xd4\xdf\n\x00",
+               M{"ñoño": "very yes 🟔"},
+       },
+
+       // UTF-16-BE
+       {
+               "\xfe\xff\x00\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00\n",
+               M{"ñoño": "very yes"},
+       },
+       // UTF-16-BE with surrogate.
+       {
+               "\xfe\xff\x00\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00 \xd8=\xdf\xd4\x00\n",
+               M{"ñoño": "very yes 🟔"},
+       },
+
+       // YAML Float regex shouldn't match this
+       {
+               "a: 123456e1\n",
+               M{"a": "123456e1"},
+       }, {
+               "a: 123456E1\n",
+               M{"a": "123456E1"},
+       },
+}
+
+type M map[interface{}]interface{}
+
+type inlineB struct {
+       B       int
+       inlineC `yaml:",inline"`
+}
+
+type inlineC struct {
+       C int
+}
+
+func (s *S) TestUnmarshal(c *C) {
+       for _, item := range unmarshalTests {
+               t := reflect.ValueOf(item.value).Type()
+               var value interface{}
+               switch t.Kind() {
+               case reflect.Map:
+                       value = reflect.MakeMap(t).Interface()
+               case reflect.String:
+                       value = reflect.New(t).Interface()
+               case reflect.Ptr:
+                       value = reflect.New(t.Elem()).Interface()
+               default:
+                       c.Fatalf("missing case for %s", t)
+               }
+               err := yaml.Unmarshal([]byte(item.data), value)
+               if _, ok := err.(*yaml.TypeError); !ok {
+                       c.Assert(err, IsNil)
+               }
+               if t.Kind() == reflect.String {
+                       c.Assert(*value.(*string), Equals, item.value)
+               } else {
+                       c.Assert(value, DeepEquals, item.value)
+               }
+       }
+}
+
+func (s *S) TestUnmarshalNaN(c *C) {
+       value := map[string]interface{}{}
+       err := yaml.Unmarshal([]byte("notanum: .NaN"), &value)
+       c.Assert(err, IsNil)
+       c.Assert(math.IsNaN(value["notanum"].(float64)), Equals, true)
+}
+
+var unmarshalErrorTests = []struct {
+       data, error string
+}{
+       {"v: !!float 'error'", "yaml: cannot decode !!str `error` as a !!float"},
+       {"v: [A,", "yaml: line 1: did not find expected node content"},
+       {"v:\n- [A,", "yaml: line 2: did not find expected node content"},
+       {"a: *b\n", "yaml: unknown anchor 'b' referenced"},
+       {"a: &a\n  b: *a\n", "yaml: anchor 'a' value contains itself"},
+       {"value: -", "yaml: block sequence entries are not allowed in this context"},
+       {"a: !!binary ==", "yaml: !!binary value contains invalid base64 data"},
+       {"{[.]}", `yaml: invalid map key: \[\]interface \{\}\{"\."\}`},
+       {"{{.}}", `yaml: invalid map key: map\[interface\ \{\}\]interface \{\}\{".":interface \{\}\(nil\)\}`},
+}
+
+func (s *S) TestUnmarshalErrors(c *C) {
+       for _, item := range unmarshalErrorTests {
+               var value interface{}
+               err := yaml.Unmarshal([]byte(item.data), &value)
+               c.Assert(err, ErrorMatches, item.error, Commentf("Partial unmarshal: %#v", value))
+       }
+}
+
+var unmarshalerTests = []struct {
+       data, tag string
+       value     interface{}
+}{
+       {"_: {hi: there}", "!!map", map[interface{}]interface{}{"hi": "there"}},
+       {"_: [1,A]", "!!seq", []interface{}{1, "A"}},
+       {"_: 10", "!!int", 10},
+       {"_: null", "!!null", nil},
+       {`_: BAR!`, "!!str", "BAR!"},
+       {`_: "BAR!"`, "!!str", "BAR!"},
+       {"_: !!foo 'BAR!'", "!!foo", "BAR!"},
+       {`_: ""`, "!!str", ""},
+}
+
+var unmarshalerResult = map[int]error{}
+
+type unmarshalerType struct {
+       value interface{}
+}
+
+func (o *unmarshalerType) UnmarshalYAML(unmarshal func(v interface{}) error) error {
+       if err := unmarshal(&o.value); err != nil {
+               return err
+       }
+       if i, ok := o.value.(int); ok {
+               if result, ok := unmarshalerResult[i]; ok {
+                       return result
+               }
+       }
+       return nil
+}
+
+type unmarshalerPointer struct {
+       Field *unmarshalerType "_"
+}
+
+type unmarshalerValue struct {
+       Field unmarshalerType "_"
+}
+
+func (s *S) TestUnmarshalerPointerField(c *C) {
+       for _, item := range unmarshalerTests {
+               obj := &unmarshalerPointer{}
+               err := yaml.Unmarshal([]byte(item.data), obj)
+               c.Assert(err, IsNil)
+               if item.value == nil {
+                       c.Assert(obj.Field, IsNil)
+               } else {
+                       c.Assert(obj.Field, NotNil, Commentf("Pointer not initialized (%#v)", item.value))
+                       c.Assert(obj.Field.value, DeepEquals, item.value)
+               }
+       }
+}
+
+func (s *S) TestUnmarshalerValueField(c *C) {
+       for _, item := range unmarshalerTests {
+               obj := &unmarshalerValue{}
+               err := yaml.Unmarshal([]byte(item.data), obj)
+               c.Assert(err, IsNil)
+               c.Assert(obj.Field, NotNil, Commentf("Pointer not initialized (%#v)", item.value))
+               c.Assert(obj.Field.value, DeepEquals, item.value)
+       }
+}
+
+func (s *S) TestUnmarshalerWholeDocument(c *C) {
+       obj := &unmarshalerType{}
+       err := yaml.Unmarshal([]byte(unmarshalerTests[0].data), obj)
+       c.Assert(err, IsNil)
+       value, ok := obj.value.(map[interface{}]interface{})
+       c.Assert(ok, Equals, true, Commentf("value: %#v", obj.value))
+       c.Assert(value["_"], DeepEquals, unmarshalerTests[0].value)
+}
+
+func (s *S) TestUnmarshalerTypeError(c *C) {
+       unmarshalerResult[2] = &yaml.TypeError{[]string{"foo"}}
+       unmarshalerResult[4] = &yaml.TypeError{[]string{"bar"}}
+       defer func() {
+               delete(unmarshalerResult, 2)
+               delete(unmarshalerResult, 4)
+       }()
+
+       type T struct {
+               Before int
+               After  int
+               M      map[string]*unmarshalerType
+       }
+       var v T
+       data := `{before: A, m: {abc: 1, def: 2, ghi: 3, jkl: 4}, after: B}`
+       err := yaml.Unmarshal([]byte(data), &v)
+       c.Assert(err, ErrorMatches, ""+
+               "yaml: unmarshal errors:\n"+
+               "  line 1: cannot unmarshal !!str `A` into int\n"+
+               "  foo\n"+
+               "  bar\n"+
+               "  line 1: cannot unmarshal !!str `B` into int")
+       c.Assert(v.M["abc"], NotNil)
+       c.Assert(v.M["def"], IsNil)
+       c.Assert(v.M["ghi"], NotNil)
+       c.Assert(v.M["jkl"], IsNil)
+
+       c.Assert(v.M["abc"].value, Equals, 1)
+       c.Assert(v.M["ghi"].value, Equals, 3)
+}
+
+type proxyTypeError struct{}
+
+func (v *proxyTypeError) UnmarshalYAML(unmarshal func(interface{}) error) error {
+       var s string
+       var a int32
+       var b int64
+       if err := unmarshal(&s); err != nil {
+               panic(err)
+       }
+       if s == "a" {
+               if err := unmarshal(&b); err == nil {
+                       panic("should have failed")
+               }
+               return unmarshal(&a)
+       }
+       if err := unmarshal(&a); err == nil {
+               panic("should have failed")
+       }
+       return unmarshal(&b)
+}
+
+func (s *S) TestUnmarshalerTypeErrorProxying(c *C) {
+       type T struct {
+               Before int
+               After  int
+               M      map[string]*proxyTypeError
+       }
+       var v T
+       data := `{before: A, m: {abc: a, def: b}, after: B}`
+       err := yaml.Unmarshal([]byte(data), &v)
+       c.Assert(err, ErrorMatches, ""+
+               "yaml: unmarshal errors:\n"+
+               "  line 1: cannot unmarshal !!str `A` into int\n"+
+               "  line 1: cannot unmarshal !!str `a` into int32\n"+
+               "  line 1: cannot unmarshal !!str `b` into int64\n"+
+               "  line 1: cannot unmarshal !!str `B` into int")
+}
+
+type failingUnmarshaler struct{}
+
+var failingErr = errors.New("failingErr")
+
+func (ft *failingUnmarshaler) UnmarshalYAML(unmarshal func(interface{}) error) error {
+       return failingErr
+}
+
+func (s *S) TestUnmarshalerError(c *C) {
+       err := yaml.Unmarshal([]byte("a: b"), &failingUnmarshaler{})
+       c.Assert(err, Equals, failingErr)
+}
+
+type sliceUnmarshaler []int
+
+func (su *sliceUnmarshaler) UnmarshalYAML(unmarshal func(interface{}) error) error {
+       var slice []int
+       err := unmarshal(&slice)
+       if err == nil {
+               *su = slice
+               return nil
+       }
+
+       var intVal int
+       err = unmarshal(&intVal)
+       if err == nil {
+               *su = []int{intVal}
+               return nil
+       }
+
+       return err
+}
+
+func (s *S) TestUnmarshalerRetry(c *C) {
+       var su sliceUnmarshaler
+       err := yaml.Unmarshal([]byte("[1, 2, 3]"), &su)
+       c.Assert(err, IsNil)
+       c.Assert(su, DeepEquals, sliceUnmarshaler([]int{1, 2, 3}))
+
+       err = yaml.Unmarshal([]byte("1"), &su)
+       c.Assert(err, IsNil)
+       c.Assert(su, DeepEquals, sliceUnmarshaler([]int{1}))
+}
+
+// From http://yaml.org/type/merge.html
+var mergeTests = `
+anchors:
+  list:
+    - &CENTER { "x": 1, "y": 2 }
+    - &LEFT   { "x": 0, "y": 2 }
+    - &BIG    { "r": 10 }
+    - &SMALL  { "r": 1 }
+
+# All the following maps are equal:
+
+plain:
+  # Explicit keys
+  "x": 1
+  "y": 2
+  "r": 10
+  label: center/big
+
+mergeOne:
+  # Merge one map
+  << : *CENTER
+  "r": 10
+  label: center/big
+
+mergeMultiple:
+  # Merge multiple maps
+  << : [ *CENTER, *BIG ]
+  label: center/big
+
+override:
+  # Override
+  << : [ *BIG, *LEFT, *SMALL ]
+  "x": 1
+  label: center/big
+
+shortTag:
+  # Explicit short merge tag
+  !!merge "<<" : [ *CENTER, *BIG ]
+  label: center/big
+
+longTag:
+  # Explicit merge long tag
+  !<tag:yaml.org,2002:merge> "<<" : [ *CENTER, *BIG ]
+  label: center/big
+
+inlineMap:
+  # Inlined map 
+  << : {"x": 1, "y": 2, "r": 10}
+  label: center/big
+
+inlineSequenceMap:
+  # Inlined map in sequence
+  << : [ *CENTER, {"r": 10} ]
+  label: center/big
+`
+
+func (s *S) TestMerge(c *C) {
+       var want = map[interface{}]interface{}{
+               "x":     1,
+               "y":     2,
+               "r":     10,
+               "label": "center/big",
+       }
+
+       var m map[interface{}]interface{}
+       err := yaml.Unmarshal([]byte(mergeTests), &m)
+       c.Assert(err, IsNil)
+       for name, test := range m {
+               if name == "anchors" {
+                       continue
+               }
+               c.Assert(test, DeepEquals, want, Commentf("test %q failed", name))
+       }
+}
+
+func (s *S) TestMergeStruct(c *C) {
+       type Data struct {
+               X, Y, R int
+               Label   string
+       }
+       want := Data{1, 2, 10, "center/big"}
+
+       var m map[string]Data
+       err := yaml.Unmarshal([]byte(mergeTests), &m)
+       c.Assert(err, IsNil)
+       for name, test := range m {
+               if name == "anchors" {
+                       continue
+               }
+               c.Assert(test, Equals, want, Commentf("test %q failed", name))
+       }
+}
+
+var unmarshalNullTests = []func() interface{}{
+       func() interface{} { var v interface{}; v = "v"; return &v },
+       func() interface{} { var s = "s"; return &s },
+       func() interface{} { var s = "s"; sptr := &s; return &sptr },
+       func() interface{} { var i = 1; return &i },
+       func() interface{} { var i = 1; iptr := &i; return &iptr },
+       func() interface{} { m := map[string]int{"s": 1}; return &m },
+       func() interface{} { m := map[string]int{"s": 1}; return m },
+}
+
+func (s *S) TestUnmarshalNull(c *C) {
+       for _, test := range unmarshalNullTests {
+               item := test()
+               zero := reflect.Zero(reflect.TypeOf(item).Elem()).Interface()
+               err := yaml.Unmarshal([]byte("null"), item)
+               c.Assert(err, IsNil)
+               if reflect.TypeOf(item).Kind() == reflect.Map {
+                       c.Assert(reflect.ValueOf(item).Interface(), DeepEquals, reflect.MakeMap(reflect.TypeOf(item)).Interface())
+               } else {
+                       c.Assert(reflect.ValueOf(item).Elem().Interface(), DeepEquals, zero)
+               }
+       }
+}
+
+func (s *S) TestUnmarshalSliceOnPreset(c *C) {
+       // Issue #48.
+       v := struct{ A []int }{[]int{1}}
+       yaml.Unmarshal([]byte("a: [2]"), &v)
+       c.Assert(v.A, DeepEquals, []int{2})
+}
+
+//var data []byte
+//func init() {
+//     var err error
+//     data, err = ioutil.ReadFile("/tmp/file.yaml")
+//     if err != nil {
+//             panic(err)
+//     }
+//}
+//
+//func (s *S) BenchmarkUnmarshal(c *C) {
+//     var err error
+//     for i := 0; i < c.N; i++ {
+//             var v map[string]interface{}
+//             err = yaml.Unmarshal(data, &v)
+//     }
+//     if err != nil {
+//             panic(err)
+//     }
+//}
+//
+//func (s *S) BenchmarkMarshal(c *C) {
+//     var v map[string]interface{}
+//     yaml.Unmarshal(data, &v)
+//     c.ResetTimer()
+//     for i := 0; i < c.N; i++ {
+//             yaml.Marshal(&v)
+//     }
+//}
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..6ecdcb3
--- /dev/null
@@ -0,0 +1,1684 @@
+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")
+       }
+}
+
+// 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/encode_test.go b/vendor/gopkg.in/yaml.v2/encode_test.go
new file mode 100644 (file)
index 0000000..84099bd
--- /dev/null
@@ -0,0 +1,501 @@
+package yaml_test
+
+import (
+       "fmt"
+       "math"
+       "strconv"
+       "strings"
+       "time"
+
+       . "gopkg.in/check.v1"
+       "gopkg.in/yaml.v2"
+       "net"
+       "os"
+)
+
+var marshalIntTest = 123
+
+var marshalTests = []struct {
+       value interface{}
+       data  string
+}{
+       {
+               nil,
+               "null\n",
+       }, {
+               &struct{}{},
+               "{}\n",
+       }, {
+               map[string]string{"v": "hi"},
+               "v: hi\n",
+       }, {
+               map[string]interface{}{"v": "hi"},
+               "v: hi\n",
+       }, {
+               map[string]string{"v": "true"},
+               "v: \"true\"\n",
+       }, {
+               map[string]string{"v": "false"},
+               "v: \"false\"\n",
+       }, {
+               map[string]interface{}{"v": true},
+               "v: true\n",
+       }, {
+               map[string]interface{}{"v": false},
+               "v: false\n",
+       }, {
+               map[string]interface{}{"v": 10},
+               "v: 10\n",
+       }, {
+               map[string]interface{}{"v": -10},
+               "v: -10\n",
+       }, {
+               map[string]uint{"v": 42},
+               "v: 42\n",
+       }, {
+               map[string]interface{}{"v": int64(4294967296)},
+               "v: 4294967296\n",
+       }, {
+               map[string]int64{"v": int64(4294967296)},
+               "v: 4294967296\n",
+       }, {
+               map[string]uint64{"v": 4294967296},
+               "v: 4294967296\n",
+       }, {
+               map[string]interface{}{"v": "10"},
+               "v: \"10\"\n",
+       }, {
+               map[string]interface{}{"v": 0.1},
+               "v: 0.1\n",
+       }, {
+               map[string]interface{}{"v": float64(0.1)},
+               "v: 0.1\n",
+       }, {
+               map[string]interface{}{"v": -0.1},
+               "v: -0.1\n",
+       }, {
+               map[string]interface{}{"v": math.Inf(+1)},
+               "v: .inf\n",
+       }, {
+               map[string]interface{}{"v": math.Inf(-1)},
+               "v: -.inf\n",
+       }, {
+               map[string]interface{}{"v": math.NaN()},
+               "v: .nan\n",
+       }, {
+               map[string]interface{}{"v": nil},
+               "v: null\n",
+       }, {
+               map[string]interface{}{"v": ""},
+               "v: \"\"\n",
+       }, {
+               map[string][]string{"v": []string{"A", "B"}},
+               "v:\n- A\n- B\n",
+       }, {
+               map[string][]string{"v": []string{"A", "B\nC"}},
+               "v:\n- A\n- |-\n  B\n  C\n",
+       }, {
+               map[string][]interface{}{"v": []interface{}{"A", 1, map[string][]int{"B": []int{2, 3}}}},
+               "v:\n- A\n- 1\n- B:\n  - 2\n  - 3\n",
+       }, {
+               map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}},
+               "a:\n  b: c\n",
+       }, {
+               map[string]interface{}{"a": "-"},
+               "a: '-'\n",
+       },
+
+       // Simple values.
+       {
+               &marshalIntTest,
+               "123\n",
+       },
+
+       // Structures
+       {
+               &struct{ Hello string }{"world"},
+               "hello: world\n",
+       }, {
+               &struct {
+                       A struct {
+                               B string
+                       }
+               }{struct{ B string }{"c"}},
+               "a:\n  b: c\n",
+       }, {
+               &struct {
+                       A *struct {
+                               B string
+                       }
+               }{&struct{ B string }{"c"}},
+               "a:\n  b: c\n",
+       }, {
+               &struct {
+                       A *struct {
+                               B string
+                       }
+               }{},
+               "a: null\n",
+       }, {
+               &struct{ A int }{1},
+               "a: 1\n",
+       }, {
+               &struct{ A []int }{[]int{1, 2}},
+               "a:\n- 1\n- 2\n",
+       }, {
+               &struct {
+                       B int "a"
+               }{1},
+               "a: 1\n",
+       }, {
+               &struct{ A bool }{true},
+               "a: true\n",
+       },
+
+       // Conditional flag
+       {
+               &struct {
+                       A int "a,omitempty"
+                       B int "b,omitempty"
+               }{1, 0},
+               "a: 1\n",
+       }, {
+               &struct {
+                       A int "a,omitempty"
+                       B int "b,omitempty"
+               }{0, 0},
+               "{}\n",
+       }, {
+               &struct {
+                       A *struct{ X, y int } "a,omitempty,flow"
+               }{&struct{ X, y int }{1, 2}},
+               "a: {x: 1}\n",
+       }, {
+               &struct {
+                       A *struct{ X, y int } "a,omitempty,flow"
+               }{nil},
+               "{}\n",
+       }, {
+               &struct {
+                       A *struct{ X, y int } "a,omitempty,flow"
+               }{&struct{ X, y int }{}},
+               "a: {x: 0}\n",
+       }, {
+               &struct {
+                       A struct{ X, y int } "a,omitempty,flow"
+               }{struct{ X, y int }{1, 2}},
+               "a: {x: 1}\n",
+       }, {
+               &struct {
+                       A struct{ X, y int } "a,omitempty,flow"
+               }{struct{ X, y int }{0, 1}},
+               "{}\n",
+       }, {
+               &struct {
+                       A float64 "a,omitempty"
+                       B float64 "b,omitempty"
+               }{1, 0},
+               "a: 1\n",
+       },
+
+       // Flow flag
+       {
+               &struct {
+                       A []int "a,flow"
+               }{[]int{1, 2}},
+               "a: [1, 2]\n",
+       }, {
+               &struct {
+                       A map[string]string "a,flow"
+               }{map[string]string{"b": "c", "d": "e"}},
+               "a: {b: c, d: e}\n",
+       }, {
+               &struct {
+                       A struct {
+                               B, D string
+                       } "a,flow"
+               }{struct{ B, D string }{"c", "e"}},
+               "a: {b: c, d: e}\n",
+       },
+
+       // Unexported field
+       {
+               &struct {
+                       u int
+                       A int
+               }{0, 1},
+               "a: 1\n",
+       },
+
+       // Ignored field
+       {
+               &struct {
+                       A int
+                       B int "-"
+               }{1, 2},
+               "a: 1\n",
+       },
+
+       // Struct inlining
+       {
+               &struct {
+                       A int
+                       C inlineB `yaml:",inline"`
+               }{1, inlineB{2, inlineC{3}}},
+               "a: 1\nb: 2\nc: 3\n",
+       },
+
+       // Map inlining
+       {
+               &struct {
+                       A int
+                       C map[string]int `yaml:",inline"`
+               }{1, map[string]int{"b": 2, "c": 3}},
+               "a: 1\nb: 2\nc: 3\n",
+       },
+
+       // Duration
+       {
+               map[string]time.Duration{"a": 3 * time.Second},
+               "a: 3s\n",
+       },
+
+       // Issue #24: bug in map merging logic.
+       {
+               map[string]string{"a": "<foo>"},
+               "a: <foo>\n",
+       },
+
+       // Issue #34: marshal unsupported base 60 floats quoted for compatibility
+       // with old YAML 1.1 parsers.
+       {
+               map[string]string{"a": "1:1"},
+               "a: \"1:1\"\n",
+       },
+
+       // Binary data.
+       {
+               map[string]string{"a": "\x00"},
+               "a: \"\\0\"\n",
+       }, {
+               map[string]string{"a": "\x80\x81\x82"},
+               "a: !!binary gIGC\n",
+       }, {
+               map[string]string{"a": strings.Repeat("\x90", 54)},
+               "a: !!binary |\n  " + strings.Repeat("kJCQ", 17) + "kJ\n  CQ\n",
+       },
+
+       // Ordered maps.
+       {
+               &yaml.MapSlice{{"b", 2}, {"a", 1}, {"d", 4}, {"c", 3}, {"sub", yaml.MapSlice{{"e", 5}}}},
+               "b: 2\na: 1\nd: 4\nc: 3\nsub:\n  e: 5\n",
+       },
+
+       // Encode unicode as utf-8 rather than in escaped form.
+       {
+               map[string]string{"a": "你好"},
+               "a: 你好\n",
+       },
+
+       // Support encoding.TextMarshaler.
+       {
+               map[string]net.IP{"a": net.IPv4(1, 2, 3, 4)},
+               "a: 1.2.3.4\n",
+       },
+       {
+               map[string]time.Time{"a": time.Unix(1424801979, 0)},
+               "a: 2015-02-24T18:19:39Z\n",
+       },
+
+       // Ensure strings containing ": " are quoted (reported as PR #43, but not reproducible).
+       {
+               map[string]string{"a": "b: c"},
+               "a: 'b: c'\n",
+       },
+
+       // Containing hash mark ('#') in string should be quoted
+       {
+               map[string]string{"a": "Hello #comment"},
+               "a: 'Hello #comment'\n",
+       },
+       {
+               map[string]string{"a": "你好 #comment"},
+               "a: '你好 #comment'\n",
+       },
+}
+
+func (s *S) TestMarshal(c *C) {
+       defer os.Setenv("TZ", os.Getenv("TZ"))
+       os.Setenv("TZ", "UTC")
+       for _, item := range marshalTests {
+               data, err := yaml.Marshal(item.value)
+               c.Assert(err, IsNil)
+               c.Assert(string(data), Equals, item.data)
+       }
+}
+
+var marshalErrorTests = []struct {
+       value interface{}
+       error string
+       panic string
+}{{
+       value: &struct {
+               B       int
+               inlineB ",inline"
+       }{1, inlineB{2, inlineC{3}}},
+       panic: `Duplicated key 'b' in struct struct \{ B int; .*`,
+}, {
+       value: &struct {
+               A int
+               B map[string]int ",inline"
+       }{1, map[string]int{"a": 2}},
+       panic: `Can't have key "a" in inlined map; conflicts with struct field`,
+}}
+
+func (s *S) TestMarshalErrors(c *C) {
+       for _, item := range marshalErrorTests {
+               if item.panic != "" {
+                       c.Assert(func() { yaml.Marshal(item.value) }, PanicMatches, item.panic)
+               } else {
+                       _, err := yaml.Marshal(item.value)
+                       c.Assert(err, ErrorMatches, item.error)
+               }
+       }
+}
+
+func (s *S) TestMarshalTypeCache(c *C) {
+       var data []byte
+       var err error
+       func() {
+               type T struct{ A int }
+               data, err = yaml.Marshal(&T{})
+               c.Assert(err, IsNil)
+       }()
+       func() {
+               type T struct{ B int }
+               data, err = yaml.Marshal(&T{})
+               c.Assert(err, IsNil)
+       }()
+       c.Assert(string(data), Equals, "b: 0\n")
+}
+
+var marshalerTests = []struct {
+       data  string
+       value interface{}
+}{
+       {"_:\n  hi: there\n", map[interface{}]interface{}{"hi": "there"}},
+       {"_:\n- 1\n- A\n", []interface{}{1, "A"}},
+       {"_: 10\n", 10},
+       {"_: null\n", nil},
+       {"_: BAR!\n", "BAR!"},
+}
+
+type marshalerType struct {
+       value interface{}
+}
+
+func (o marshalerType) MarshalText() ([]byte, error) {
+       panic("MarshalText called on type with MarshalYAML")
+}
+
+func (o marshalerType) MarshalYAML() (interface{}, error) {
+       return o.value, nil
+}
+
+type marshalerValue struct {
+       Field marshalerType "_"
+}
+
+func (s *S) TestMarshaler(c *C) {
+       for _, item := range marshalerTests {
+               obj := &marshalerValue{}
+               obj.Field.value = item.value
+               data, err := yaml.Marshal(obj)
+               c.Assert(err, IsNil)
+               c.Assert(string(data), Equals, string(item.data))
+       }
+}
+
+func (s *S) TestMarshalerWholeDocument(c *C) {
+       obj := &marshalerType{}
+       obj.value = map[string]string{"hello": "world!"}
+       data, err := yaml.Marshal(obj)
+       c.Assert(err, IsNil)
+       c.Assert(string(data), Equals, "hello: world!\n")
+}
+
+type failingMarshaler struct{}
+
+func (ft *failingMarshaler) MarshalYAML() (interface{}, error) {
+       return nil, failingErr
+}
+
+func (s *S) TestMarshalerError(c *C) {
+       _, err := yaml.Marshal(&failingMarshaler{})
+       c.Assert(err, Equals, failingErr)
+}
+
+func (s *S) TestSortedOutput(c *C) {
+       order := []interface{}{
+               false,
+               true,
+               1,
+               uint(1),
+               1.0,
+               1.1,
+               1.2,
+               2,
+               uint(2),
+               2.0,
+               2.1,
+               "",
+               ".1",
+               ".2",
+               ".a",
+               "1",
+               "2",
+               "a!10",
+               "a/2",
+               "a/10",
+               "a~10",
+               "ab/1",
+               "b/1",
+               "b/01",
+               "b/2",
+               "b/02",
+               "b/3",
+               "b/03",
+               "b1",
+               "b01",
+               "b3",
+               "c2.10",
+               "c10.2",
+               "d1",
+               "d12",
+               "d12a",
+       }
+       m := make(map[interface{}]int)
+       for _, k := range order {
+               m[k] = 1
+       }
+       data, err := yaml.Marshal(m)
+       c.Assert(err, IsNil)
+       out := "\n" + string(data)
+       last := 0
+       for i, k := range order {
+               repr := fmt.Sprint(k)
+               if s, ok := k.(string); ok {
+                       if _, err = strconv.ParseFloat(repr, 32); s == "" || err == nil {
+                               repr = `"` + repr + `"`
+                       }
+               }
+               index := strings.Index(out, "\n"+repr+":")
+               if index == -1 {
+                       c.Fatalf("%#v is not in the output: %#v", k, out)
+               }
+               if index < last {
+                       c.Fatalf("%#v was generated before %#v: %q", k, order[i-1], out)
+               }
+               last = index
+       }
+}
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..81d05df
--- /dev/null
@@ -0,0 +1,1095 @@
+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")
+       }
+}
+
+// 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..232313c
--- /dev/null
@@ -0,0 +1,208 @@
+package yaml
+
+import (
+       "encoding/base64"
+       "math"
+       "regexp"
+       "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
+}
+
+var yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`)
+
+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
+                       }
+                       if yamlStyleFloat.MatchString(plain) {
+                               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..2c9d511
--- /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/1.2/spec.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/suite_test.go b/vendor/gopkg.in/yaml.v2/suite_test.go
new file mode 100644 (file)
index 0000000..c5cf1ed
--- /dev/null
@@ -0,0 +1,12 @@
+package yaml_test
+
+import (
+       . "gopkg.in/check.v1"
+       "testing"
+)
+
+func Test(t *testing.T) { TestingT(t) }
+
+type S struct{}
+
+var _ = Suite(&S{})
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
+
+}