aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOndrej Fabry <ofabry@cisco.com>2019-01-10 10:57:50 +0100
committerOndrej Fabry <ofabry@cisco.com>2019-01-10 11:05:35 +0100
commit08266e35878f198e2fa59fcfc9f0fc3a4b1dfbf5 (patch)
tree1269acfc3bf6fdd47414eb64da3ecad4865e37d6
parent3ef6f210edcf7dd753733d46ec3f2dd5dc795b61 (diff)
Add support for string types
- strings are now generated as two fields for length and string itself - aliases are now sorted by name to prevent generating different code - dependencies are now managed by dep - binapi files are regenerated using VPP 19.01-rc0~622-g7b01e9e8 - old stats binary api has been deprecated and removed from VPP Change-Id: Ieb8515c73021339a45f407386f8e3d87dcf4469e Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
-rw-r--r--.gitignore3
-rw-r--r--Gopkg.lock101
-rw-r--r--Gopkg.toml42
-rw-r--r--Makefile12
-rw-r--r--cmd/binapi-generator/definitions.go22
-rw-r--r--cmd/binapi-generator/generate.go81
-rw-r--r--cmd/binapi-generator/parse.go25
-rw-r--r--examples/bin_api/VPP_VERSION1
-rw-r--r--examples/bin_api/interface.api.json139
-rw-r--r--examples/bin_api/interfaces/interfaces.ba.go199
-rw-r--r--examples/bin_api/ip.api.json33
-rw-r--r--examples/bin_api/ip/ip.ba.go67
-rw-r--r--examples/bin_api/map.api.json112
-rw-r--r--examples/bin_api/maps/maps.ba.go221
-rw-r--r--examples/bin_api/stats.api.json1531
-rw-r--r--examples/bin_api/stats/stats.ba.go2538
-rw-r--r--examples/bin_api/vpe.api.json48
-rw-r--r--examples/bin_api/vpe/vpe.ba.go76
-rw-r--r--examples/cmd/stats-client/stats_client.go165
-rw-r--r--glide.lock38
-rw-r--r--glide.yaml15
-rw-r--r--vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md11
-rw-r--r--vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md8
-rw-r--r--vendor/github.com/fsnotify/fsnotify/example_test.go42
-rw-r--r--vendor/github.com/fsnotify/fsnotify/fsnotify_test.go40
-rw-r--r--vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go229
-rw-r--r--vendor/github.com/fsnotify/fsnotify/inotify_test.go449
-rw-r--r--vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go147
-rw-r--r--vendor/github.com/fsnotify/fsnotify/integration_test.go1237
-rw-r--r--vendor/github.com/google/gopacket/afpacket/afpacket.go476
-rw-r--r--vendor/github.com/google/gopacket/afpacket/afpacket_test.go40
-rw-r--r--vendor/github.com/google/gopacket/afpacket/header.go158
-rw-r--r--vendor/github.com/google/gopacket/afpacket/options.go171
-rw-r--r--vendor/github.com/google/gopacket/afpacket/sockopt_linux.go58
-rw-r--r--vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.go57
-rw-r--r--vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.s8
-rw-r--r--vendor/github.com/google/gopacket/benchmark_test.go194
-rw-r--r--vendor/github.com/google/gopacket/bsdbpf/bsd_bpf_sniffer.go215
-rw-r--r--vendor/github.com/google/gopacket/bytediff/bytediff.go217
-rw-r--r--vendor/github.com/google/gopacket/bytediff/bytediff_test.go53
-rw-r--r--vendor/github.com/google/gopacket/dumpcommand/tcpdump.go119
-rw-r--r--vendor/github.com/google/gopacket/examples/arpscan/arpscan.go188
-rw-r--r--vendor/github.com/google/gopacket/examples/bidirectional/main.go192
-rw-r--r--vendor/github.com/google/gopacket/examples/bytediff/bytediff.pngbin47462 -> 0 bytes
-rw-r--r--vendor/github.com/google/gopacket/examples/bytediff/main.go96
-rw-r--r--vendor/github.com/google/gopacket/examples/httpassembly/main.go127
-rw-r--r--vendor/github.com/google/gopacket/examples/pcapdump/main.go73
-rw-r--r--vendor/github.com/google/gopacket/examples/pcaplay/main.go163
-rw-r--r--vendor/github.com/google/gopacket/examples/pfdump/main.go52
-rwxr-xr-xvendor/github.com/google/gopacket/examples/reassemblydump/compare.sh103
-rw-r--r--vendor/github.com/google/gopacket/examples/reassemblydump/main.go650
-rw-r--r--vendor/github.com/google/gopacket/examples/statsassembly/main.go211
-rw-r--r--vendor/github.com/google/gopacket/examples/synscan/main.go259
-rw-r--r--vendor/github.com/google/gopacket/examples/util/util.go40
-rw-r--r--vendor/github.com/google/gopacket/ip4defrag/defrag.go350
-rw-r--r--vendor/github.com/google/gopacket/ip4defrag/defrag_test.go1396
-rw-r--r--vendor/github.com/google/gopacket/layers/base_test.go42
-rw-r--r--vendor/github.com/google/gopacket/layers/bfd_test.go289
-rw-r--r--vendor/github.com/google/gopacket/layers/decode_test.go1234
-rw-r--r--vendor/github.com/google/gopacket/layers/dhcp_test.go129
-rw-r--r--vendor/github.com/google/gopacket/layers/dns_test.go833
-rw-r--r--vendor/github.com/google/gopacket/layers/dot11_test.go495
-rw-r--r--vendor/github.com/google/gopacket/layers/dot1q_test.go62
-rw-r--r--vendor/github.com/google/gopacket/layers/endpoints_test.go37
-rw-r--r--vendor/github.com/google/gopacket/layers/geneve_test.go108
-rw-r--r--vendor/github.com/google/gopacket/layers/gre_test.go389
-rw-r--r--vendor/github.com/google/gopacket/layers/icmp6_test.go84
-rw-r--r--vendor/github.com/google/gopacket/layers/igmp_test.go171
-rw-r--r--vendor/github.com/google/gopacket/layers/ip4_test.go131
-rw-r--r--vendor/github.com/google/gopacket/layers/ip6_test.go430
-rw-r--r--vendor/github.com/google/gopacket/layers/ipsec_test.go154
-rw-r--r--vendor/github.com/google/gopacket/layers/mpls_test.go96
-rw-r--r--vendor/github.com/google/gopacket/layers/ntp_test.go258
-rw-r--r--vendor/github.com/google/gopacket/layers/ospf_test.go559
-rw-r--r--vendor/github.com/google/gopacket/layers/prism_test.go120
-rw-r--r--vendor/github.com/google/gopacket/layers/radiotap_test.go79
-rw-r--r--vendor/github.com/google/gopacket/layers/sflow_test.go1246
-rw-r--r--vendor/github.com/google/gopacket/layers/tcp_test.go60
-rw-r--r--vendor/github.com/google/gopacket/layers/tcpip_test.go185
-rw-r--r--vendor/github.com/google/gopacket/layers/udp_test.go372
-rw-r--r--vendor/github.com/google/gopacket/layers/usb_test.go73
-rw-r--r--vendor/github.com/google/gopacket/layers/vrrp_test.go55
-rw-r--r--vendor/github.com/google/gopacket/layers/vxlan_test.go108
-rw-r--r--vendor/github.com/google/gopacket/macs/benchmark_test.go18
-rw-r--r--vendor/github.com/google/gopacket/macs/doc.go12
-rw-r--r--vendor/github.com/google/gopacket/macs/gen.go98
-rw-r--r--vendor/github.com/google/gopacket/macs/valid_mac_prefixes.go23946
-rw-r--r--vendor/github.com/google/gopacket/packet_test.go62
-rw-r--r--vendor/github.com/google/gopacket/pcap/doc.go106
-rw-r--r--vendor/github.com/google/gopacket/pcap/gopacket_benchmark/benchmark.go247
-rw-r--r--vendor/github.com/google/gopacket/pcap/pcap.go1005
-rw-r--r--vendor/github.com/google/gopacket/pcap/pcap_test.go308
-rw-r--r--vendor/github.com/google/gopacket/pcap/pcap_tester.go109
-rw-r--r--vendor/github.com/google/gopacket/pcap/pcap_unix.go71
-rw-r--r--vendor/github.com/google/gopacket/pcap/pcap_windows.go23
-rw-r--r--vendor/github.com/google/gopacket/pcap/pcapgo_test.go56
-rw-r--r--vendor/github.com/google/gopacket/pcap/test_dns.pcapbin1001 -> 0 bytes
-rw-r--r--vendor/github.com/google/gopacket/pcap/test_ethernet.pcapbin7672 -> 0 bytes
-rw-r--r--vendor/github.com/google/gopacket/pcap/test_loopback.pcapbin58587 -> 0 bytes
-rw-r--r--vendor/github.com/google/gopacket/pcapgo/read.go155
-rw-r--r--vendor/github.com/google/gopacket/pcapgo/read_test.go203
-rw-r--r--vendor/github.com/google/gopacket/pcapgo/write.go103
-rw-r--r--vendor/github.com/google/gopacket/pcapgo/write_test.go71
-rw-r--r--vendor/github.com/google/gopacket/pfring/doc.go58
-rw-r--r--vendor/github.com/google/gopacket/pfring/pfring.go343
-rw-r--r--vendor/github.com/google/gopacket/reassembly/cap2test.go105
-rw-r--r--vendor/github.com/google/gopacket/reassembly/memory.go254
-rw-r--r--vendor/github.com/google/gopacket/reassembly/tcpassembly.go1311
-rw-r--r--vendor/github.com/google/gopacket/reassembly/tcpassembly_test.go1660
-rw-r--r--vendor/github.com/google/gopacket/reassembly/tcpcheck.go246
-rw-r--r--vendor/github.com/google/gopacket/reassembly/tcpcheck_test.go249
-rw-r--r--vendor/github.com/google/gopacket/routing/common.go36
-rw-r--r--vendor/github.com/google/gopacket/routing/other.go15
-rw-r--r--vendor/github.com/google/gopacket/routing/routing.go241
-rw-r--r--vendor/github.com/google/gopacket/tcpassembly/assembly.go788
-rw-r--r--vendor/github.com/google/gopacket/tcpassembly/assembly_test.go562
-rw-r--r--vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader.go210
-rw-r--r--vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader_test.go129
-rw-r--r--vendor/github.com/google/gopacket/writer_test.go94
-rw-r--r--vendor/github.com/lunixbochs/struc/bench_test.go165
-rw-r--r--vendor/github.com/lunixbochs/struc/custom_float16_test.go56
-rw-r--r--vendor/github.com/lunixbochs/struc/custom_test.go97
-rw-r--r--vendor/github.com/lunixbochs/struc/field.go16
-rw-r--r--vendor/github.com/lunixbochs/struc/field_test.go77
-rw-r--r--vendor/github.com/lunixbochs/struc/fields_test.go59
-rw-r--r--vendor/github.com/lunixbochs/struc/packable_test.go123
-rw-r--r--vendor/github.com/lunixbochs/struc/parse.go21
-rw-r--r--vendor/github.com/lunixbochs/struc/parse_test.go62
-rw-r--r--vendor/github.com/lunixbochs/struc/struc_test.go200
-rw-r--r--vendor/github.com/lunixbochs/struc/types_test.go53
-rw-r--r--vendor/github.com/onsi/gomega/format/format_suite_test.go13
-rw-r--r--vendor/github.com/onsi/gomega/format/format_test.go590
-rw-r--r--vendor/github.com/onsi/gomega/gbytes/buffer.go229
-rw-r--r--vendor/github.com/onsi/gomega/gbytes/buffer_test.go158
-rw-r--r--vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go13
-rw-r--r--vendor/github.com/onsi/gomega/gbytes/say_matcher.go105
-rw-r--r--vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go163
-rw-r--r--vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go36
-rw-r--r--vendor/github.com/onsi/gomega/gexec/build.go99
-rw-r--r--vendor/github.com/onsi/gomega/gexec/build_test.go59
-rw-r--r--vendor/github.com/onsi/gomega/gexec/exit_matcher.go88
-rw-r--r--vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go113
-rw-r--r--vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go26
-rw-r--r--vendor/github.com/onsi/gomega/gexec/prefixed_writer.go53
-rw-r--r--vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go43
-rw-r--r--vendor/github.com/onsi/gomega/gexec/session.go305
-rw-r--r--vendor/github.com/onsi/gomega/gexec/session_test.go351
-rw-r--r--vendor/github.com/onsi/gomega/ghttp/handlers.go313
-rw-r--r--vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go3
-rw-r--r--vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go55
-rw-r--r--vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto9
-rw-r--r--vendor/github.com/onsi/gomega/ghttp/test_server.go381
-rw-r--r--vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go13
-rw-r--r--vendor/github.com/onsi/gomega/ghttp/test_server_test.go1089
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/elements.go145
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/elements_test.go144
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go72
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/fields.go141
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/fields_test.go76
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go13
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/ignore.go37
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/ignore_test.go23
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/pointer.go56
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/pointer_test.go33
-rw-r--r--vendor/github.com/onsi/gomega/gstruct/types.go15
-rw-r--r--vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go13
-rw-r--r--vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go252
-rw-r--r--vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go13
-rw-r--r--vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go345
-rw-r--r--vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go23
-rw-r--r--vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go12
-rw-r--r--vendor/github.com/onsi/gomega/matchers/and_test.go103
-rw-r--r--vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go30
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go40
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go40
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go40
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go70
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go52
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go50
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go20
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go61
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go28
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go148
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go106
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go98
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go20
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go30
-rw-r--r--vendor/github.com/onsi/gomega/matchers/consist_of_test.go75
-rw-r--r--vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go76
-rw-r--r--vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go36
-rw-r--r--vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go78
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go50
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go73
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go82
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go53
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go58
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go36
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go36
-rw-r--r--vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go93
-rw-r--r--vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go73
-rw-r--r--vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go44
-rw-r--r--vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go94
-rw-r--r--vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go30
-rw-r--r--vendor/github.com/onsi/gomega/matchers/not_test.go57
-rw-r--r--vendor/github.com/onsi/gomega/matchers/or_test.go85
-rw-r--r--vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go45
-rw-r--r--vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go280
-rw-r--r--vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go62
-rw-r--r--vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE20
-rw-r--r--vendor/github.com/onsi/gomega/matchers/with_transform_test.go102
-rw-r--r--vendor/github.com/pkg/profile/example_test.go58
-rw-r--r--vendor/github.com/pkg/profile/profile_test.go330
-rw-r--r--vendor/github.com/pkg/profile/trace_test.go8
-rw-r--r--vendor/github.com/sirupsen/logrus/alt_exit_test.go74
-rw-r--r--vendor/github.com/sirupsen/logrus/entry_test.go77
-rw-r--r--vendor/github.com/sirupsen/logrus/examples/basic/basic.go59
-rw-r--r--vendor/github.com/sirupsen/logrus/examples/hook/hook.go30
-rw-r--r--vendor/github.com/sirupsen/logrus/formatter_bench_test.go101
-rw-r--r--vendor/github.com/sirupsen/logrus/hook_test.go122
-rw-r--r--vendor/github.com/sirupsen/logrus/hooks/syslog/README.md39
-rw-r--r--vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go54
-rw-r--r--vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go26
-rw-r--r--vendor/github.com/sirupsen/logrus/hooks/test/test.go95
-rw-r--r--vendor/github.com/sirupsen/logrus/hooks/test/test_test.go39
-rw-r--r--vendor/github.com/sirupsen/logrus/json_formatter_test.go199
-rw-r--r--vendor/github.com/sirupsen/logrus/logger_bench_test.go61
-rw-r--r--vendor/github.com/sirupsen/logrus/logrus_test.go386
-rw-r--r--vendor/github.com/sirupsen/logrus/text_formatter_test.go87
-rw-r--r--vendor/golang.org/x/sys/.gitattributes10
-rw-r--r--vendor/golang.org/x/sys/.gitignore2
-rw-r--r--vendor/golang.org/x/sys/CONTRIBUTING.md31
-rw-r--r--vendor/golang.org/x/sys/README3
-rw-r--r--vendor/golang.org/x/sys/codereview.cfg1
-rw-r--r--vendor/golang.org/x/sys/plan9/asm.s8
-rw-r--r--vendor/golang.org/x/sys/plan9/asm_plan9_386.s30
-rw-r--r--vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s30
-rw-r--r--vendor/golang.org/x/sys/plan9/const_plan9.go70
-rw-r--r--vendor/golang.org/x/sys/plan9/dir_plan9.go212
-rw-r--r--vendor/golang.org/x/sys/plan9/env_plan9.go27
-rw-r--r--vendor/golang.org/x/sys/plan9/env_unset.go14
-rw-r--r--vendor/golang.org/x/sys/plan9/errors_plan9.go50
-rwxr-xr-xvendor/golang.org/x/sys/plan9/mkall.sh138
-rwxr-xr-xvendor/golang.org/x/sys/plan9/mkerrors.sh246
-rwxr-xr-xvendor/golang.org/x/sys/plan9/mksyscall.pl319
-rwxr-xr-xvendor/golang.org/x/sys/plan9/mksysnum_plan9.sh23
-rw-r--r--vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go21
-rw-r--r--vendor/golang.org/x/sys/plan9/pwd_plan9.go23
-rw-r--r--vendor/golang.org/x/sys/plan9/race.go30
-rw-r--r--vendor/golang.org/x/sys/plan9/race0.go25
-rw-r--r--vendor/golang.org/x/sys/plan9/str.go22
-rw-r--r--vendor/golang.org/x/sys/plan9/syscall.go74
-rw-r--r--vendor/golang.org/x/sys/plan9/syscall_plan9.go349
-rw-r--r--vendor/golang.org/x/sys/plan9/syscall_test.go33
-rw-r--r--vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go292
-rw-r--r--vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go292
-rw-r--r--vendor/golang.org/x/sys/plan9/zsysnum_plan9.go49
-rw-r--r--vendor/golang.org/x/sys/unix/creds_test.go121
-rw-r--r--vendor/golang.org/x/sys/unix/export_test.go9
-rw-r--r--vendor/golang.org/x/sys/unix/linux/Dockerfile48
-rw-r--r--vendor/golang.org/x/sys/unix/linux/mkall.go379
-rwxr-xr-xvendor/golang.org/x/sys/unix/linux/mksysnum.pl85
-rw-r--r--vendor/golang.org/x/sys/unix/linux/types.go536
-rw-r--r--vendor/golang.org/x/sys/unix/mmap_unix_test.go23
-rw-r--r--vendor/golang.org/x/sys/unix/openbsd_test.go113
-rw-r--r--vendor/golang.org/x/sys/unix/syscall_bsd_test.go62
-rw-r--r--vendor/golang.org/x/sys/unix/syscall_freebsd_test.go20
-rw-r--r--vendor/golang.org/x/sys/unix/syscall_linux_test.go186
-rw-r--r--vendor/golang.org/x/sys/unix/syscall_test.go50
-rw-r--r--vendor/golang.org/x/sys/unix/syscall_unix_test.go353
-rw-r--r--vendor/golang.org/x/sys/windows/asm_windows_386.s13
-rw-r--r--vendor/golang.org/x/sys/windows/asm_windows_amd64.s13
-rw-r--r--vendor/golang.org/x/sys/windows/dll_windows.go378
-rw-r--r--vendor/golang.org/x/sys/windows/env_unset.go15
-rw-r--r--vendor/golang.org/x/sys/windows/env_windows.go25
-rw-r--r--vendor/golang.org/x/sys/windows/eventlog.go20
-rw-r--r--vendor/golang.org/x/sys/windows/exec_windows.go97
-rw-r--r--vendor/golang.org/x/sys/windows/mksyscall.go7
-rw-r--r--vendor/golang.org/x/sys/windows/race.go30
-rw-r--r--vendor/golang.org/x/sys/windows/race0.go25
-rw-r--r--vendor/golang.org/x/sys/windows/registry/export_test.go11
-rw-r--r--vendor/golang.org/x/sys/windows/registry/key.go200
-rw-r--r--vendor/golang.org/x/sys/windows/registry/mksyscall.go7
-rw-r--r--vendor/golang.org/x/sys/windows/registry/registry_test.go756
-rw-r--r--vendor/golang.org/x/sys/windows/registry/syscall.go32
-rw-r--r--vendor/golang.org/x/sys/windows/registry/value.go384
-rw-r--r--vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go120
-rw-r--r--vendor/golang.org/x/sys/windows/security_windows.go435
-rw-r--r--vendor/golang.org/x/sys/windows/service.go143
-rw-r--r--vendor/golang.org/x/sys/windows/str.go22
-rw-r--r--vendor/golang.org/x/sys/windows/svc/debug/log.go56
-rw-r--r--vendor/golang.org/x/sys/windows/svc/debug/service.go45
-rw-r--r--vendor/golang.org/x/sys/windows/svc/event.go48
-rw-r--r--vendor/golang.org/x/sys/windows/svc/eventlog/install.go80
-rw-r--r--vendor/golang.org/x/sys/windows/svc/eventlog/log.go70
-rw-r--r--vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go51
-rw-r--r--vendor/golang.org/x/sys/windows/svc/example/beep.go22
-rw-r--r--vendor/golang.org/x/sys/windows/svc/example/install.go92
-rw-r--r--vendor/golang.org/x/sys/windows/svc/example/main.go76
-rw-r--r--vendor/golang.org/x/sys/windows/svc/example/manage.go62
-rw-r--r--vendor/golang.org/x/sys/windows/svc/example/service.go82
-rw-r--r--vendor/golang.org/x/sys/windows/svc/go12.c24
-rw-r--r--vendor/golang.org/x/sys/windows/svc/go12.go11
-rw-r--r--vendor/golang.org/x/sys/windows/svc/go13.go31
-rw-r--r--vendor/golang.org/x/sys/windows/svc/mgr/config.go139
-rw-r--r--vendor/golang.org/x/sys/windows/svc/mgr/mgr.go119
-rw-r--r--vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go154
-rw-r--r--vendor/golang.org/x/sys/windows/svc/mgr/service.go74
-rw-r--r--vendor/golang.org/x/sys/windows/svc/security.go62
-rw-r--r--vendor/golang.org/x/sys/windows/svc/service.go316
-rw-r--r--vendor/golang.org/x/sys/windows/svc/svc_test.go118
-rw-r--r--vendor/golang.org/x/sys/windows/svc/sys_386.s67
-rw-r--r--vendor/golang.org/x/sys/windows/svc/sys_amd64.s41
-rw-r--r--vendor/golang.org/x/sys/windows/syscall.go71
-rw-r--r--vendor/golang.org/x/sys/windows/syscall_test.go33
-rw-r--r--vendor/golang.org/x/sys/windows/syscall_windows.go991
-rw-r--r--vendor/golang.org/x/sys/windows/syscall_windows_test.go107
-rw-r--r--vendor/golang.org/x/sys/windows/zsyscall_windows.go2289
-rw-r--r--vendor/golang.org/x/sys/windows/ztypes_windows.go1242
-rw-r--r--vendor/golang.org/x/sys/windows/ztypes_windows_386.go22
-rw-r--r--vendor/golang.org/x/sys/windows/ztypes_windows_amd64.go22
-rw-r--r--vendor/gopkg.in/yaml.v2/decode_test.go998
-rw-r--r--vendor/gopkg.in/yaml.v2/encode_test.go501
-rw-r--r--vendor/gopkg.in/yaml.v2/suite_test.go12
323 files changed, 655 insertions, 79674 deletions
diff --git a/.gitignore b/.gitignore
index 7ec04f8..5bf6a1e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
.idea
+*.log
+*.out
# cmds
cmd/binapi-generator/binapi-generator
@@ -6,7 +8,6 @@ cmd/binapi-generator/binapi-generator
# examples
examples/cmd/perf-bench/perf-bench
examples/cmd/simple-client/simple-client
-examples/cmd/stats-client/stats-client
examples/cmd/stats-api/stats-api
# extras
diff --git a/Gopkg.lock b/Gopkg.lock
new file mode 100644
index 0000000..c35dc15
--- /dev/null
+++ b/Gopkg.lock
@@ -0,0 +1,101 @@
+# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
+
+
+[[projects]]
+ digest = "1:3925737bca828152354a9a214c77e49f7c779e6207bfd40419d515645efd99ff"
+ name = "github.com/bennyscetbun/jsongo"
+ packages = ["."]
+ pruneopts = "UT"
+ revision = "5240b3f82c6665fe3ccd96bdf5e6f38fe1e1399d"
+
+[[projects]]
+ digest = "1:38c783cf85b9454cc02a1a8319239800ed0af6c1c864adf19cea0539e134adad"
+ name = "github.com/fsnotify/fsnotify"
+ packages = ["."]
+ pruneopts = "UT"
+ revision = "4da3e2cfbabc9f751898f250b49f2439785783a1"
+
+[[projects]]
+ digest = "1:81259d6c2b9aa336c627a31074078d5473788c1f54a373e4392d4e722716d74d"
+ name = "github.com/google/gopacket"
+ packages = [
+ ".",
+ "layers",
+ ]
+ pruneopts = "UT"
+ revision = "8e484f31b1237166f00e4896d27ddde259540632"
+
+[[projects]]
+ branch = "master"
+ digest = "1:40bf4b24f9127737b22d3b86ff0bef3c3e9d87604d6260d9f9b9125e7995ff49"
+ name = "github.com/lunixbochs/struc"
+ packages = ["."]
+ pruneopts = "UT"
+ revision = "02e4c2afbb2ac4bae6876f52c8273fc4cf5a4b0a"
+
+[[projects]]
+ digest = "1:c4c90722461cfbd86d88c3d7bad0c352a958c68de0884d399a42f53d160429e7"
+ name = "github.com/onsi/gomega"
+ packages = [
+ ".",
+ "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",
+ ]
+ pruneopts = "UT"
+ revision = "334b8f472b3af5d541c5642701c1e29e2126f486"
+ version = "v1.1.0"
+
+[[projects]]
+ digest = "1:cfa0d7741863a0e1d30e0ccdd4b48a96a471cdb47892303de8b92c3713af3e77"
+ name = "github.com/pkg/profile"
+ packages = ["."]
+ pruneopts = "UT"
+ revision = "5b67d428864e92711fcbd2f8629456121a56d91f"
+ version = "v1.2.1"
+
+[[projects]]
+ digest = "1:ee1da6524260ed66de5eacdf4def98a365576be6c6972faa8ef438bef324843d"
+ name = "github.com/sirupsen/logrus"
+ packages = ["."]
+ pruneopts = "UT"
+ revision = "202f25545ea4cf9b191ff7f846df5d87c9382c2b"
+ version = "v1.0.0"
+
+[[projects]]
+ digest = "1:7217a703ed82a3c04939fdaf0768bf651406a9d2e41e061582f0809ab5459e00"
+ name = "golang.org/x/sys"
+ packages = ["unix"]
+ pruneopts = "UT"
+ revision = "9ccfe848b9db8435a24c424abbc07a921adf1df5"
+
+[[projects]]
+ digest = "1:35c04c23c8aef680782e117c67e29750453c92d11448da616d2e399887e5fc86"
+ name = "gopkg.in/yaml.v2"
+ packages = ["."]
+ pruneopts = "UT"
+ revision = "cd8b52f8269e0feb286dfeef29f8fe4d5b397e0b"
+
+[solve-meta]
+ analyzer-name = "dep"
+ analyzer-version = 1
+ input-imports = [
+ "github.com/bennyscetbun/jsongo",
+ "github.com/fsnotify/fsnotify",
+ "github.com/google/gopacket",
+ "github.com/google/gopacket/layers",
+ "github.com/lunixbochs/struc",
+ "github.com/onsi/gomega",
+ "github.com/pkg/profile",
+ "github.com/sirupsen/logrus",
+ ]
+ solver-name = "gps-cdcl"
+ solver-version = 1
diff --git a/Gopkg.toml b/Gopkg.toml
new file mode 100644
index 0000000..cf36c4a
--- /dev/null
+++ b/Gopkg.toml
@@ -0,0 +1,42 @@
+# Gopkg.toml example
+#
+# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
+# for detailed Gopkg.toml documentation.
+#
+# required = ["github.com/user/thing/cmd/thing"]
+# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
+#
+# [[constraint]]
+# name = "github.com/user/project"
+# version = "1.0.0"
+#
+# [[constraint]]
+# name = "github.com/user/project2"
+# branch = "dev"
+# source = "github.com/myfork/project2"
+#
+# [[override]]
+# name = "github.com/x/y"
+# version = "2.4.0"
+#
+# [prune]
+# non-go = false
+# go-tests = true
+# unused-packages = true
+
+
+[[constraint]]
+ name = "github.com/onsi/gomega"
+ version = "1.1.0"
+
+[[constraint]]
+ name = "github.com/pkg/profile"
+ version = "1.2.1"
+
+[[constraint]]
+ name = "github.com/sirupsen/logrus"
+ version = "1.0.0"
+
+[prune]
+ go-tests = true
+ unused-packages = true
diff --git a/Makefile b/Makefile
index ec01313..fce72ac 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,8 @@
VERSION ?= $(shell git describe --always --tags --dirty)
+BINAPI_DIR ?= $(shell cd examples/bin_api && pwd)
+VPP_VERSION := $(shell apt-cache show vpp | grep Version: | cut -d' ' -f2-)
+
all: test build examples
install:
@@ -39,10 +42,19 @@ clean:
rm -f extras/libmemif/examples/jumbo-frames/jumbo-frames
rm -f extras/libmemif/examples/raw-data/raw-data
+generate-binapi:
+ @echo "=> generating binapi"
+ @go generate "${BINAPI_DIR}"
+
generate: install
@echo "=> generating code"
cd examples && go generate ./...
+update-vppapi:
+ @echo "=> updating API JSON files using installed VPP (${VPP_VERSION})"
+ @cd ${BINAPI_DIR} && find . -type f -name '*.api.json' -exec cp /usr/share/vpp/api/'{}' '{}' \;
+ @echo ${VPP_VERSION} > ${BINAPI_DIR}/VPP_VERSION
+
lint:
@echo "=> running linter"
@golint ./... | grep -v vendor | grep -v bin_api || true
diff --git a/cmd/binapi-generator/definitions.go b/cmd/binapi-generator/definitions.go
index b8c3393..3ad782f 100644
--- a/cmd/binapi-generator/definitions.go
+++ b/cmd/binapi-generator/definitions.go
@@ -25,8 +25,6 @@ func getBinapiTypeSize(binapiType string) int {
b, err := strconv.Atoi(strings.TrimLeft(binapiType, "uif"))
if err == nil {
return b / 8
- } else {
- return 1
}
}
return -1
@@ -34,17 +32,15 @@ func getBinapiTypeSize(binapiType string) int {
// binapiTypes is a set of types used VPP binary API for translation to Go types
var binapiTypes = map[string]string{
- "bool": "bool",
- "u8": "uint8",
- "i8": "int8",
- "u16": "uint16",
- "i16": "int16",
- "u32": "uint32",
- "i32": "int32",
- "u64": "uint64",
- "i64": "int64",
- "f64": "float64",
- "string": "string",
+ "u8": "uint8",
+ "i8": "int8",
+ "u16": "uint16",
+ "i16": "int16",
+ "u32": "uint32",
+ "i32": "int32",
+ "u64": "uint64",
+ "i64": "int64",
+ "f64": "float64",
}
func usesInitialism(s string) string {
diff --git a/cmd/binapi-generator/generate.go b/cmd/binapi-generator/generate.go
index 22b4af6..e165c42 100644
--- a/cmd/binapi-generator/generate.go
+++ b/cmd/binapi-generator/generate.go
@@ -347,41 +347,6 @@ func generateAlias(ctx *context, w io.Writer, alias *Alias) {
fmt.Fprintln(w)
}
-// generateType writes generated code for the type into w
-func generateType(ctx *context, w io.Writer, typ *Type) {
- name := camelCaseName(typ.Name)
-
- logf(" writing type %q (%s) with %d fields", typ.Name, name, len(typ.Fields))
-
- // generate struct comment
- generateComment(ctx, w, name, typ.Name, "type")
-
- // generate struct definition
- fmt.Fprintf(w, "type %s struct {\n", name)
-
- // generate struct fields
- for i, field := range typ.Fields {
- // skip internal fields
- switch strings.ToLower(field.Name) {
- case "crc", "_vl_msg_id":
- continue
- }
-
- generateField(ctx, w, typ.Fields, i)
- }
-
- // generate end of the struct
- fmt.Fprintln(w, "}")
-
- // generate name getter
- generateTypeNameGetter(w, name, typ.Name)
-
- // generate CRC getter
- generateCrcGetter(w, name, typ.CRC)
-
- fmt.Fprintln(w)
-}
-
// generateUnion writes generated code for the union into w
func generateUnion(ctx *context, w io.Writer, union *Union) {
name := camelCaseName(union.Name)
@@ -466,6 +431,41 @@ func (u *%[1]s) Get%[2]s() (a %[3]s) {
`, structName, getterField, getterStruct)
}
+// generateType writes generated code for the type into w
+func generateType(ctx *context, w io.Writer, typ *Type) {
+ name := camelCaseName(typ.Name)
+
+ logf(" writing type %q (%s) with %d fields", typ.Name, name, len(typ.Fields))
+
+ // generate struct comment
+ generateComment(ctx, w, name, typ.Name, "type")
+
+ // generate struct definition
+ fmt.Fprintf(w, "type %s struct {\n", name)
+
+ // generate struct fields
+ for i, field := range typ.Fields {
+ // skip internal fields
+ switch strings.ToLower(field.Name) {
+ case "crc", "_vl_msg_id":
+ continue
+ }
+
+ generateField(ctx, w, typ.Fields, i)
+ }
+
+ // generate end of the struct
+ fmt.Fprintln(w, "}")
+
+ // generate name getter
+ generateTypeNameGetter(w, name, typ.Name)
+
+ // generate CRC getter
+ generateCrcGetter(w, name, typ.CRC)
+
+ fmt.Fprintln(w)
+}
+
// generateMessage writes generated code for the message into w
func generateMessage(ctx *context, w io.Writer, msg *Message) {
name := camelCaseName(msg.Name)
@@ -486,7 +486,8 @@ func generateMessage(ctx *context, w io.Writer, msg *Message) {
for i, field := range msg.Fields {
if i == 1 {
if field.Name == "client_index" {
- // "client_index" as the second member, this might be an event message or a request
+ // "client_index" as the second member,
+ // this might be an event message or a request
msgType = eventMessage
wasClientIndex = true
} else if field.Name == "context" {
@@ -495,7 +496,8 @@ func generateMessage(ctx *context, w io.Writer, msg *Message) {
}
} else if i == 2 {
if wasClientIndex && field.Name == "context" {
- // request needs "client_index" as the second member and "context" as the third member
+ // request needs "client_index" as the second member
+ // and "context" as the third member
msgType = requestMessage
}
}
@@ -537,6 +539,11 @@ func generateField(ctx *context, w io.Writer, fields []Field, i int) {
fieldName := strings.TrimPrefix(field.Name, "_")
fieldName = camelCaseName(fieldName)
+ // generate length field for strings
+ if field.Type == "string" {
+ fmt.Fprintf(w, "\tXXX_%sLen uint32 `struc:\"sizeof=%s\"`\n", fieldName, fieldName)
+ }
+
dataType := convertToGoType(ctx, field.Type)
fieldType := dataType
diff --git a/cmd/binapi-generator/parse.go b/cmd/binapi-generator/parse.go
index 5dfbe91..5bb3e8e 100644
--- a/cmd/binapi-generator/parse.go
+++ b/cmd/binapi-generator/parse.go
@@ -23,11 +23,6 @@ import (
"github.com/bennyscetbun/jsongo"
)
-// toApiType returns name that is used as type reference in VPP binary API
-func toApiType(name string) string {
- return fmt.Sprintf("vl_api_%s_t", name)
-}
-
// parsePackage parses provided JSON data into objects prepared for code generation
func parsePackage(ctx *context, jsonRoot *jsongo.JSONNode) (*Package, error) {
logf(" %s contains: %d services, %d messages, %d types, %d enums, %d unions, %d aliases (version: %s)",
@@ -75,6 +70,10 @@ func parsePackage(ctx *context, jsonRoot *jsongo.JSONNode) (*Package, error) {
pkg.RefMap[toApiType(alias.Name)] = alias.Name
}
}
+ // sort aliases to ensure consistent order
+ sort.Slice(pkg.Aliases, func(i, j int) bool {
+ return pkg.Aliases[i].Name < pkg.Aliases[j].Name
+ })
// parse types
types := jsonRoot.Map("types")
@@ -479,6 +478,11 @@ func parseService(ctx *context, svcName string, svcNode *jsongo.JSONNode) (*Serv
return &svc, nil
}
+// toApiType returns name that is used as type reference in VPP binary API
+func toApiType(name string) string {
+ return fmt.Sprintf("vl_api_%s_t", name)
+}
+
// convertToGoType translates the VPP binary API type into Go type
func convertToGoType(ctx *context, binapiType string) (typ string) {
if t, ok := binapiTypes[binapiType]; ok {
@@ -488,9 +492,14 @@ func convertToGoType(ctx *context, binapiType string) (typ string) {
// specific types (enums/types/unions)
typ = camelCaseName(r)
} else {
- // fallback type
- log.Warnf("found unknown VPP binary API type %q, using byte", binapiType)
- typ = "byte"
+ switch binapiType {
+ case "bool", "string":
+ typ = binapiType
+ default:
+ // fallback type
+ log.Warnf("found unknown VPP binary API type %q, using byte", binapiType)
+ typ = "byte"
+ }
}
return typ
}
diff --git a/examples/bin_api/VPP_VERSION b/examples/bin_api/VPP_VERSION
new file mode 100644
index 0000000..4f9e13e
--- /dev/null
+++ b/examples/bin_api/VPP_VERSION
@@ -0,0 +1 @@
+19.01-rc0~622-g7b01e9e8~b1858
diff --git a/examples/bin_api/interface.api.json b/examples/bin_api/interface.api.json
index db255aa..41862d8 100644
--- a/examples/bin_api/interface.api.json
+++ b/examples/bin_api/interface.api.json
@@ -1373,7 +1373,7 @@
}
]
],
- "vl_api_version": "0x1ec8c073",
+ "vl_api_version": "0x672de521",
"unions": [],
"services": {
"create_subif": {
@@ -1458,142 +1458,7 @@
}
},
"enums": [],
- "types": [
- [
- "vlib_counter",
- [
- "u64",
- "packets"
- ],
- [
- "u64",
- "bytes"
- ],
- {
- "crc": "0xce2325a2"
- }
- ],
- [
- "vnet_combined_counter",
- [
- "u32",
- "sw_if_index"
- ],
- [
- "u64",
- "rx_packets"
- ],
- [
- "u64",
- "rx_bytes"
- ],
- [
- "u64",
- "rx_unicast_packets"
- ],
- [
- "u64",
- "rx_unicast_bytes"
- ],
- [
- "u64",
- "rx_multicast_packets"
- ],
- [
- "u64",
- "rx_multicast_bytes"
- ],
- [
- "u64",
- "rx_broadcast_packets"
- ],
- [
- "u64",
- "rx_broadcast_bytes"
- ],
- [
- "u64",
- "tx_packets"
- ],
- [
- "u64",
- "tx_bytes"
- ],
- [
- "u64",
- "tx_unicast_packets"
- ],
- [
- "u64",
- "tx_unicast_bytes"
- ],
- [
- "u64",
- "tx_multicast_packets"
- ],
- [
- "u64",
- "tx_multicast_bytes"
- ],
- [
- "u64",
- "tx_broadcast_packets"
- ],
- [
- "u64",
- "tx_broadcast_bytes"
- ],
- {
- "crc": "0x20905ca4"
- }
- ],
- [
- "vnet_simple_counter",
- [
- "u32",
- "sw_if_index"
- ],
- [
- "u64",
- "drop"
- ],
- [
- "u64",
- "punt"
- ],
- [
- "u64",
- "rx_ip4"
- ],
- [
- "u64",
- "rx_ip6"
- ],
- [
- "u64",
- "rx_no_buffer"
- ],
- [
- "u64",
- "rx_miss"
- ],
- [
- "u64",
- "rx_error"
- ],
- [
- "u64",
- "tx_error"
- ],
- [
- "u64",
- "rx_mpls"
- ],
- {
- "crc": "0x8bd65e2d"
- }
- ]
- ],
+ "types": [],
"aliases": {
"interface_index": {
"type": "u32"
diff --git a/examples/bin_api/interfaces/interfaces.ba.go b/examples/bin_api/interfaces/interfaces.ba.go
index 68a8b44..2e90fbf 100644
--- a/examples/bin_api/interfaces/interfaces.ba.go
+++ b/examples/bin_api/interfaces/interfaces.ba.go
@@ -6,7 +6,6 @@
It contains following objects:
51 messages
- 3 types
1 alias
25 services
@@ -145,204 +144,6 @@ type Services interface {
//
type InterfaceIndex uint32
-/* Types */
-
-// VlibCounter represents VPP binary API type 'vlib_counter':
-//
-// "vlib_counter",
-// [
-// "u64",
-// "packets"
-// ],
-// [
-// "u64",
-// "bytes"
-// ],
-// {
-// "crc": "0xce2325a2"
-// }
-//
-type VlibCounter struct {
- Packets uint64
- Bytes uint64
-}
-
-func (*VlibCounter) GetTypeName() string {
- return "vlib_counter"
-}
-func (*VlibCounter) GetCrcString() string {
- return "ce2325a2"
-}
-
-// VnetCombinedCounter represents VPP binary API type 'vnet_combined_counter':
-//
-// "vnet_combined_counter",
-// [
-// "u32",
-// "sw_if_index"
-// ],
-// [
-// "u64",
-// "rx_packets"
-// ],
-// [
-// "u64",
-// "rx_bytes"
-// ],
-// [
-// "u64",
-// "rx_unicast_packets"
-// ],
-// [
-// "u64",
-// "rx_unicast_bytes"
-// ],
-// [
-// "u64",
-// "rx_multicast_packets"
-// ],
-// [
-// "u64",
-// "rx_multicast_bytes"
-// ],
-// [
-// "u64",
-// "rx_broadcast_packets"
-// ],
-// [
-// "u64",
-// "rx_broadcast_bytes"
-// ],
-// [
-// "u64",
-// "tx_packets"
-// ],
-// [
-// "u64",
-// "tx_bytes"
-// ],
-// [
-// "u64",
-// "tx_unicast_packets"
-// ],
-// [
-// "u64",
-// "tx_unicast_bytes"
-// ],
-// [
-// "u64",
-// "tx_multicast_packets"
-// ],
-// [
-// "u64",
-// "tx_multicast_bytes"
-// ],
-// [
-// "u64",
-// "tx_broadcast_packets"
-// ],
-// [
-// "u64",
-// "tx_broadcast_bytes"
-// ],
-// {
-// "crc": "0x20905ca4"
-// }
-//
-type VnetCombinedCounter struct {
- SwIfIndex uint32
- RxPackets uint64
- RxBytes uint64
- RxUnicastPackets uint64
- RxUnicastBytes uint64
- RxMulticastPackets uint64
- RxMulticastBytes uint64
- RxBroadcastPackets uint64
- RxBroadcastBytes uint64
- TxPackets uint64
- TxBytes uint64
- TxUnicastPackets uint64
- TxUnicastBytes uint64
- TxMulticastPackets uint64
- TxMulticastBytes uint64
- TxBroadcastPackets uint64
- TxBroadcastBytes uint64
-}
-
-func (*VnetCombinedCounter) GetTypeName() string {
- return "vnet_combined_counter"
-}
-func (*VnetCombinedCounter) GetCrcString() string {
- return "20905ca4"
-}
-
-// VnetSimpleCounter represents VPP binary API type 'vnet_simple_counter':
-//
-// "vnet_simple_counter",
-// [
-// "u32",
-// "sw_if_index"
-// ],
-// [
-// "u64",
-// "drop"
-// ],
-// [
-// "u64",
-// "punt"
-// ],
-// [
-// "u64",
-// "rx_ip4"
-// ],
-// [
-// "u64",
-// "rx_ip6"
-// ],
-// [
-// "u64",
-// "rx_no_buffer"
-// ],
-// [
-// "u64",
-// "rx_miss"
-// ],
-// [
-// "u64",
-// "rx_error"
-// ],
-// [
-// "u64",
-// "tx_error"
-// ],
-// [
-// "u64",
-// "rx_mpls"
-// ],
-// {
-// "crc": "0x8bd65e2d"
-// }
-//
-type VnetSimpleCounter struct {
- SwIfIndex uint32
- Drop uint64
- Punt uint64
- RxIP4 uint64
- RxIP6 uint64
- RxNoBuffer uint64
- RxMiss uint64
- RxError uint64
- TxError uint64
- RxMpls uint64
-}
-
-func (*VnetSimpleCounter) GetTypeName() string {
- return "vnet_simple_counter"
-}
-func (*VnetSimpleCounter) GetCrcString() string {
- return "8bd65e2d"
-}
-
/* Messages */
// SwInterfaceSetFlags represents VPP binary API message 'sw_interface_set_flags':
diff --git a/examples/bin_api/ip.api.json b/examples/bin_api/ip.api.json
index 3983288..62c282b 100644
--- a/examples/bin_api/ip.api.json
+++ b/examples/bin_api/ip.api.json
@@ -1070,13 +1070,13 @@
"stats_index"
],
[
- "vl_api_fib_path_t",
+ "vl_api_mfib_path_t",
"path",
0,
"count"
],
{
- "crc": "0x21329a12"
+ "crc": "0x61faa26f"
}
],
[
@@ -1130,13 +1130,13 @@
"count"
],
[
- "vl_api_fib_path_t",
+ "vl_api_mfib_path_t",
"path",
0,
"count"
],
{
- "crc": "0xe02dcb4b"
+ "crc": "0x738c546e"
}
],
[
@@ -2642,7 +2642,7 @@
}
]
],
- "vl_api_version": "0x1eba4868",
+ "vl_api_version": "0xa3532a2f",
"unions": [
[
"address_union",
@@ -2989,6 +2989,10 @@
],
[
"u8",
+ "is_interface_rx"
+ ],
+ [
+ "u8",
"afi"
],
[
@@ -3018,18 +3022,21 @@
16
],
{
- "crc": "0xabe483ef"
+ "crc": "0xba7a81f0"
}
],
[
- "mac_address",
+ "mfib_path",
[
- "u8",
- "bytes",
- 6
+ "vl_api_fib_path_t",
+ "path"
+ ],
+ [
+ "u32",
+ "itf_flags"
],
{
- "crc": "0xefdbdddc"
+ "crc": "0x4ba77d32"
}
],
[
@@ -3106,6 +3113,10 @@
"ip4_address": {
"length": 4,
"type": "u8"
+ },
+ "mac_address": {
+ "length": 6,
+ "type": "u8"
}
}
}
diff --git a/examples/bin_api/ip/ip.ba.go b/examples/bin_api/ip/ip.ba.go
index b4615b5..8f31fd4 100644
--- a/examples/bin_api/ip/ip.ba.go
+++ b/examples/bin_api/ip/ip.ba.go
@@ -7,7 +7,7 @@
It contains following objects:
91 messages
11 types
- 2 aliases
+ 3 aliases
1 enum
1 union
44 services
@@ -262,7 +262,7 @@ const (
// "ip4_address": {
// "length": 4,
// "type": "u8"
-// }
+// },
//
type IP4Address [4]uint8
@@ -275,6 +275,15 @@ type IP4Address [4]uint8
//
type IP6Address [16]uint8
+// MacAddress represents VPP binary API alias 'mac_address':
+//
+// "mac_address": {
+// "length": 6,
+// "type": "u8"
+// }
+//
+type MacAddress [6]uint8
+
/* Types */
// Address represents VPP binary API type 'address':
@@ -506,6 +515,10 @@ func (*FibMplsLabel) GetCrcString() string {
// ],
// [
// "u8",
+// "is_interface_rx"
+// ],
+// [
+// "u8",
// "afi"
// ],
// [
@@ -535,7 +548,7 @@ func (*FibMplsLabel) GetCrcString() string {
// 16
// ],
// {
-// "crc": "0xabe483ef"
+// "crc": "0xba7a81f0"
// }
//
type FibPath struct {
@@ -552,6 +565,7 @@ type FibPath struct {
IsResolveAttached uint8
IsDvr uint8
IsSourceLookup uint8
+ IsInterfaceRx uint8
Afi uint8
NextHop []byte `struc:"[16]byte"`
NextHopID uint32
@@ -565,23 +579,34 @@ func (*FibPath) GetTypeName() string {
return "fib_path"
}
func (*FibPath) GetCrcString() string {
- return "abe483ef"
+ return "ba7a81f0"
}
-// MacAddress represents VPP binary API type 'mac_address':
+// MfibPath represents VPP binary API type 'mfib_path':
//
-// "mac_address",
-// 6
+// "mfib_path",
+// [
+// "vl_api_fib_path_t",
+// "path"
+// ],
+// [
+// "u32",
+// "itf_flags"
+// ],
+// {
+// "crc": "0x4ba77d32"
+// }
//
-type MacAddress struct {
- Bytes []byte `struc:"[6]byte"`
+type MfibPath struct {
+ Path FibPath
+ ItfFlags uint32
}
-func (*MacAddress) GetTypeName() string {
- return "mac_address"
+func (*MfibPath) GetTypeName() string {
+ return "mfib_path"
}
-func (*MacAddress) GetCrcString() string {
- return "efdbdddc"
+func (*MfibPath) GetCrcString() string {
+ return "4ba77d32"
}
// PuntRedirect represents VPP binary API type 'punt_redirect':
@@ -2356,13 +2381,13 @@ func (*IPMfibDump) GetMessageType() api.MessageType {
// "stats_index"
// ],
// [
-// "vl_api_fib_path_t",
+// "vl_api_mfib_path_t",
// "path",
// 0,
// "count"
// ],
// {
-// "crc": "0x21329a12"
+// "crc": "0x61faa26f"
// }
//
type IPMfibDetails struct {
@@ -2374,14 +2399,14 @@ type IPMfibDetails struct {
SrcAddress []byte `struc:"[4]byte"`
Count uint32 `struc:"sizeof=Path"`
StatsIndex uint32
- Path []FibPath
+ Path []MfibPath
}
func (*IPMfibDetails) GetMessageName() string {
return "ip_mfib_details"
}
func (*IPMfibDetails) GetCrcString() string {
- return "21329a12"
+ return "61faa26f"
}
func (*IPMfibDetails) GetMessageType() api.MessageType {
return api.ReplyMessage
@@ -2452,13 +2477,13 @@ func (*IP6MfibDump) GetMessageType() api.MessageType {
// "count"
// ],
// [
-// "vl_api_fib_path_t",
+// "vl_api_mfib_path_t",
// "path",
// 0,
// "count"
// ],
// {
-// "crc": "0xe02dcb4b"
+// "crc": "0x738c546e"
// }
//
type IP6MfibDetails struct {
@@ -2467,14 +2492,14 @@ type IP6MfibDetails struct {
GrpAddress []byte `struc:"[16]byte"`
SrcAddress []byte `struc:"[16]byte"`
Count uint32 `struc:"sizeof=Path"`
- Path []FibPath
+ Path []MfibPath
}
func (*IP6MfibDetails) GetMessageName() string {
return "ip6_mfib_details"
}
func (*IP6MfibDetails) GetCrcString() string {
- return "e02dcb4b"
+ return "738c546e"
}
func (*IP6MfibDetails) GetMessageType() api.MessageType {
return api.ReplyMessage
diff --git a/examples/bin_api/map.api.json b/examples/bin_api/map.api.json
index cb98202..a19bd3a 100644
--- a/examples/bin_api/map.api.json
+++ b/examples/bin_api/map.api.json
@@ -39,19 +39,11 @@
"psid_length"
],
[
- "bool",
- "is_translation"
- ],
- [
- "bool",
- "is_rfc6052"
- ],
- [
"u16",
"mtu"
],
{
- "crc": "0x7a64714e"
+ "crc": "0xa9358068"
}
],
[
@@ -232,12 +224,8 @@
"u16",
"mtu"
],
- [
- "bool",
- "is_translation"
- ],
{
- "crc": "0x7a986fe6"
+ "crc": "0x2a17dcb8"
}
],
[
@@ -285,6 +273,54 @@
}
],
[
+ "map_if_enable_disable",
+ [
+ "u16",
+ "_vl_msg_id"
+ ],
+ [
+ "u32",
+ "client_index"
+ ],
+ [
+ "u32",
+ "context"
+ ],
+ [
+ "u32",
+ "sw_if_index"
+ ],
+ [
+ "bool",
+ "is_enable"
+ ],
+ [
+ "bool",
+ "is_translation"
+ ],
+ {
+ "crc": "0x61a30cd9"
+ }
+ ],
+ [
+ "map_if_enable_disable_reply",
+ [
+ "u16",
+ "_vl_msg_id"
+ ],
+ [
+ "u32",
+ "context"
+ ],
+ [
+ "i32",
+ "retval"
+ ],
+ {
+ "crc": "0xe8d4e804"
+ }
+ ],
+ [
"map_summary_stats",
[
"u16",
@@ -660,6 +696,46 @@
}
],
[
+ "map_param_set_tcp",
+ [
+ "u16",
+ "_vl_msg_id"
+ ],
+ [
+ "u32",
+ "client_index"
+ ],
+ [
+ "u32",
+ "context"
+ ],
+ [
+ "u16",
+ "tcp_mss"
+ ],
+ {
+ "crc": "0x87a825d9"
+ }
+ ],
+ [
+ "map_param_set_tcp_reply",
+ [
+ "u16",
+ "_vl_msg_id"
+ ],
+ [
+ "u32",
+ "context"
+ ],
+ [
+ "i32",
+ "retval"
+ ],
+ {
+ "crc": "0xe8d4e804"
+ }
+ ],
+ [
"map_param_get",
[
"u16",
@@ -768,7 +844,7 @@
}
]
],
- "vl_api_version": "0x14b499d0",
+ "vl_api_version": "0x75de78c3",
"unions": [
[
"address_union",
@@ -792,10 +868,16 @@
"map_param_add_del_pre_resolve": {
"reply": "map_param_add_del_pre_resolve_reply"
},
+ "map_param_set_tcp": {
+ "reply": "map_param_set_tcp_reply"
+ },
"map_rule_dump": {
"reply": "map_rule_details",
"stream": true
},
+ "map_if_enable_disable": {
+ "reply": "map_if_enable_disable_reply"
+ },
"map_param_set_icmp6": {
"reply": "map_param_set_icmp6_reply"
},
diff --git a/examples/bin_api/maps/maps.ba.go b/examples/bin_api/maps/maps.ba.go
index 8620c98..0a1e678 100644
--- a/examples/bin_api/maps/maps.ba.go
+++ b/examples/bin_api/maps/maps.ba.go
@@ -5,12 +5,12 @@
Package maps is a generated from VPP binary API module 'map'.
It contains following objects:
- 28 messages
+ 32 messages
5 types
2 aliases
1 enum
1 union
- 14 services
+ 16 services
*/
package maps
@@ -33,10 +33,16 @@ var _ = bytes.NewBuffer
// "map_param_add_del_pre_resolve": {
// "reply": "map_param_add_del_pre_resolve_reply"
// },
+// "map_param_set_tcp": {
+// "reply": "map_param_set_tcp_reply"
+// },
// "map_rule_dump": {
// "reply": "map_rule_details",
// "stream": true
// },
+// "map_if_enable_disable": {
+// "reply": "map_if_enable_disable_reply"
+// },
// "map_param_set_icmp6": {
// "reply": "map_param_set_icmp6_reply"
// },
@@ -79,6 +85,7 @@ type Services interface {
MapAddDelRule(*MapAddDelRule) (*MapAddDelRuleReply, error)
MapAddDomain(*MapAddDomain) (*MapAddDomainReply, error)
MapDelDomain(*MapDelDomain) (*MapDelDomainReply, error)
+ MapIfEnableDisable(*MapIfEnableDisable) (*MapIfEnableDisableReply, error)
MapParamAddDelPreResolve(*MapParamAddDelPreResolve) (*MapParamAddDelPreResolveReply, error)
MapParamGet(*MapParamGet) (*MapParamGetReply, error)
MapParamSetFragmentation(*MapParamSetFragmentation) (*MapParamSetFragmentationReply, error)
@@ -86,6 +93,7 @@ type Services interface {
MapParamSetICMP6(*MapParamSetICMP6) (*MapParamSetICMP6Reply, error)
MapParamSetReassembly(*MapParamSetReassembly) (*MapParamSetReassemblyReply, error)
MapParamSetSecurityCheck(*MapParamSetSecurityCheck) (*MapParamSetSecurityCheckReply, error)
+ MapParamSetTCP(*MapParamSetTCP) (*MapParamSetTCPReply, error)
MapParamSetTrafficClass(*MapParamSetTrafficClass) (*MapParamSetTrafficClassReply, error)
MapSummaryStats(*MapSummaryStats) (*MapSummaryStatsReply, error)
}
@@ -377,38 +385,28 @@ func (u *AddressUnion) GetIP6() (a IP6Address) {
// "psid_length"
// ],
// [
-// "bool",
-// "is_translation"
-// ],
-// [
-// "bool",
-// "is_rfc6052"
-// ],
-// [
// "u16",
// "mtu"
// ],
// {
-// "crc": "0x7a64714e"
+// "crc": "0xa9358068"
// }
//
type MapAddDomain struct {
- IP6Prefix IP6Prefix
- IP4Prefix IP4Prefix
- IP6Src IP6Prefix
- EaBitsLen uint8
- PsidOffset uint8
- PsidLength uint8
- IsTranslation bool
- IsRfc6052 bool
- Mtu uint16
+ IP6Prefix IP6Prefix
+ IP4Prefix IP4Prefix
+ IP6Src IP6Prefix
+ EaBitsLen uint8
+ PsidOffset uint8
+ PsidLength uint8
+ Mtu uint16
}
func (*MapAddDomain) GetMessageName() string {
return "map_add_domain"
}
func (*MapAddDomain) GetCrcString() string {
- return "7a64714e"
+ return "a9358068"
}
func (*MapAddDomain) GetMessageType() api.MessageType {
return api.RequestMessage
@@ -685,32 +683,27 @@ func (*MapDomainDump) GetMessageType() api.MessageType {
// "u16",
// "mtu"
// ],
-// [
-// "bool",
-// "is_translation"
-// ],
// {
-// "crc": "0x7a986fe6"
+// "crc": "0x2a17dcb8"
// }
//
type MapDomainDetails struct {
- DomainIndex uint32
- IP6Prefix IP6Prefix
- IP4Prefix IP4Prefix
- IP6Src IP6Prefix
- EaBitsLen uint8
- PsidOffset uint8
- PsidLength uint8
- Flags uint8
- Mtu uint16
- IsTranslation bool
+ DomainIndex uint32
+ IP6Prefix IP6Prefix
+ IP4Prefix IP4Prefix
+ IP6Src IP6Prefix
+ EaBitsLen uint8
+ PsidOffset uint8
+ PsidLength uint8
+ Flags uint8
+ Mtu uint16
}
func (*MapDomainDetails) GetMessageName() string {
return "map_domain_details"
}
func (*MapDomainDetails) GetCrcString() string {
- return "7a986fe6"
+ return "2a17dcb8"
}
func (*MapDomainDetails) GetMessageType() api.MessageType {
return api.ReplyMessage
@@ -791,6 +784,86 @@ func (*MapRuleDetails) GetMessageType() api.MessageType {
return api.ReplyMessage
}
+// MapIfEnableDisable represents VPP binary API message 'map_if_enable_disable':
+//
+// "map_if_enable_disable",
+// [
+// "u16",
+// "_vl_msg_id"
+// ],
+// [
+// "u32",
+// "client_index"
+// ],
+// [
+// "u32",
+// "context"
+// ],
+// [
+// "u32",
+// "sw_if_index"
+// ],
+// [
+// "bool",
+// "is_enable"
+// ],
+// [
+// "bool",
+// "is_translation"
+// ],
+// {
+// "crc": "0x61a30cd9"
+// }
+//
+type MapIfEnableDisable struct {
+ SwIfIndex uint32
+ IsEnable bool
+ IsTranslation bool
+}
+
+func (*MapIfEnableDisable) GetMessageName() string {
+ return "map_if_enable_disable"
+}
+func (*MapIfEnableDisable) GetCrcString() string {
+ return "61a30cd9"
+}
+func (*MapIfEnableDisable) GetMessageType() api.MessageType {
+ return api.RequestMessage
+}
+
+// MapIfEnableDisableReply represents VPP binary API message 'map_if_enable_disable_reply':
+//
+// "map_if_enable_disable_reply",
+// [
+// "u16",
+// "_vl_msg_id"
+// ],
+// [
+// "u32",
+// "context"
+// ],
+// [
+// "i32",
+// "retval"
+// ],
+// {
+// "crc": "0xe8d4e804"
+// }
+//
+type MapIfEnableDisableReply struct {
+ Retval int32
+}
+
+func (*MapIfEnableDisableReply) GetMessageName() string {
+ return "map_if_enable_disable_reply"
+}
+func (*MapIfEnableDisableReply) GetCrcString() string {
+ return "e8d4e804"
+}
+func (*MapIfEnableDisableReply) GetMessageType() api.MessageType {
+ return api.ReplyMessage
+}
+
// MapSummaryStats represents VPP binary API message 'map_summary_stats':
//
// "map_summary_stats",
@@ -1418,6 +1491,76 @@ func (*MapParamSetTrafficClassReply) GetMessageType() api.MessageType {
return api.ReplyMessage
}
+// MapParamSetTCP represents VPP binary API message 'map_param_set_tcp':
+//
+// "map_param_set_tcp",
+// [
+// "u16",
+// "_vl_msg_id"
+// ],
+// [
+// "u32",
+// "client_index"
+// ],
+// [
+// "u32",
+// "context"
+// ],
+// [
+// "u16",
+// "tcp_mss"
+// ],
+// {
+// "crc": "0x87a825d9"
+// }
+//
+type MapParamSetTCP struct {
+ TCPMss uint16
+}
+
+func (*MapParamSetTCP) GetMessageName() string {
+ return "map_param_set_tcp"
+}
+func (*MapParamSetTCP) GetCrcString() string {
+ return "87a825d9"
+}
+func (*MapParamSetTCP) GetMessageType() api.MessageType {
+ return api.RequestMessage
+}
+
+// MapParamSetTCPReply represents VPP binary API message 'map_param_set_tcp_reply':
+//
+// "map_param_set_tcp_reply",
+// [
+// "u16",
+// "_vl_msg_id"
+// ],
+// [
+// "u32",
+// "context"
+// ],
+// [
+// "i32",
+// "retval"
+// ],
+// {
+// "crc": "0xe8d4e804"
+// }
+//
+type MapParamSetTCPReply struct {
+ Retval int32
+}
+
+func (*MapParamSetTCPReply) GetMessageName() string {
+ return "map_param_set_tcp_reply"
+}
+func (*MapParamSetTCPReply) GetCrcString() string {
+ return "e8d4e804"
+}
+func (*MapParamSetTCPReply) GetMessageType() api.MessageType {
+ return api.ReplyMessage
+}
+
// MapParamGet represents VPP binary API message 'map_param_get':
//
// "map_param_get",
@@ -1583,6 +1726,8 @@ func init() {
api.RegisterMessage((*MapDomainDetails)(nil), "map.MapDomainDetails")
api.RegisterMessage((*MapRuleDump)(nil), "map.MapRuleDump")
api.RegisterMessage((*MapRuleDetails)(nil), "map.MapRuleDetails")
+ api.RegisterMessage((*MapIfEnableDisable)(nil), "map.MapIfEnableDisable")
+ api.RegisterMessage((*MapIfEnableDisableReply)(nil), "map.MapIfEnableDisableReply")
api.RegisterMessage((*MapSummaryStats)(nil), "map.MapSummaryStats")
api.RegisterMessage((*MapSummaryStatsReply)(nil), "map.MapSummaryStatsReply")
api.RegisterMessage((*MapParamSetFragmentation)(nil), "map.MapParamSetFragmentation")
@@ -1599,6 +1744,8 @@ func init() {
api.RegisterMessage((*MapParamSetSecurityCheckReply)(nil), "map.MapParamSetSecurityCheckReply")
api.RegisterMessage((*MapParamSetTrafficClass)(nil), "map.MapParamSetTrafficClass")
api.RegisterMessage((*MapParamSetTrafficClassReply)(nil), "map.MapParamSetTrafficClassReply")
+ api.RegisterMessage((*MapParamSetTCP)(nil), "map.MapParamSetTCP")
+ api.RegisterMessage((*MapParamSetTCPReply)(nil), "map.MapParamSetTCPReply")
api.RegisterMessage((*MapParamGet)(nil), "map.MapParamGet")
api.RegisterMessage((*MapParamGetReply)(nil), "map.MapParamGetReply")
}
diff --git a/examples/bin_api/stats.api.json b/examples/bin_api/stats.api.json
deleted file mode 100644
index 31c957e..0000000
--- a/examples/bin_api/stats.api.json
+++ /dev/null
@@ -1,1531 +0,0 @@
-{
- "messages": [
- [
- "want_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0x476f5a08"
- }
- ],
- [
- "want_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "want_interface_simple_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0x476f5a08"
- }
- ],
- [
- "want_interface_simple_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "want_per_interface_simple_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- [
- "u32",
- "num"
- ],
- [
- "u32",
- "sw_ifs",
- 0,
- "num"
- ],
- {
- "crc": "0x729d04f1"
- }
- ],
- [
- "want_per_interface_simple_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "want_interface_combined_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0x476f5a08"
- }
- ],
- [
- "want_interface_combined_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "want_per_interface_combined_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- [
- "u32",
- "num"
- ],
- [
- "u32",
- "sw_ifs",
- 0,
- "num"
- ],
- {
- "crc": "0x729d04f1"
- }
- ],
- [
- "want_per_interface_combined_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "want_ip4_fib_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0x476f5a08"
- }
- ],
- [
- "want_ip4_fib_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "want_ip6_fib_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0x476f5a08"
- }
- ],
- [
- "want_ip6_fib_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "want_ip4_mfib_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0x476f5a08"
- }
- ],
- [
- "want_ip4_mfib_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "want_ip6_mfib_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0x476f5a08"
- }
- ],
- [
- "want_ip6_mfib_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "want_ip4_nbr_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0x476f5a08"
- }
- ],
- [
- "want_ip4_nbr_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "want_ip6_nbr_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable_disable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0x476f5a08"
- }
- ],
- [
- "want_ip6_nbr_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "vnet_ip4_fib_counters",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "vrf_id"
- ],
- [
- "u32",
- "count"
- ],
- [
- "vl_api_ip4_fib_counter_t",
- "c",
- 0,
- "count"
- ],
- {
- "crc": "0x57e3feec"
- }
- ],
- [
- "vnet_ip4_mfib_counters",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "vrf_id"
- ],
- [
- "u32",
- "count"
- ],
- [
- "vl_api_ip4_mfib_counter_t",
- "c",
- 0,
- "count"
- ],
- {
- "crc": "0x946eb588"
- }
- ],
- [
- "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": "0x214c4811"
- }
- ],
- [
- "vnet_ip6_fib_counters",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "vrf_id"
- ],
- [
- "u32",
- "count"
- ],
- [
- "vl_api_ip6_fib_counter_t",
- "c",
- 0,
- "count"
- ],
- {
- "crc": "0x13aed73d"
- }
- ],
- [
- "vnet_ip6_mfib_counters",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "vrf_id"
- ],
- [
- "u32",
- "count"
- ],
- [
- "vl_api_ip6_mfib_counter_t",
- "c",
- 0,
- "count"
- ],
- {
- "crc": "0x65fe1ae3"
- }
- ],
- [
- "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": "0x650161c0"
- }
- ],
- [
- "vnet_interface_simple_counters",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u8",
- "vnet_counter_type"
- ],
- [
- "u32",
- "first_sw_if_index"
- ],
- [
- "u32",
- "count"
- ],
- [
- "u64",
- "data",
- 0,
- "count"
- ],
- {
- "crc": "0x9bc4a808"
- }
- ],
- [
- "vnet_interface_combined_counters",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u8",
- "vnet_counter_type"
- ],
- [
- "u32",
- "first_sw_if_index"
- ],
- [
- "u32",
- "count"
- ],
- [
- "vl_api_vlib_counter_t",
- "data",
- 0,
- "count"
- ],
- {
- "crc": "0x2c595002"
- }
- ],
- [
- "vnet_per_interface_simple_counters",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "count"
- ],
- [
- "u32",
- "timestamp"
- ],
- [
- "vl_api_vnet_simple_counter_t",
- "data",
- 0,
- "count"
- ],
- {
- "crc": "0xd1fba9ba"
- }
- ],
- [
- "vnet_per_interface_combined_counters",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "count"
- ],
- [
- "u32",
- "timestamp"
- ],
- [
- "vl_api_vnet_combined_counter_t",
- "data",
- 0,
- "count"
- ],
- {
- "crc": "0xdc578375"
- }
- ],
- [
- "vnet_get_summary_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- {
- "crc": "0x51077d14"
- }
- ],
- [
- "vnet_get_summary_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- [
- "u64",
- "total_pkts",
- 8
- ],
- [
- "u64",
- "total_bytes",
- 8
- ],
- [
- "f64",
- "vector_rate"
- ],
- {
- "crc": "0x82b5e46c"
- }
- ],
- [
- "stats_get_poller_delay",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- {
- "crc": "0x51077d14"
- }
- ],
- [
- "stats_get_poller_delay_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- [
- "u32",
- "delay"
- ],
- {
- "crc": "0x8c445a33"
- }
- ],
- [
- "want_udp_encap_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0xcfaccc1f"
- }
- ],
- [
- "want_udp_encap_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "vnet_udp_encap_counters",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "timestamp"
- ],
- [
- "u32",
- "count"
- ],
- [
- "vl_api_udp_encap_counter_t",
- "c",
- 0,
- "count"
- ],
- {
- "crc": "0x1ab5e649"
- }
- ],
- [
- "want_bier_neighbor_stats",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "client_index"
- ],
- [
- "u32",
- "context"
- ],
- [
- "u32",
- "enable"
- ],
- [
- "u32",
- "pid"
- ],
- {
- "crc": "0xcfaccc1f"
- }
- ],
- [
- "want_bier_neighbor_stats_reply",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "context"
- ],
- [
- "i32",
- "retval"
- ],
- {
- "crc": "0xe8d4e804"
- }
- ],
- [
- "vnet_bier_neighbor_counters",
- [
- "u16",
- "_vl_msg_id"
- ],
- [
- "u32",
- "timestamp"
- ],
- [
- "u32",
- "count"
- ],
- [
- "vl_api_bier_neighbor_counter_t",
- "c",
- 0,
- "count"
- ],
- {
- "crc": "0xee0481ce"
- }
- ]
- ],
- "vl_api_version": "0xd3b29d42",
- "unions": [],
- "services": {
- "want_ip4_fib_stats": {
- "reply": "want_ip4_fib_stats_reply",
- "events": [
- "vnet_ip4_fib_counters"
- ]
- },
- "want_ip6_fib_stats": {
- "reply": "want_ip6_fib_stats_reply",
- "events": [
- "vnet_ip6_fib_counters"
- ]
- },
- "want_stats": {
- "reply": "want_stats_reply"
- },
- "want_interface_simple_stats": {
- "reply": "want_interface_simple_stats_reply",
- "events": [
- "vnet_interface_simple_counters"
- ]
- },
- "stats_get_poller_delay": {
- "reply": "stats_get_poller_delay_reply"
- },
- "want_per_interface_combined_stats": {
- "reply": "want_per_interface_combined_stats_reply",
- "events": [
- "vnet_per_interface_combined_counters"
- ]
- },
- "vnet_get_summary_stats": {
- "reply": "vnet_get_summary_stats_reply"
- },
- "want_bier_neighbor_stats": {
- "reply": "want_bier_neighbor_stats_reply",
- "events": [
- "vnet_bier_neighbor_counters"
- ]
- },
- "want_udp_encap_stats": {
- "reply": "want_udp_encap_stats_reply",
- "events": [
- "vnet_udp_encap_counters"
- ]
- },
- "want_ip6_nbr_stats": {
- "reply": "want_ip6_nbr_stats_reply",
- "events": [
- "vnet_ip6_nbr_counters"
- ]
- },
- "want_ip4_mfib_stats": {
- "reply": "want_ip4_mfib_stats_reply",
- "events": [
- "vnet_ip4_mfib_counters"
- ]
- },
- "want_ip6_mfib_stats": {
- "reply": "want_ip6_mfib_stats_reply",
- "events": [
- "vnet_ip6_mfib_counters"
- ]
- },
- "want_per_interface_simple_stats": {
- "reply": "want_per_interface_simple_stats_reply",
- "events": [
- "vnet_per_interface_simple_counters"
- ]
- },
- "want_interface_combined_stats": {
- "reply": "want_interface_combined_stats_reply",
- "events": [
- "vnet_interface_combined_counters"
- ]
- },
- "want_ip4_nbr_stats": {
- "reply": "want_ip4_nbr_stats_reply",
- "events": [
- "vnet_ip4_nbr_counters"
- ]
- }
- },
- "enums": [],
- "types": [
- [
- "vlib_counter",
- [
- "u64",
- "packets"
- ],
- [
- "u64",
- "bytes"
- ],
- {
- "crc": "0xce2325a2"
- }
- ],
- [
- "vnet_combined_counter",
- [
- "u32",
- "sw_if_index"
- ],
- [
- "u64",
- "rx_packets"
- ],
- [
- "u64",
- "rx_bytes"
- ],
- [
- "u64",
- "rx_unicast_packets"
- ],
- [
- "u64",
- "rx_unicast_bytes"
- ],
- [
- "u64",
- "rx_multicast_packets"
- ],
- [
- "u64",
- "rx_multicast_bytes"
- ],
- [
- "u64",
- "rx_broadcast_packets"
- ],
- [
- "u64",
- "rx_broadcast_bytes"
- ],
- [
- "u64",
- "tx_packets"
- ],
- [
- "u64",
- "tx_bytes"
- ],
- [
- "u64",
- "tx_unicast_packets"
- ],
- [
- "u64",
- "tx_unicast_bytes"
- ],
- [
- "u64",
- "tx_multicast_packets"
- ],
- [
- "u64",
- "tx_multicast_bytes"
- ],
- [
- "u64",
- "tx_broadcast_packets"
- ],
- [
- "u64",
- "tx_broadcast_bytes"
- ],
- {
- "crc": "0x20905ca4"
- }
- ],
- [
- "vnet_simple_counter",
- [
- "u32",
- "sw_if_index"
- ],
- [
- "u64",
- "drop"
- ],
- [
- "u64",
- "punt"
- ],
- [
- "u64",
- "rx_ip4"
- ],
- [
- "u64",
- "rx_ip6"
- ],
- [
- "u64",
- "rx_no_buffer"
- ],
- [
- "u64",
- "rx_miss"
- ],
- [
- "u64",
- "rx_error"
- ],
- [
- "u64",
- "tx_error"
- ],
- [
- "u64",
- "rx_mpls"
- ],
- {
- "crc": "0x8bd65e2d"
- }
- ],
- [
- "fib_mpls_label",
- [
- "u8",
- "is_uniform"
- ],
- [
- "u32",
- "label"
- ],
- [
- "u8",
- "ttl"
- ],
- [
- "u8",
- "exp"
- ],
- {
- "crc": "0xc93bf35c"
- }
- ],
- [
- "fib_path",
- [
- "u32",
- "sw_if_index"
- ],
- [
- "u32",
- "table_id"
- ],
- [
- "u8",
- "weight"
- ],
- [
- "u8",
- "preference"
- ],
- [
- "u8",
- "is_local"
- ],
- [
- "u8",
- "is_drop"
- ],
- [
- "u8",
- "is_udp_encap"
- ],
- [
- "u8",
- "is_unreach"
- ],
- [
- "u8",
- "is_prohibit"
- ],
- [
- "u8",
- "is_resolve_host"
- ],
- [
- "u8",
- "is_resolve_attached"
- ],
- [
- "u8",
- "is_dvr"
- ],
- [
- "u8",
- "is_source_lookup"
- ],
- [
- "u8",
- "afi"
- ],
- [
- "u8",
- "next_hop",
- 16
- ],
- [
- "u32",
- "next_hop_id"
- ],
- [
- "u32",
- "rpf_id"
- ],
- [
- "u32",
- "via_label"
- ],
- [
- "u8",
- "n_labels"
- ],
- [
- "vl_api_fib_mpls_label_t",
- "label_stack",
- 16
- ],
- {
- "crc": "0xabe483ef"
- }
- ],
- [
- "bier_table_id",
- [
- "u8",
- "bt_set"
- ],
- [
- "u8",
- "bt_sub_domain"
- ],
- [
- "u8",
- "bt_hdr_len_id"
- ],
- {
- "crc": "0x435c691d"
- }
- ],
- [
- "ip4_fib_counter",
- [
- "u32",
- "address"
- ],
- [
- "u8",
- "address_length"
- ],
- [
- "u64",
- "packets"
- ],
- [
- "u64",
- "bytes"
- ],
- {
- "crc": "0xa6ceb0c9"
- }
- ],
- [
- "ip4_mfib_counter",
- [
- "u8",
- "source",
- 4
- ],
- [
- "u8",
- "group",
- 4
- ],
- [
- "u8",
- "group_length"
- ],
- [
- "u64",
- "packets"
- ],
- [
- "u64",
- "bytes"
- ],
- {
- "crc": "0x2cee4721"
- }
- ],
- [
- "ip4_nbr_counter",
- [
- "u32",
- "address"
- ],
- [
- "u8",
- "link_type"
- ],
- [
- "u64",
- "packets"
- ],
- [
- "u64",
- "bytes"
- ],
- {
- "crc": "0xb9f974d6"
- }
- ],
- [
- "ip6_fib_counter",
- [
- "u64",
- "address",
- 2
- ],
- [
- "u8",
- "address_length"
- ],
- [
- "u64",
- "packets"
- ],
- [
- "u64",
- "bytes"
- ],
- {
- "crc": "0xf1197efb"
- }
- ],
- [
- "ip6_mfib_counter",
- [
- "u8",
- "source",
- 16
- ],
- [
- "u8",
- "group",
- 16
- ],
- [
- "u8",
- "group_length"
- ],
- [
- "u64",
- "packets"
- ],
- [
- "u64",
- "bytes"
- ],
- {
- "crc": "0x90a9590e"
- }
- ],
- [
- "ip6_nbr_counter",
- [
- "u64",
- "address",
- 2
- ],
- [
- "u8",
- "link_type"
- ],
- [
- "u64",
- "packets"
- ],
- [
- "u64",
- "bytes"
- ],
- {
- "crc": "0x2d755474"
- }
- ],
- [
- "udp_encap_counter",
- [
- "u32",
- "id"
- ],
- [
- "u64",
- "packets"
- ],
- [
- "u64",
- "bytes"
- ],
- {
- "crc": "0x7107035f"
- }
- ],
- [
- "bier_neighbor_counter",
- [
- "vl_api_bier_table_id_t",
- "tbl_id"
- ],
- [
- "vl_api_fib_path_t",
- "path"
- ],
- [
- "u64",
- "packets"
- ],
- [
- "u64",
- "bytes"
- ],
- {
- "crc": "0x91fe1748"
- }
- ]
- ],
- "aliases": {
- "interface_index": {
- "type": "u32"
- }
- }
-}
diff --git a/examples/bin_api/stats/stats.ba.go b/examples/bin_api/stats/stats.ba.go
deleted file mode 100644
index 97a6e60..0000000
--- a/examples/bin_api/stats/stats.ba.go
+++ /dev/null
@@ -1,2538 +0,0 @@
-// Code generated by GoVPP binapi-generator. DO NOT EDIT.
-// source: stats.api.json
-
-/*
- Package stats is a generated from VPP binary API module 'stats'.
-
- It contains following objects:
- 42 messages
- 14 types
- 1 alias
- 15 services
-
-*/
-package stats
-
-import "git.fd.io/govpp.git/api"
-import "github.com/lunixbochs/struc"
-import "bytes"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = api.RegisterMessage
-var _ = struc.Pack
-var _ = bytes.NewBuffer
-
-// Services represents VPP binary API services:
-//
-// "services": {
-// "want_ip4_fib_stats": {
-// "reply": "want_ip4_fib_stats_reply",
-// "events": [
-// "vnet_ip4_fib_counters"
-// ]
-// },
-// "want_ip6_fib_stats": {
-// "reply": "want_ip6_fib_stats_reply",
-// "events": [
-// "vnet_ip6_fib_counters"
-// ]
-// },
-// "want_stats": {
-// "reply": "want_stats_reply"
-// },
-// "want_interface_simple_stats": {
-// "reply": "want_interface_simple_stats_reply",
-// "events": [
-// "vnet_interface_simple_counters"
-// ]
-// },
-// "stats_get_poller_delay": {
-// "reply": "stats_get_poller_delay_reply"
-// },
-// "want_per_interface_combined_stats": {
-// "reply": "want_per_interface_combined_stats_reply",
-// "events": [
-// "vnet_per_interface_combined_counters"
-// ]
-// },
-// "vnet_get_summary_stats": {
-// "reply": "vnet_get_summary_stats_reply"
-// },
-// "want_bier_neighbor_stats": {
-// "reply": "want_bier_neighbor_stats_reply",
-// "events": [
-// "vnet_bier_neighbor_counters"
-// ]
-// },
-// "want_udp_encap_stats": {
-// "reply": "want_udp_encap_stats_reply",
-// "events": [
-// "vnet_udp_encap_counters"
-// ]
-// },
-// "want_ip6_nbr_stats": {
-// "reply": "want_ip6_nbr_stats_reply",
-// "events": [
-// "vnet_ip6_nbr_counters"
-// ]
-// },
-// "want_ip4_mfib_stats": {
-// "reply": "want_ip4_mfib_stats_reply",
-// "events": [
-// "vnet_ip4_mfib_counters"
-// ]
-// },
-// "want_ip6_mfib_stats": {
-// "reply": "want_ip6_mfib_stats_reply",
-// "events": [
-// "vnet_ip6_mfib_counters"
-// ]
-// },
-// "want_per_interface_simple_stats": {
-// "reply": "want_per_interface_simple_stats_reply",
-// "events": [
-// "vnet_per_interface_simple_counters"
-// ]
-// },
-// "want_interface_combined_stats": {
-// "reply": "want_interface_combined_stats_reply",
-// "events": [
-// "vnet_interface_combined_counters"
-// ]
-// },
-// "want_ip4_nbr_stats": {
-// "reply": "want_ip4_nbr_stats_reply",
-// "events": [
-// "vnet_ip4_nbr_counters"
-// ]
-// }
-// },
-//
-type Services interface {
- StatsGetPollerDelay(*StatsGetPollerDelay) (*StatsGetPollerDelayReply, error)
- VnetGetSummaryStats(*VnetGetSummaryStats) (*VnetGetSummaryStatsReply, error)
- WantBierNeighborStats(*WantBierNeighborStats) (*WantBierNeighborStatsReply, error)
- WantInterfaceCombinedStats(*WantInterfaceCombinedStats) (*WantInterfaceCombinedStatsReply, error)
- WantInterfaceSimpleStats(*WantInterfaceSimpleStats) (*WantInterfaceSimpleStatsReply, error)
- WantIP4FibStats(*WantIP4FibStats) (*WantIP4FibStatsReply, error)
- WantIP4MfibStats(*WantIP4MfibStats) (*WantIP4MfibStatsReply, error)
- WantIP4NbrStats(*WantIP4NbrStats) (*WantIP4NbrStatsReply, error)
- WantIP6FibStats(*WantIP6FibStats) (*WantIP6FibStatsReply, error)
- WantIP6MfibStats(*WantIP6MfibStats) (*WantIP6MfibStatsReply, error)
- WantIP6NbrStats(*WantIP6NbrStats) (*WantIP6NbrStatsReply, error)
- WantPerInterfaceCombinedStats(*WantPerInterfaceCombinedStats) (*WantPerInterfaceCombinedStatsReply, error)
- WantPerInterfaceSimpleStats(*WantPerInterfaceSimpleStats) (*WantPerInterfaceSimpleStatsReply, error)
- WantStats(*WantStats) (*WantStatsReply, error)
- WantUDPEncapStats(*WantUDPEncapStats) (*WantUDPEncapStatsReply, error)
-}
-
-/* Aliases */
-
-// InterfaceIndex represents VPP binary API alias 'interface_index':
-//
-// "interface_index": {
-// "type": "u32"
-// }
-//
-type InterfaceIndex uint32
-
-/* Types */
-
-// VlibCounter represents VPP binary API type 'vlib_counter':
-//
-// "vlib_counter",
-// [
-// "u64",
-// "packets"
-// ],
-// [
-// "u64",
-// "bytes"
-// ],
-// {
-// "crc": "0xce2325a2"
-// }
-//
-type VlibCounter struct {
- Packets uint64
- Bytes uint64
-}
-
-func (*VlibCounter) GetTypeName() string {
- return "vlib_counter"
-}
-func (*VlibCounter) GetCrcString() string {
- return "ce2325a2"
-}
-
-// VnetCombinedCounter represents VPP binary API type 'vnet_combined_counter':
-//
-// "vnet_combined_counter",
-// [
-// "u32",
-// "sw_if_index"
-// ],
-// [
-// "u64",
-// "rx_packets"
-// ],
-// [
-// "u64",
-// "rx_bytes"
-// ],
-// [
-// "u64",
-// "rx_unicast_packets"
-// ],
-// [
-// "u64",
-// "rx_unicast_bytes"
-// ],
-// [
-// "u64",
-// "rx_multicast_packets"
-// ],
-// [
-// "u64",
-// "rx_multicast_bytes"
-// ],
-// [
-// "u64",
-// "rx_broadcast_packets"
-// ],
-// [
-// "u64",
-// "rx_broadcast_bytes"
-// ],
-// [
-// "u64",
-// "tx_packets"
-// ],
-// [
-// "u64",
-// "tx_bytes"
-// ],
-// [
-// "u64",
-// "tx_unicast_packets"
-// ],
-// [
-// "u64",
-// "tx_unicast_bytes"
-// ],
-// [
-// "u64",
-// "tx_multicast_packets"
-// ],
-// [
-// "u64",
-// "tx_multicast_bytes"
-// ],
-// [
-// "u64",
-// "tx_broadcast_packets"
-// ],
-// [
-// "u64",
-// "tx_broadcast_bytes"
-// ],
-// {
-// "crc": "0x20905ca4"
-// }
-//
-type VnetCombinedCounter struct {
- SwIfIndex uint32
- RxPackets uint64
- RxBytes uint64
- RxUnicastPackets uint64
- RxUnicastBytes uint64
- RxMulticastPackets uint64
- RxMulticastBytes uint64
- RxBroadcastPackets uint64
- RxBroadcastBytes uint64
- TxPackets uint64
- TxBytes uint64
- TxUnicastPackets uint64
- TxUnicastBytes uint64
- TxMulticastPackets uint64
- TxMulticastBytes uint64
- TxBroadcastPackets uint64
- TxBroadcastBytes uint64
-}
-
-func (*VnetCombinedCounter) GetTypeName() string {
- return "vnet_combined_counter"
-}
-func (*VnetCombinedCounter) GetCrcString() string {
- return "20905ca4"
-}
-
-// VnetSimpleCounter represents VPP binary API type 'vnet_simple_counter':
-//
-// "vnet_simple_counter",
-// [
-// "u32",
-// "sw_if_index"
-// ],
-// [
-// "u64",
-// "drop"
-// ],
-// [
-// "u64",
-// "punt"
-// ],
-// [
-// "u64",
-// "rx_ip4"
-// ],
-// [
-// "u64",
-// "rx_ip6"
-// ],
-// [
-// "u64",
-// "rx_no_buffer"
-// ],
-// [
-// "u64",
-// "rx_miss"
-// ],
-// [
-// "u64",
-// "rx_error"
-// ],
-// [
-// "u64",
-// "tx_error"
-// ],
-// [
-// "u64",
-// "rx_mpls"
-// ],
-// {
-// "crc": "0x8bd65e2d"
-// }
-//
-type VnetSimpleCounter struct {
- SwIfIndex uint32
- Drop uint64
- Punt uint64
- RxIP4 uint64
- RxIP6 uint64
- RxNoBuffer uint64
- RxMiss uint64
- RxError uint64
- TxError uint64
- RxMpls uint64
-}
-
-func (*VnetSimpleCounter) GetTypeName() string {
- return "vnet_simple_counter"
-}
-func (*VnetSimpleCounter) GetCrcString() string {
- return "8bd65e2d"
-}
-
-// FibMplsLabel represents VPP binary API type 'fib_mpls_label':
-//
-// "fib_mpls_label",
-// [
-// "u8",
-// "is_uniform"
-// ],
-// [
-// "u32",
-// "label"
-// ],
-// [
-// "u8",
-// "ttl"
-// ],
-// [
-// "u8",
-// "exp"
-// ],
-// {
-// "crc": "0xc93bf35c"
-// }
-//
-type FibMplsLabel struct {
- IsUniform uint8
- Label uint32
- TTL uint8
- Exp uint8
-}
-
-func (*FibMplsLabel) GetTypeName() string {
- return "fib_mpls_label"
-}
-func (*FibMplsLabel) GetCrcString() string {
- return "c93bf35c"
-}
-
-// FibPath represents VPP binary API type 'fib_path':
-//
-// "fib_path",
-// [
-// "u32",
-// "sw_if_index"
-// ],
-// [
-// "u32",
-// "table_id"
-// ],
-// [
-// "u8",
-// "weight"
-// ],
-// [
-// "u8",
-// "preference"
-// ],
-// [
-// "u8",
-// "is_local"
-// ],
-// [
-// "u8",
-// "is_drop"
-// ],
-// [
-// "u8",
-// "is_udp_encap"
-// ],
-// [
-// "u8",
-// "is_unreach"
-// ],
-// [
-// "u8",
-// "is_prohibit"
-// ],
-// [
-// "u8",
-// "is_resolve_host"
-// ],
-// [
-// "u8",
-// "is_resolve_attached"
-// ],
-// [
-// "u8",
-// "is_dvr"
-// ],
-// [
-// "u8",
-// "is_source_lookup"
-// ],
-// [
-// "u8",
-// "afi"
-// ],
-// [
-// "u8",
-// "next_hop",
-// 16
-// ],
-// [
-// "u32",
-// "next_hop_id"
-// ],
-// [
-// "u32",
-// "rpf_id"
-// ],
-// [
-// "u32",
-// "via_label"
-// ],
-// [
-// "u8",
-// "n_labels"
-// ],
-// [
-// "vl_api_fib_mpls_label_t",
-// "label_stack",
-// 16
-// ],
-// {
-// "crc": "0xabe483ef"
-// }
-//
-type FibPath struct {
- SwIfIndex uint32
- TableID uint32
- Weight uint8
- Preference uint8
- IsLocal uint8
- IsDrop uint8
- IsUDPEncap uint8
- IsUnreach uint8
- IsProhibit uint8
- IsResolveHost uint8
- IsResolveAttached uint8
- IsDvr uint8
- IsSourceLookup uint8
- Afi uint8
- NextHop []byte `struc:"[16]byte"`
- NextHopID uint32
- RpfID uint32
- ViaLabel uint32
- NLabels uint8
- LabelStack []FibMplsLabel `struc:"[16]FibMplsLabel"`
-}
-
-func (*FibPath) GetTypeName() string {
- return "fib_path"
-}
-func (*FibPath) GetCrcString() string {
- return "abe483ef"
-}
-
-// BierTableID represents VPP binary API type 'bier_table_id':
-//
-// "bier_table_id",
-// [
-// "u8",
-// "bt_set"
-// ],
-// [
-// "u8",
-// "bt_sub_domain"
-// ],
-// [
-// "u8",
-// "bt_hdr_len_id"
-// ],
-// {
-// "crc": "0x435c691d"
-// }
-//
-type BierTableID struct {
- BtSet uint8
- BtSubDomain uint8
- BtHdrLenID uint8
-}
-
-func (*BierTableID) GetTypeName() string {
- return "bier_table_id"
-}
-func (*BierTableID) GetCrcString() string {
- return "435c691d"
-}
-
-// IP4FibCounter represents VPP binary API type 'ip4_fib_counter':
-//
-// "ip4_fib_counter",
-// [
-// "u32",
-// "address"
-// ],
-// [
-// "u8",
-// "address_length"
-// ],
-// [
-// "u64",
-// "packets"
-// ],
-// [
-// "u64",
-// "bytes"
-// ],
-// {
-// "crc": "0xa6ceb0c9"
-// }
-//
-type IP4FibCounter struct {
- Address uint32
- AddressLength uint8
- Packets uint64
- Bytes uint64
-}
-
-func (*IP4FibCounter) GetTypeName() string {
- return "ip4_fib_counter"
-}
-func (*IP4FibCounter) GetCrcString() string {
- return "a6ceb0c9"
-}
-
-// IP4MfibCounter represents VPP binary API type 'ip4_mfib_counter':
-//
-// "ip4_mfib_counter",
-// [
-// "u8",
-// "source",
-// 4
-// ],
-// [
-// "u8",
-// "group",
-// 4
-// ],
-// [
-// "u8",
-// "group_length"
-// ],
-// [
-// "u64",
-// "packets"
-// ],
-// [
-// "u64",
-// "bytes"
-// ],
-// {
-// "crc": "0x2cee4721"
-// }
-//
-type IP4MfibCounter struct {
- Source []byte `struc:"[4]byte"`
- Group []byte `struc:"[4]byte"`
- GroupLength uint8
- Packets uint64
- Bytes uint64
-}
-
-func (*IP4MfibCounter) GetTypeName() string {
- return "ip4_mfib_counter"
-}
-func (*IP4MfibCounter) GetCrcString() string {
- return "2cee4721"
-}
-
-// IP4NbrCounter represents VPP binary API type 'ip4_nbr_counter':
-//
-// "ip4_nbr_counter",
-// [
-// "u32",
-// "address"
-// ],
-// [
-// "u8",
-// "link_type"
-// ],
-// [
-// "u64",
-// "packets"
-// ],
-// [
-// "u64",
-// "bytes"
-// ],
-// {
-// "crc": "0xb9f974d6"
-// }
-//
-type IP4NbrCounter struct {
- Address uint32
- LinkType uint8
- Packets uint64
- Bytes uint64
-}
-
-func (*IP4NbrCounter) GetTypeName() string {
- return "ip4_nbr_counter"
-}
-func (*IP4NbrCounter) GetCrcString() string {
- return "b9f974d6"
-}
-
-// IP6FibCounter represents VPP binary API type 'ip6_fib_counter':
-//
-// "ip6_fib_counter",
-// [
-// "u64",
-// "address",
-// 2
-// ],
-// [
-// "u8",
-// "address_length"
-// ],
-// [
-// "u64",
-// "packets"
-// ],
-// [
-// "u64",
-// "bytes"
-// ],
-// {
-// "crc": "0xf1197efb"
-// }
-//
-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 "f1197efb"
-}
-
-// IP6MfibCounter represents VPP binary API type 'ip6_mfib_counter':
-//
-// "ip6_mfib_counter",
-// [
-// "u8",
-// "source",
-// 16
-// ],
-// [
-// "u8",
-// "group",
-// 16
-// ],
-// [
-// "u8",
-// "group_length"
-// ],
-// [
-// "u64",
-// "packets"
-// ],
-// [
-// "u64",
-// "bytes"
-// ],
-// {
-// "crc": "0x90a9590e"
-// }
-//
-type IP6MfibCounter struct {
- Source []byte `struc:"[16]byte"`
- Group []byte `struc:"[16]byte"`
- GroupLength uint8
- Packets uint64
- Bytes uint64
-}
-
-func (*IP6MfibCounter) GetTypeName() string {
- return "ip6_mfib_counter"
-}
-func (*IP6MfibCounter) GetCrcString() string {
- return "90a9590e"
-}
-
-// IP6NbrCounter represents VPP binary API type 'ip6_nbr_counter':
-//
-// "ip6_nbr_counter",
-// [
-// "u64",
-// "address",
-// 2
-// ],
-// [
-// "u8",
-// "link_type"
-// ],
-// [
-// "u64",
-// "packets"
-// ],
-// [
-// "u64",
-// "bytes"
-// ],
-// {
-// "crc": "0x2d755474"
-// }
-//
-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 "2d755474"
-}
-
-// UDPEncapCounter represents VPP binary API type 'udp_encap_counter':
-//
-// "udp_encap_counter",
-// [
-// "u32",
-// "id"
-// ],
-// [
-// "u64",
-// "packets"
-// ],
-// [
-// "u64",
-// "bytes"
-// ],
-// {
-// "crc": "0x7107035f"
-// }
-//
-type UDPEncapCounter struct {
- ID uint32
- Packets uint64
- Bytes uint64
-}
-
-func (*UDPEncapCounter) GetTypeName() string {
- return "udp_encap_counter"
-}
-func (*UDPEncapCounter) GetCrcString() string {
- return "7107035f"
-}
-
-// BierNeighborCounter represents VPP binary API type 'bier_neighbor_counter':
-//
-// "bier_neighbor_counter",
-// [
-// "vl_api_bier_table_id_t",
-// "tbl_id"
-// ],
-// [
-// "vl_api_fib_path_t",
-// "path"
-// ],
-// [
-// "u64",
-// "packets"
-// ],
-// [
-// "u64",
-// "bytes"
-// ],
-// {
-// "crc": "0x91fe1748"
-// }
-//
-type BierNeighborCounter struct {
- TblID BierTableID
- Path FibPath
- Packets uint64
- Bytes uint64
-}
-
-func (*BierNeighborCounter) GetTypeName() string {
- return "bier_neighbor_counter"
-}
-func (*BierNeighborCounter) GetCrcString() string {
- return "91fe1748"
-}
-
-/* Messages */
-
-// WantStats represents VPP binary API message 'want_stats':
-//
-// "want_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0x476f5a08"
-// }
-//
-type WantStats struct {
- EnableDisable uint32
- PID uint32
-}
-
-func (*WantStats) GetMessageName() string {
- return "want_stats"
-}
-func (*WantStats) GetCrcString() string {
- return "476f5a08"
-}
-func (*WantStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantStatsReply represents VPP binary API message 'want_stats_reply':
-//
-// "want_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantStatsReply struct {
- Retval int32
-}
-
-func (*WantStatsReply) GetMessageName() string {
- return "want_stats_reply"
-}
-func (*WantStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantInterfaceSimpleStats represents VPP binary API message 'want_interface_simple_stats':
-//
-// "want_interface_simple_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0x476f5a08"
-// }
-//
-type WantInterfaceSimpleStats struct {
- EnableDisable uint32
- PID uint32
-}
-
-func (*WantInterfaceSimpleStats) GetMessageName() string {
- return "want_interface_simple_stats"
-}
-func (*WantInterfaceSimpleStats) GetCrcString() string {
- return "476f5a08"
-}
-func (*WantInterfaceSimpleStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantInterfaceSimpleStatsReply represents VPP binary API message 'want_interface_simple_stats_reply':
-//
-// "want_interface_simple_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantInterfaceSimpleStatsReply struct {
- Retval int32
-}
-
-func (*WantInterfaceSimpleStatsReply) GetMessageName() string {
- return "want_interface_simple_stats_reply"
-}
-func (*WantInterfaceSimpleStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantInterfaceSimpleStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantPerInterfaceSimpleStats represents VPP binary API message 'want_per_interface_simple_stats':
-//
-// "want_per_interface_simple_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// [
-// "u32",
-// "num"
-// ],
-// [
-// "u32",
-// "sw_ifs",
-// 0,
-// "num"
-// ],
-// {
-// "crc": "0x729d04f1"
-// }
-//
-type WantPerInterfaceSimpleStats struct {
- EnableDisable uint32
- PID uint32
- Num uint32 `struc:"sizeof=SwIfs"`
- SwIfs []uint32
-}
-
-func (*WantPerInterfaceSimpleStats) GetMessageName() string {
- return "want_per_interface_simple_stats"
-}
-func (*WantPerInterfaceSimpleStats) GetCrcString() string {
- return "729d04f1"
-}
-func (*WantPerInterfaceSimpleStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantPerInterfaceSimpleStatsReply represents VPP binary API message 'want_per_interface_simple_stats_reply':
-//
-// "want_per_interface_simple_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantPerInterfaceSimpleStatsReply struct {
- Retval int32
-}
-
-func (*WantPerInterfaceSimpleStatsReply) GetMessageName() string {
- return "want_per_interface_simple_stats_reply"
-}
-func (*WantPerInterfaceSimpleStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantPerInterfaceSimpleStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantInterfaceCombinedStats represents VPP binary API message 'want_interface_combined_stats':
-//
-// "want_interface_combined_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0x476f5a08"
-// }
-//
-type WantInterfaceCombinedStats struct {
- EnableDisable uint32
- PID uint32
-}
-
-func (*WantInterfaceCombinedStats) GetMessageName() string {
- return "want_interface_combined_stats"
-}
-func (*WantInterfaceCombinedStats) GetCrcString() string {
- return "476f5a08"
-}
-func (*WantInterfaceCombinedStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantInterfaceCombinedStatsReply represents VPP binary API message 'want_interface_combined_stats_reply':
-//
-// "want_interface_combined_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantInterfaceCombinedStatsReply struct {
- Retval int32
-}
-
-func (*WantInterfaceCombinedStatsReply) GetMessageName() string {
- return "want_interface_combined_stats_reply"
-}
-func (*WantInterfaceCombinedStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantInterfaceCombinedStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantPerInterfaceCombinedStats represents VPP binary API message 'want_per_interface_combined_stats':
-//
-// "want_per_interface_combined_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// [
-// "u32",
-// "num"
-// ],
-// [
-// "u32",
-// "sw_ifs",
-// 0,
-// "num"
-// ],
-// {
-// "crc": "0x729d04f1"
-// }
-//
-type WantPerInterfaceCombinedStats struct {
- EnableDisable uint32
- PID uint32
- Num uint32 `struc:"sizeof=SwIfs"`
- SwIfs []uint32
-}
-
-func (*WantPerInterfaceCombinedStats) GetMessageName() string {
- return "want_per_interface_combined_stats"
-}
-func (*WantPerInterfaceCombinedStats) GetCrcString() string {
- return "729d04f1"
-}
-func (*WantPerInterfaceCombinedStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantPerInterfaceCombinedStatsReply represents VPP binary API message 'want_per_interface_combined_stats_reply':
-//
-// "want_per_interface_combined_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantPerInterfaceCombinedStatsReply struct {
- Retval int32
-}
-
-func (*WantPerInterfaceCombinedStatsReply) GetMessageName() string {
- return "want_per_interface_combined_stats_reply"
-}
-func (*WantPerInterfaceCombinedStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantPerInterfaceCombinedStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantIP4FibStats represents VPP binary API message 'want_ip4_fib_stats':
-//
-// "want_ip4_fib_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0x476f5a08"
-// }
-//
-type WantIP4FibStats struct {
- EnableDisable uint32
- PID uint32
-}
-
-func (*WantIP4FibStats) GetMessageName() string {
- return "want_ip4_fib_stats"
-}
-func (*WantIP4FibStats) GetCrcString() string {
- return "476f5a08"
-}
-func (*WantIP4FibStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantIP4FibStatsReply represents VPP binary API message 'want_ip4_fib_stats_reply':
-//
-// "want_ip4_fib_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantIP4FibStatsReply struct {
- Retval int32
-}
-
-func (*WantIP4FibStatsReply) GetMessageName() string {
- return "want_ip4_fib_stats_reply"
-}
-func (*WantIP4FibStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantIP4FibStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantIP6FibStats represents VPP binary API message 'want_ip6_fib_stats':
-//
-// "want_ip6_fib_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0x476f5a08"
-// }
-//
-type WantIP6FibStats struct {
- EnableDisable uint32
- PID uint32
-}
-
-func (*WantIP6FibStats) GetMessageName() string {
- return "want_ip6_fib_stats"
-}
-func (*WantIP6FibStats) GetCrcString() string {
- return "476f5a08"
-}
-func (*WantIP6FibStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantIP6FibStatsReply represents VPP binary API message 'want_ip6_fib_stats_reply':
-//
-// "want_ip6_fib_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantIP6FibStatsReply struct {
- Retval int32
-}
-
-func (*WantIP6FibStatsReply) GetMessageName() string {
- return "want_ip6_fib_stats_reply"
-}
-func (*WantIP6FibStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantIP6FibStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantIP4MfibStats represents VPP binary API message 'want_ip4_mfib_stats':
-//
-// "want_ip4_mfib_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0x476f5a08"
-// }
-//
-type WantIP4MfibStats struct {
- EnableDisable uint32
- PID uint32
-}
-
-func (*WantIP4MfibStats) GetMessageName() string {
- return "want_ip4_mfib_stats"
-}
-func (*WantIP4MfibStats) GetCrcString() string {
- return "476f5a08"
-}
-func (*WantIP4MfibStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantIP4MfibStatsReply represents VPP binary API message 'want_ip4_mfib_stats_reply':
-//
-// "want_ip4_mfib_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantIP4MfibStatsReply struct {
- Retval int32
-}
-
-func (*WantIP4MfibStatsReply) GetMessageName() string {
- return "want_ip4_mfib_stats_reply"
-}
-func (*WantIP4MfibStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantIP4MfibStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantIP6MfibStats represents VPP binary API message 'want_ip6_mfib_stats':
-//
-// "want_ip6_mfib_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0x476f5a08"
-// }
-//
-type WantIP6MfibStats struct {
- EnableDisable uint32
- PID uint32
-}
-
-func (*WantIP6MfibStats) GetMessageName() string {
- return "want_ip6_mfib_stats"
-}
-func (*WantIP6MfibStats) GetCrcString() string {
- return "476f5a08"
-}
-func (*WantIP6MfibStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantIP6MfibStatsReply represents VPP binary API message 'want_ip6_mfib_stats_reply':
-//
-// "want_ip6_mfib_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantIP6MfibStatsReply struct {
- Retval int32
-}
-
-func (*WantIP6MfibStatsReply) GetMessageName() string {
- return "want_ip6_mfib_stats_reply"
-}
-func (*WantIP6MfibStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantIP6MfibStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantIP4NbrStats represents VPP binary API message 'want_ip4_nbr_stats':
-//
-// "want_ip4_nbr_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0x476f5a08"
-// }
-//
-type WantIP4NbrStats struct {
- EnableDisable uint32
- PID uint32
-}
-
-func (*WantIP4NbrStats) GetMessageName() string {
- return "want_ip4_nbr_stats"
-}
-func (*WantIP4NbrStats) GetCrcString() string {
- return "476f5a08"
-}
-func (*WantIP4NbrStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantIP4NbrStatsReply represents VPP binary API message 'want_ip4_nbr_stats_reply':
-//
-// "want_ip4_nbr_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantIP4NbrStatsReply struct {
- Retval int32
-}
-
-func (*WantIP4NbrStatsReply) GetMessageName() string {
- return "want_ip4_nbr_stats_reply"
-}
-func (*WantIP4NbrStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantIP4NbrStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantIP6NbrStats represents VPP binary API message 'want_ip6_nbr_stats':
-//
-// "want_ip6_nbr_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable_disable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0x476f5a08"
-// }
-//
-type WantIP6NbrStats struct {
- EnableDisable uint32
- PID uint32
-}
-
-func (*WantIP6NbrStats) GetMessageName() string {
- return "want_ip6_nbr_stats"
-}
-func (*WantIP6NbrStats) GetCrcString() string {
- return "476f5a08"
-}
-func (*WantIP6NbrStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantIP6NbrStatsReply represents VPP binary API message 'want_ip6_nbr_stats_reply':
-//
-// "want_ip6_nbr_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantIP6NbrStatsReply struct {
- Retval int32
-}
-
-func (*WantIP6NbrStatsReply) GetMessageName() string {
- return "want_ip6_nbr_stats_reply"
-}
-func (*WantIP6NbrStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantIP6NbrStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// VnetIP4FibCounters represents VPP binary API message 'vnet_ip4_fib_counters':
-//
-// "vnet_ip4_fib_counters",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "vrf_id"
-// ],
-// [
-// "u32",
-// "count"
-// ],
-// [
-// "vl_api_ip4_fib_counter_t",
-// "c",
-// 0,
-// "count"
-// ],
-// {
-// "crc": "0x57e3feec"
-// }
-//
-type VnetIP4FibCounters struct {
- VrfID uint32
- Count uint32 `struc:"sizeof=C"`
- C []IP4FibCounter
-}
-
-func (*VnetIP4FibCounters) GetMessageName() string {
- return "vnet_ip4_fib_counters"
-}
-func (*VnetIP4FibCounters) GetCrcString() string {
- return "57e3feec"
-}
-func (*VnetIP4FibCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// VnetIP4MfibCounters represents VPP binary API message 'vnet_ip4_mfib_counters':
-//
-// "vnet_ip4_mfib_counters",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "vrf_id"
-// ],
-// [
-// "u32",
-// "count"
-// ],
-// [
-// "vl_api_ip4_mfib_counter_t",
-// "c",
-// 0,
-// "count"
-// ],
-// {
-// "crc": "0x946eb588"
-// }
-//
-type VnetIP4MfibCounters struct {
- VrfID uint32
- Count uint32 `struc:"sizeof=C"`
- C []IP4MfibCounter
-}
-
-func (*VnetIP4MfibCounters) GetMessageName() string {
- return "vnet_ip4_mfib_counters"
-}
-func (*VnetIP4MfibCounters) GetCrcString() string {
- return "946eb588"
-}
-func (*VnetIP4MfibCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// VnetIP4NbrCounters represents VPP binary API message 'vnet_ip4_nbr_counters':
-//
-// "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": "0x214c4811"
-// }
-//
-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) GetCrcString() string {
- return "214c4811"
-}
-func (*VnetIP4NbrCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// VnetIP6FibCounters represents VPP binary API message 'vnet_ip6_fib_counters':
-//
-// "vnet_ip6_fib_counters",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "vrf_id"
-// ],
-// [
-// "u32",
-// "count"
-// ],
-// [
-// "vl_api_ip6_fib_counter_t",
-// "c",
-// 0,
-// "count"
-// ],
-// {
-// "crc": "0x13aed73d"
-// }
-//
-type VnetIP6FibCounters struct {
- VrfID uint32
- Count uint32 `struc:"sizeof=C"`
- C []IP6FibCounter
-}
-
-func (*VnetIP6FibCounters) GetMessageName() string {
- return "vnet_ip6_fib_counters"
-}
-func (*VnetIP6FibCounters) GetCrcString() string {
- return "13aed73d"
-}
-func (*VnetIP6FibCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// VnetIP6MfibCounters represents VPP binary API message 'vnet_ip6_mfib_counters':
-//
-// "vnet_ip6_mfib_counters",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "vrf_id"
-// ],
-// [
-// "u32",
-// "count"
-// ],
-// [
-// "vl_api_ip6_mfib_counter_t",
-// "c",
-// 0,
-// "count"
-// ],
-// {
-// "crc": "0x65fe1ae3"
-// }
-//
-type VnetIP6MfibCounters struct {
- VrfID uint32
- Count uint32 `struc:"sizeof=C"`
- C []IP6MfibCounter
-}
-
-func (*VnetIP6MfibCounters) GetMessageName() string {
- return "vnet_ip6_mfib_counters"
-}
-func (*VnetIP6MfibCounters) GetCrcString() string {
- return "65fe1ae3"
-}
-func (*VnetIP6MfibCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// VnetIP6NbrCounters represents VPP binary API message 'vnet_ip6_nbr_counters':
-//
-// "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": "0x650161c0"
-// }
-//
-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) GetCrcString() string {
- return "650161c0"
-}
-func (*VnetIP6NbrCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// VnetInterfaceSimpleCounters represents VPP binary API message 'vnet_interface_simple_counters':
-//
-// "vnet_interface_simple_counters",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u8",
-// "vnet_counter_type"
-// ],
-// [
-// "u32",
-// "first_sw_if_index"
-// ],
-// [
-// "u32",
-// "count"
-// ],
-// [
-// "u64",
-// "data",
-// 0,
-// "count"
-// ],
-// {
-// "crc": "0x9bc4a808"
-// }
-//
-type VnetInterfaceSimpleCounters struct {
- VnetCounterType uint8
- FirstSwIfIndex uint32
- Count uint32 `struc:"sizeof=Data"`
- Data []uint64
-}
-
-func (*VnetInterfaceSimpleCounters) GetMessageName() string {
- return "vnet_interface_simple_counters"
-}
-func (*VnetInterfaceSimpleCounters) GetCrcString() string {
- return "9bc4a808"
-}
-func (*VnetInterfaceSimpleCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// VnetInterfaceCombinedCounters represents VPP binary API message 'vnet_interface_combined_counters':
-//
-// "vnet_interface_combined_counters",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u8",
-// "vnet_counter_type"
-// ],
-// [
-// "u32",
-// "first_sw_if_index"
-// ],
-// [
-// "u32",
-// "count"
-// ],
-// [
-// "vl_api_vlib_counter_t",
-// "data",
-// 0,
-// "count"
-// ],
-// {
-// "crc": "0x2c595002"
-// }
-//
-type VnetInterfaceCombinedCounters struct {
- VnetCounterType uint8
- FirstSwIfIndex uint32
- Count uint32 `struc:"sizeof=Data"`
- Data []VlibCounter
-}
-
-func (*VnetInterfaceCombinedCounters) GetMessageName() string {
- return "vnet_interface_combined_counters"
-}
-func (*VnetInterfaceCombinedCounters) GetCrcString() string {
- return "2c595002"
-}
-func (*VnetInterfaceCombinedCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// VnetPerInterfaceSimpleCounters represents VPP binary API message 'vnet_per_interface_simple_counters':
-//
-// "vnet_per_interface_simple_counters",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "count"
-// ],
-// [
-// "u32",
-// "timestamp"
-// ],
-// [
-// "vl_api_vnet_simple_counter_t",
-// "data",
-// 0,
-// "count"
-// ],
-// {
-// "crc": "0xd1fba9ba"
-// }
-//
-type VnetPerInterfaceSimpleCounters struct {
- Count uint32 `struc:"sizeof=Data"`
- Timestamp uint32
- Data []VnetSimpleCounter
-}
-
-func (*VnetPerInterfaceSimpleCounters) GetMessageName() string {
- return "vnet_per_interface_simple_counters"
-}
-func (*VnetPerInterfaceSimpleCounters) GetCrcString() string {
- return "d1fba9ba"
-}
-func (*VnetPerInterfaceSimpleCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// VnetPerInterfaceCombinedCounters represents VPP binary API message 'vnet_per_interface_combined_counters':
-//
-// "vnet_per_interface_combined_counters",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "count"
-// ],
-// [
-// "u32",
-// "timestamp"
-// ],
-// [
-// "vl_api_vnet_combined_counter_t",
-// "data",
-// 0,
-// "count"
-// ],
-// {
-// "crc": "0xdc578375"
-// }
-//
-type VnetPerInterfaceCombinedCounters struct {
- Count uint32 `struc:"sizeof=Data"`
- Timestamp uint32
- Data []VnetCombinedCounter
-}
-
-func (*VnetPerInterfaceCombinedCounters) GetMessageName() string {
- return "vnet_per_interface_combined_counters"
-}
-func (*VnetPerInterfaceCombinedCounters) GetCrcString() string {
- return "dc578375"
-}
-func (*VnetPerInterfaceCombinedCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// VnetGetSummaryStats represents VPP binary API message 'vnet_get_summary_stats':
-//
-// "vnet_get_summary_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// {
-// "crc": "0x51077d14"
-// }
-//
-type VnetGetSummaryStats struct{}
-
-func (*VnetGetSummaryStats) GetMessageName() string {
- return "vnet_get_summary_stats"
-}
-func (*VnetGetSummaryStats) GetCrcString() string {
- return "51077d14"
-}
-func (*VnetGetSummaryStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// VnetGetSummaryStatsReply represents VPP binary API message 'vnet_get_summary_stats_reply':
-//
-// "vnet_get_summary_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// [
-// "u64",
-// "total_pkts",
-// 8
-// ],
-// [
-// "u64",
-// "total_bytes",
-// 8
-// ],
-// [
-// "f64",
-// "vector_rate"
-// ],
-// {
-// "crc": "0x82b5e46c"
-// }
-//
-type VnetGetSummaryStatsReply struct {
- Retval int32
- TotalPkts []uint64 `struc:"[8]uint64"`
- TotalBytes []uint64 `struc:"[8]uint64"`
- VectorRate float64
-}
-
-func (*VnetGetSummaryStatsReply) GetMessageName() string {
- return "vnet_get_summary_stats_reply"
-}
-func (*VnetGetSummaryStatsReply) GetCrcString() string {
- return "82b5e46c"
-}
-func (*VnetGetSummaryStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// StatsGetPollerDelay represents VPP binary API message 'stats_get_poller_delay':
-//
-// "stats_get_poller_delay",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// {
-// "crc": "0x51077d14"
-// }
-//
-type StatsGetPollerDelay struct{}
-
-func (*StatsGetPollerDelay) GetMessageName() string {
- return "stats_get_poller_delay"
-}
-func (*StatsGetPollerDelay) GetCrcString() string {
- return "51077d14"
-}
-func (*StatsGetPollerDelay) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// StatsGetPollerDelayReply represents VPP binary API message 'stats_get_poller_delay_reply':
-//
-// "stats_get_poller_delay_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// [
-// "u32",
-// "delay"
-// ],
-// {
-// "crc": "0x8c445a33"
-// }
-//
-type StatsGetPollerDelayReply struct {
- Retval int32
- Delay uint32
-}
-
-func (*StatsGetPollerDelayReply) GetMessageName() string {
- return "stats_get_poller_delay_reply"
-}
-func (*StatsGetPollerDelayReply) GetCrcString() string {
- return "8c445a33"
-}
-func (*StatsGetPollerDelayReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// WantUDPEncapStats represents VPP binary API message 'want_udp_encap_stats':
-//
-// "want_udp_encap_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0xcfaccc1f"
-// }
-//
-type WantUDPEncapStats struct {
- Enable uint32
- PID uint32
-}
-
-func (*WantUDPEncapStats) GetMessageName() string {
- return "want_udp_encap_stats"
-}
-func (*WantUDPEncapStats) GetCrcString() string {
- return "cfaccc1f"
-}
-func (*WantUDPEncapStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantUDPEncapStatsReply represents VPP binary API message 'want_udp_encap_stats_reply':
-//
-// "want_udp_encap_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantUDPEncapStatsReply struct {
- Retval int32
-}
-
-func (*WantUDPEncapStatsReply) GetMessageName() string {
- return "want_udp_encap_stats_reply"
-}
-func (*WantUDPEncapStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantUDPEncapStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// VnetUDPEncapCounters represents VPP binary API message 'vnet_udp_encap_counters':
-//
-// "vnet_udp_encap_counters",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "timestamp"
-// ],
-// [
-// "u32",
-// "count"
-// ],
-// [
-// "vl_api_udp_encap_counter_t",
-// "c",
-// 0,
-// "count"
-// ],
-// {
-// "crc": "0x1ab5e649"
-// }
-//
-type VnetUDPEncapCounters struct {
- Timestamp uint32
- Count uint32 `struc:"sizeof=C"`
- C []UDPEncapCounter
-}
-
-func (*VnetUDPEncapCounters) GetMessageName() string {
- return "vnet_udp_encap_counters"
-}
-func (*VnetUDPEncapCounters) GetCrcString() string {
- return "1ab5e649"
-}
-func (*VnetUDPEncapCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-// WantBierNeighborStats represents VPP binary API message 'want_bier_neighbor_stats':
-//
-// "want_bier_neighbor_stats",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "client_index"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "u32",
-// "enable"
-// ],
-// [
-// "u32",
-// "pid"
-// ],
-// {
-// "crc": "0xcfaccc1f"
-// }
-//
-type WantBierNeighborStats struct {
- Enable uint32
- PID uint32
-}
-
-func (*WantBierNeighborStats) GetMessageName() string {
- return "want_bier_neighbor_stats"
-}
-func (*WantBierNeighborStats) GetCrcString() string {
- return "cfaccc1f"
-}
-func (*WantBierNeighborStats) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// WantBierNeighborStatsReply represents VPP binary API message 'want_bier_neighbor_stats_reply':
-//
-// "want_bier_neighbor_stats_reply",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "context"
-// ],
-// [
-// "i32",
-// "retval"
-// ],
-// {
-// "crc": "0xe8d4e804"
-// }
-//
-type WantBierNeighborStatsReply struct {
- Retval int32
-}
-
-func (*WantBierNeighborStatsReply) GetMessageName() string {
- return "want_bier_neighbor_stats_reply"
-}
-func (*WantBierNeighborStatsReply) GetCrcString() string {
- return "e8d4e804"
-}
-func (*WantBierNeighborStatsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// VnetBierNeighborCounters represents VPP binary API message 'vnet_bier_neighbor_counters':
-//
-// "vnet_bier_neighbor_counters",
-// [
-// "u16",
-// "_vl_msg_id"
-// ],
-// [
-// "u32",
-// "timestamp"
-// ],
-// [
-// "u32",
-// "count"
-// ],
-// [
-// "vl_api_bier_neighbor_counter_t",
-// "c",
-// 0,
-// "count"
-// ],
-// {
-// "crc": "0xee0481ce"
-// }
-//
-type VnetBierNeighborCounters struct {
- Timestamp uint32
- Count uint32 `struc:"sizeof=C"`
- C []BierNeighborCounter
-}
-
-func (*VnetBierNeighborCounters) GetMessageName() string {
- return "vnet_bier_neighbor_counters"
-}
-func (*VnetBierNeighborCounters) GetCrcString() string {
- return "ee0481ce"
-}
-func (*VnetBierNeighborCounters) GetMessageType() api.MessageType {
- return api.OtherMessage
-}
-
-func init() {
- api.RegisterMessage((*WantStats)(nil), "stats.WantStats")
- api.RegisterMessage((*WantStatsReply)(nil), "stats.WantStatsReply")
- api.RegisterMessage((*WantInterfaceSimpleStats)(nil), "stats.WantInterfaceSimpleStats")
- api.RegisterMessage((*WantInterfaceSimpleStatsReply)(nil), "stats.WantInterfaceSimpleStatsReply")
- api.RegisterMessage((*WantPerInterfaceSimpleStats)(nil), "stats.WantPerInterfaceSimpleStats")
- api.RegisterMessage((*WantPerInterfaceSimpleStatsReply)(nil), "stats.WantPerInterfaceSimpleStatsReply")
- api.RegisterMessage((*WantInterfaceCombinedStats)(nil), "stats.WantInterfaceCombinedStats")
- api.RegisterMessage((*WantInterfaceCombinedStatsReply)(nil), "stats.WantInterfaceCombinedStatsReply")
- api.RegisterMessage((*WantPerInterfaceCombinedStats)(nil), "stats.WantPerInterfaceCombinedStats")
- api.RegisterMessage((*WantPerInterfaceCombinedStatsReply)(nil), "stats.WantPerInterfaceCombinedStatsReply")
- api.RegisterMessage((*WantIP4FibStats)(nil), "stats.WantIP4FibStats")
- api.RegisterMessage((*WantIP4FibStatsReply)(nil), "stats.WantIP4FibStatsReply")
- api.RegisterMessage((*WantIP6FibStats)(nil), "stats.WantIP6FibStats")
- api.RegisterMessage((*WantIP6FibStatsReply)(nil), "stats.WantIP6FibStatsReply")
- api.RegisterMessage((*WantIP4MfibStats)(nil), "stats.WantIP4MfibStats")
- api.RegisterMessage((*WantIP4MfibStatsReply)(nil), "stats.WantIP4MfibStatsReply")
- api.RegisterMessage((*WantIP6MfibStats)(nil), "stats.WantIP6MfibStats")
- api.RegisterMessage((*WantIP6MfibStatsReply)(nil), "stats.WantIP6MfibStatsReply")
- api.RegisterMessage((*WantIP4NbrStats)(nil), "stats.WantIP4NbrStats")
- api.RegisterMessage((*WantIP4NbrStatsReply)(nil), "stats.WantIP4NbrStatsReply")
- api.RegisterMessage((*WantIP6NbrStats)(nil), "stats.WantIP6NbrStats")
- api.RegisterMessage((*WantIP6NbrStatsReply)(nil), "stats.WantIP6NbrStatsReply")
- api.RegisterMessage((*VnetIP4FibCounters)(nil), "stats.VnetIP4FibCounters")
- api.RegisterMessage((*VnetIP4MfibCounters)(nil), "stats.VnetIP4MfibCounters")
- api.RegisterMessage((*VnetIP4NbrCounters)(nil), "stats.VnetIP4NbrCounters")
- api.RegisterMessage((*VnetIP6FibCounters)(nil), "stats.VnetIP6FibCounters")
- api.RegisterMessage((*VnetIP6MfibCounters)(nil), "stats.VnetIP6MfibCounters")
- api.RegisterMessage((*VnetIP6NbrCounters)(nil), "stats.VnetIP6NbrCounters")
- api.RegisterMessage((*VnetInterfaceSimpleCounters)(nil), "stats.VnetInterfaceSimpleCounters")
- api.RegisterMessage((*VnetInterfaceCombinedCounters)(nil), "stats.VnetInterfaceCombinedCounters")
- api.RegisterMessage((*VnetPerInterfaceSimpleCounters)(nil), "stats.VnetPerInterfaceSimpleCounters")
- api.RegisterMessage((*VnetPerInterfaceCombinedCounters)(nil), "stats.VnetPerInterfaceCombinedCounters")
- api.RegisterMessage((*VnetGetSummaryStats)(nil), "stats.VnetGetSummaryStats")
- api.RegisterMessage((*VnetGetSummaryStatsReply)(nil), "stats.VnetGetSummaryStatsReply")
- api.RegisterMessage((*StatsGetPollerDelay)(nil), "stats.StatsGetPollerDelay")
- api.RegisterMessage((*StatsGetPollerDelayReply)(nil), "stats.StatsGetPollerDelayReply")
- api.RegisterMessage((*WantUDPEncapStats)(nil), "stats.WantUDPEncapStats")
- api.RegisterMessage((*WantUDPEncapStatsReply)(nil), "stats.WantUDPEncapStatsReply")
- api.RegisterMessage((*VnetUDPEncapCounters)(nil), "stats.VnetUDPEncapCounters")
- api.RegisterMessage((*WantBierNeighborStats)(nil), "stats.WantBierNeighborStats")
- api.RegisterMessage((*WantBierNeighborStatsReply)(nil), "stats.WantBierNeighborStatsReply")
- api.RegisterMessage((*VnetBierNeighborCounters)(nil), "stats.VnetBierNeighborCounters")
-}
diff --git a/examples/bin_api/vpe.api.json b/examples/bin_api/vpe.api.json
index edefd20..cc5ddee 100644
--- a/examples/bin_api/vpe.api.json
+++ b/examples/bin_api/vpe.api.json
@@ -81,17 +81,11 @@
"context"
],
[
- "u32",
- "length"
- ],
- [
- "u8",
- "cmd",
- 0,
- "length"
+ "string",
+ "cmd"
],
{
- "crc": "0x74e00a49"
+ "crc": "0xb1ad59b3"
}
],
[
@@ -131,17 +125,11 @@
"retval"
],
[
- "u32",
- "length"
- ],
- [
- "u8",
- "reply",
- 0,
- "length"
+ "string",
+ "reply"
],
{
- "crc": "0x1f22bbb8"
+ "crc": "0x6d3c80a4"
}
],
[
@@ -272,27 +260,23 @@
"retval"
],
[
- "u8",
- "program",
- 32
+ "string",
+ "program"
],
[
- "u8",
- "version",
- 32
+ "string",
+ "version"
],
[
- "u8",
- "build_date",
- 32
+ "string",
+ "build_date"
],
[
- "u8",
- "build_directory",
- 256
+ "string",
+ "build_directory"
],
{
- "crc": "0x8b5a13b4"
+ "crc": "0xb9bcf6df"
}
],
[
@@ -432,7 +416,7 @@
}
]
],
- "vl_api_version": "0x3ce489e",
+ "vl_api_version": "0x2cc8d629",
"unions": [],
"services": {
"cli_inband": {
diff --git a/examples/bin_api/vpe/vpe.ba.go b/examples/bin_api/vpe/vpe.ba.go
index 48925ac..e0d5f97 100644
--- a/examples/bin_api/vpe/vpe.ba.go
+++ b/examples/bin_api/vpe/vpe.ba.go
@@ -219,29 +219,23 @@ func (*Cli) GetMessageType() api.MessageType {
// "context"
// ],
// [
-// "u32",
-// "length"
-// ],
-// [
-// "u8",
-// "cmd",
-// 0,
-// "length"
+// "string",
+// "cmd"
// ],
// {
-// "crc": "0x74e00a49"
+// "crc": "0xb1ad59b3"
// }
//
type CliInband struct {
- Length uint32 `struc:"sizeof=Cmd"`
- Cmd []byte
+ XXX_CmdLen uint32 `struc:"sizeof=Cmd"`
+ Cmd string
}
func (*CliInband) GetMessageName() string {
return "cli_inband"
}
func (*CliInband) GetCrcString() string {
- return "74e00a49"
+ return "b1ad59b3"
}
func (*CliInband) GetMessageType() api.MessageType {
return api.RequestMessage
@@ -301,30 +295,24 @@ func (*CliReply) GetMessageType() api.MessageType {
// "retval"
// ],
// [
-// "u32",
-// "length"
-// ],
-// [
-// "u8",
-// "reply",
-// 0,
-// "length"
+// "string",
+// "reply"
// ],
// {
-// "crc": "0x1f22bbb8"
+// "crc": "0x6d3c80a4"
// }
//
type CliInbandReply struct {
- Retval int32
- Length uint32 `struc:"sizeof=Reply"`
- Reply []byte
+ Retval int32
+ XXX_ReplyLen uint32 `struc:"sizeof=Reply"`
+ Reply string
}
func (*CliInbandReply) GetMessageName() string {
return "cli_inband_reply"
}
func (*CliInbandReply) GetCrcString() string {
- return "1f22bbb8"
+ return "6d3c80a4"
}
func (*CliInbandReply) GetMessageType() api.MessageType {
return api.ReplyMessage
@@ -535,42 +523,42 @@ func (*ShowVersion) GetMessageType() api.MessageType {
// "retval"
// ],
// [
-// "u8",
-// "program",
-// 32
+// "string",
+// "program"
// ],
// [
-// "u8",
-// "version",
-// 32
+// "string",
+// "version"
// ],
// [
-// "u8",
-// "build_date",
-// 32
+// "string",
+// "build_date"
// ],
// [
-// "u8",
-// "build_directory",
-// 256
+// "string",
+// "build_directory"
// ],
// {
-// "crc": "0x8b5a13b4"
+// "crc": "0xb9bcf6df"
// }
//
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"`
+ Retval int32
+ XXX_ProgramLen uint32 `struc:"sizeof=Program"`
+ Program string
+ XXX_VersionLen uint32 `struc:"sizeof=Version"`
+ Version string
+ XXX_BuildDateLen uint32 `struc:"sizeof=BuildDate"`
+ BuildDate string
+ XXX_BuildDirectoryLen uint32 `struc:"sizeof=BuildDirectory"`
+ BuildDirectory string
}
func (*ShowVersionReply) GetMessageName() string {
return "show_version_reply"
}
func (*ShowVersionReply) GetCrcString() string {
- return "8b5a13b4"
+ return "b9bcf6df"
}
func (*ShowVersionReply) GetMessageType() api.MessageType {
return api.ReplyMessage
diff --git a/examples/cmd/stats-client/stats_client.go b/examples/cmd/stats-client/stats_client.go
deleted file mode 100644
index 7a2c313..0000000
--- a/examples/cmd/stats-client/stats_client.go
+++ /dev/null
@@ -1,165 +0,0 @@
-// 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.
-
-// Binary stats-client is an example VPP management application that exercises the
-// govpp API for interface counters together with asynchronous connection to VPP.
-package main
-
-import (
- "fmt"
- "log"
- "os"
- "os/signal"
-
- "git.fd.io/govpp.git"
- "git.fd.io/govpp.git/api"
- "git.fd.io/govpp.git/core"
- "git.fd.io/govpp.git/examples/bin_api/stats"
-)
-
-/*
-
- IMPORTANT NOTICE!
-
- The binary API module stats used in this example will be deprecated in VPP 19.01.
- VPP's new stats API should be used, you can find basic usage of new stats API in example stats-api.
-
-*/
-
-func main() {
- fmt.Println("Starting stats VPP client..")
-
- // async connect to VPP
- conn, statCh, err := govpp.AsyncConnect("")
- if err != nil {
- log.Fatalln("Error:", err)
- }
- defer conn.Disconnect()
-
- // create an API channel that will be used in the examples
- ch, err := conn.NewAPIChannel()
- if err != nil {
- log.Fatalln("Error:", err)
- }
- defer ch.Close()
-
- // create channel for Interrupt signal
- sigChan := make(chan os.Signal, 1)
- signal.Notify(sigChan, os.Interrupt)
-
- var notifChan chan api.Message
- var simpleSub api.SubscriptionCtx
- var combinedSub api.SubscriptionCtx
-
- // loop until Interrupt signal is received
-loop:
- for {
- select {
- case connEvent := <-statCh:
- // VPP connection state change
- switch connEvent.State {
- case core.Connected:
- fmt.Println("VPP connected.")
- if notifChan == nil {
- simpleSub, combinedSub, notifChan = subscribeNotifications(ch)
- }
- requestStatistics(ch)
-
- case core.Disconnected:
- fmt.Println("VPP disconnected.")
- }
-
- case msg := <-notifChan:
- switch notif := msg.(type) {
- case *stats.VnetInterfaceSimpleCounters:
- // simple counter notification received
- processSimpleCounters(notif)
- case *stats.VnetInterfaceCombinedCounters:
- // combined counter notification received
- processCombinedCounters(notif)
- default:
- fmt.Println("Ignoring unknown VPP notification")
- }
-
- case <-sigChan:
- // interrupt received
- fmt.Println("Interrupt received, exiting.")
- break loop
- }
- }
-
- simpleSub.Unsubscribe()
- combinedSub.Unsubscribe()
-}
-
-// subscribeNotifications subscribes for interface counters notifications.
-func subscribeNotifications(ch api.Channel) (api.SubscriptionCtx, api.SubscriptionCtx, chan api.Message) {
- notifChan := make(chan api.Message, 100)
-
- simpleSub, err := ch.SubscribeNotification(notifChan, &stats.VnetInterfaceSimpleCounters{})
- if err != nil {
- panic(err)
- }
- combinedSub, err := ch.SubscribeNotification(notifChan, &stats.VnetInterfaceCombinedCounters{})
- if err != nil {
- panic(err)
- }
-
- return simpleSub, combinedSub, notifChan
-}
-
-// requestStatistics requests interface counters notifications from VPP.
-func requestStatistics(ch api.Channel) {
- if err := ch.SendRequest(&stats.WantStats{
- PID: uint32(os.Getpid()),
- EnableDisable: 1,
- }).ReceiveReply(&stats.WantStatsReply{}); err != nil {
- panic(err)
- }
-}
-
-// processSimpleCounters processes simple counters received from VPP.
-func processSimpleCounters(counters *stats.VnetInterfaceSimpleCounters) {
- fmt.Printf("SimpleCounters: %+v\n", counters)
-
- counterNames := []string{
- "Drop", "Punt",
- "IPv4", "IPv6",
- "RxNoBuf", "RxMiss",
- "RxError", "TxError",
- "MPLS",
- }
-
- for i := uint32(0); i < counters.Count; i++ {
- fmt.Printf("Interface '%d': %s = %d\n",
- counters.FirstSwIfIndex+i, counterNames[counters.VnetCounterType], counters.Data[i])
- }
-}
-
-// processCombinedCounters processes combined counters received from VPP.
-func processCombinedCounters(counters *stats.VnetInterfaceCombinedCounters) {
- fmt.Printf("CombinedCounters: %+v\n", counters)
-
- counterNames := []string{"Rx", "Tx"}
-
- for i := uint32(0); i < counters.Count; i++ {
- if len(counterNames) <= int(counters.VnetCounterType) {
- continue
- }
- fmt.Printf("Interface '%d': %s packets = %d, %s bytes = %d\n",
- counters.FirstSwIfIndex+i,
- counterNames[counters.VnetCounterType], counters.Data[i].Packets,
- counterNames[counters.VnetCounterType], counters.Data[i].Bytes)
- }
-}
diff --git a/glide.lock b/glide.lock
deleted file mode 100644
index ba71139..0000000
--- a/glide.lock
+++ /dev/null
@@ -1,38 +0,0 @@
-hash: 5144a3ebeee4fbfbd9e6d20fbb05f4e79f055848e74ca8911f49de3f673a11ab
-updated: 2017-11-28T16:14:28.354432026+01:00
-imports:
-- name: github.com/bennyscetbun/jsongo
- version: 5240b3f82c6665fe3ccd96bdf5e6f38fe1e1399d
-- name: github.com/fsnotify/fsnotify
- version: 4da3e2cfbabc9f751898f250b49f2439785783a1
-- name: github.com/google/gopacket
- version: 8e484f31b1237166f00e4896d27ddde259540632
- subpackages:
- - layers
-- name: github.com/lunixbochs/struc
- version: ef56447db6a068ad9e52bc54a1aff5fb9e1ed2dd
-- name: github.com/pkg/profile
- version: 5b67d428864e92711fcbd2f8629456121a56d91f
-- name: github.com/sirupsen/logrus
- version: 202f25545ea4cf9b191ff7f846df5d87c9382c2b
-- 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
deleted file mode 100644
index 7165dd2..0000000
--- a/glide.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-package: git.fd.io/govpp.git
-import:
-- package: github.com/sirupsen/logrus
- version: v1.0.0
-- package: github.com/bennyscetbun/jsongo
- version: 5240b3f82c6665fe3ccd96bdf5e6f38fe1e1399d
-- package: github.com/lunixbochs/struc
- version: ef56447db6a068ad9e52bc54a1aff5fb9e1ed2dd
-- package: github.com/fsnotify/fsnotify
- version: 4da3e2cfbabc9f751898f250b49f2439785783a1
-- package: github.com/google/gopacket
- version: 8e484f31b1237166f00e4896d27ddde259540632
-testImport:
-- package: github.com/onsi/gomega
- version: v1.1.0
diff --git a/vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md b/vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index 4ad1aed..0000000
--- a/vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Before reporting an issue, please ensure you are using the latest release of fsnotify.
-
-### Which operating system (GOOS) and version are you using?
-
-Linux: lsb_release -a
-macOS: sw_vers
-Windows: systeminfo | findstr /B /C:OS
-
-### Please describe the issue that occurred.
-
-### Are you able to reproduce the issue? Please provide steps to reproduce and a code sample if possible.
diff --git a/vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md b/vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md
deleted file mode 100644
index 64ddf7c..0000000
--- a/vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md
+++ /dev/null
@@ -1,8 +0,0 @@
-#### What does this pull request do?
-
-
-#### Where should the reviewer start?
-
-
-#### How should this be manually tested?
-
diff --git a/vendor/github.com/fsnotify/fsnotify/example_test.go b/vendor/github.com/fsnotify/fsnotify/example_test.go
deleted file mode 100644
index 700502c..0000000
--- a/vendor/github.com/fsnotify/fsnotify/example_test.go
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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
-
-package fsnotify_test
-
-import (
- "log"
-
- "github.com/fsnotify/fsnotify"
-)
-
-func ExampleNewWatcher() {
- watcher, err := fsnotify.NewWatcher()
- if err != nil {
- log.Fatal(err)
- }
- defer watcher.Close()
-
- done := make(chan bool)
- go func() {
- for {
- select {
- case event := <-watcher.Events:
- log.Println("event:", event)
- if event.Op&fsnotify.Write == fsnotify.Write {
- log.Println("modified file:", event.Name)
- }
- case err := <-watcher.Errors:
- log.Println("error:", err)
- }
- }
- }()
-
- err = watcher.Add("/tmp/foo")
- if err != nil {
- log.Fatal(err)
- }
- <-done
-}
diff --git a/vendor/github.com/fsnotify/fsnotify/fsnotify_test.go b/vendor/github.com/fsnotify/fsnotify/fsnotify_test.go
deleted file mode 100644
index 9d6d72a..0000000
--- a/vendor/github.com/fsnotify/fsnotify/fsnotify_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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 !plan9
-
-package fsnotify
-
-import "testing"
-
-func TestEventStringWithValue(t *testing.T) {
- for opMask, expectedString := range map[Op]string{
- Chmod | Create: `"/usr/someFile": CREATE|CHMOD`,
- Rename: `"/usr/someFile": RENAME`,
- Remove: `"/usr/someFile": REMOVE`,
- Write | Chmod: `"/usr/someFile": WRITE|CHMOD`,
- } {
- event := Event{Name: "/usr/someFile", Op: opMask}
- if event.String() != expectedString {
- t.Fatalf("Expected %s, got: %v", expectedString, event.String())
- }
-
- }
-}
-
-func TestEventOpStringWithValue(t *testing.T) {
- expectedOpString := "WRITE|CHMOD"
- event := Event{Name: "someFile", Op: Write | Chmod}
- if event.Op.String() != expectedOpString {
- t.Fatalf("Expected %s, got: %v", expectedOpString, event.Op.String())
- }
-}
-
-func TestEventOpStringWithNoValue(t *testing.T) {
- expectedOpString := ""
- event := Event{Name: "testFile", Op: 0}
- if event.Op.String() != expectedOpString {
- t.Fatalf("Expected %s, got: %v", expectedOpString, event.Op.String())
- }
-}
diff --git a/vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go b/vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go
deleted file mode 100644
index 26623ef..0000000
--- a/vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go
+++ /dev/null
@@ -1,229 +0,0 @@
-// 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
-
-package fsnotify
-
-import (
- "testing"
- "time"
-
- "golang.org/x/sys/unix"
-)
-
-type testFd [2]int
-
-func makeTestFd(t *testing.T) testFd {
- var tfd testFd
- errno := unix.Pipe(tfd[:])
- if errno != nil {
- t.Fatalf("Failed to create pipe: %v", errno)
- }
- return tfd
-}
-
-func (tfd testFd) fd() int {
- return tfd[0]
-}
-
-func (tfd testFd) closeWrite(t *testing.T) {
- errno := unix.Close(tfd[1])
- if errno != nil {
- t.Fatalf("Failed to close write end of pipe: %v", errno)
- }
-}
-
-func (tfd testFd) put(t *testing.T) {
- buf := make([]byte, 10)
- _, errno := unix.Write(tfd[1], buf)
- if errno != nil {
- t.Fatalf("Failed to write to pipe: %v", errno)
- }
-}
-
-func (tfd testFd) get(t *testing.T) {
- buf := make([]byte, 10)
- _, errno := unix.Read(tfd[0], buf)
- if errno != nil {
- t.Fatalf("Failed to read from pipe: %v", errno)
- }
-}
-
-func (tfd testFd) close() {
- unix.Close(tfd[1])
- unix.Close(tfd[0])
-}
-
-func makePoller(t *testing.T) (testFd, *fdPoller) {
- tfd := makeTestFd(t)
- poller, err := newFdPoller(tfd.fd())
- if err != nil {
- t.Fatalf("Failed to create poller: %v", err)
- }
- return tfd, poller
-}
-
-func TestPollerWithBadFd(t *testing.T) {
- _, err := newFdPoller(-1)
- if err != unix.EBADF {
- t.Fatalf("Expected EBADF, got: %v", err)
- }
-}
-
-func TestPollerWithData(t *testing.T) {
- tfd, poller := makePoller(t)
- defer tfd.close()
- defer poller.close()
-
- tfd.put(t)
- ok, err := poller.wait()
- if err != nil {
- t.Fatalf("poller failed: %v", err)
- }
- if !ok {
- t.Fatalf("expected poller to return true")
- }
- tfd.get(t)
-}
-
-func TestPollerWithWakeup(t *testing.T) {
- tfd, poller := makePoller(t)
- defer tfd.close()
- defer poller.close()
-
- err := poller.wake()
- if err != nil {
- t.Fatalf("wake failed: %v", err)
- }
- ok, err := poller.wait()
- if err != nil {
- t.Fatalf("poller failed: %v", err)
- }
- if ok {
- t.Fatalf("expected poller to return false")
- }
-}
-
-func TestPollerWithClose(t *testing.T) {
- tfd, poller := makePoller(t)
- defer tfd.close()
- defer poller.close()
-
- tfd.closeWrite(t)
- ok, err := poller.wait()
- if err != nil {
- t.Fatalf("poller failed: %v", err)
- }
- if !ok {
- t.Fatalf("expected poller to return true")
- }
-}
-
-func TestPollerWithWakeupAndData(t *testing.T) {
- tfd, poller := makePoller(t)
- defer tfd.close()
- defer poller.close()
-
- tfd.put(t)
- err := poller.wake()
- if err != nil {
- t.Fatalf("wake failed: %v", err)
- }
-
- // both data and wakeup
- ok, err := poller.wait()
- if err != nil {
- t.Fatalf("poller failed: %v", err)
- }
- if !ok {
- t.Fatalf("expected poller to return true")
- }
-
- // data is still in the buffer, wakeup is cleared
- ok, err = poller.wait()
- if err != nil {
- t.Fatalf("poller failed: %v", err)
- }
- if !ok {
- t.Fatalf("expected poller to return true")
- }
-
- tfd.get(t)
- // data is gone, only wakeup now
- err = poller.wake()
- if err != nil {
- t.Fatalf("wake failed: %v", err)
- }
- ok, err = poller.wait()
- if err != nil {
- t.Fatalf("poller failed: %v", err)
- }
- if ok {
- t.Fatalf("expected poller to return false")
- }
-}
-
-func TestPollerConcurrent(t *testing.T) {
- tfd, poller := makePoller(t)
- defer tfd.close()
- defer poller.close()
-
- oks := make(chan bool)
- live := make(chan bool)
- defer close(live)
- go func() {
- defer close(oks)
- for {
- ok, err := poller.wait()
- if err != nil {
- t.Fatalf("poller failed: %v", err)
- }
- oks <- ok
- if !<-live {
- return
- }
- }
- }()
-
- // Try a write
- select {
- case <-time.After(50 * time.Millisecond):
- case <-oks:
- t.Fatalf("poller did not wait")
- }
- tfd.put(t)
- if !<-oks {
- t.Fatalf("expected true")
- }
- tfd.get(t)
- live <- true
-
- // Try a wakeup
- select {
- case <-time.After(50 * time.Millisecond):
- case <-oks:
- t.Fatalf("poller did not wait")
- }
- err := poller.wake()
- if err != nil {
- t.Fatalf("wake failed: %v", err)
- }
- if <-oks {
- t.Fatalf("expected false")
- }
- live <- true
-
- // Try a close
- select {
- case <-time.After(50 * time.Millisecond):
- case <-oks:
- t.Fatalf("poller did not wait")
- }
- tfd.closeWrite(t)
- if !<-oks {
- t.Fatalf("expected true")
- }
- tfd.get(t)
-}
diff --git a/vendor/github.com/fsnotify/fsnotify/inotify_test.go b/vendor/github.com/fsnotify/fsnotify/inotify_test.go
deleted file mode 100644
index 2cc6d93..0000000
--- a/vendor/github.com/fsnotify/fsnotify/inotify_test.go
+++ /dev/null
@@ -1,449 +0,0 @@
-// 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
-
-package fsnotify
-
-import (
- "fmt"
- "os"
- "path/filepath"
- "strings"
- "testing"
- "time"
-)
-
-func TestInotifyCloseRightAway(t *testing.T) {
- w, err := NewWatcher()
- if err != nil {
- t.Fatalf("Failed to create watcher")
- }
-
- // Close immediately; it won't even reach the first unix.Read.
- w.Close()
-
- // Wait for the close to complete.
- <-time.After(50 * time.Millisecond)
- isWatcherReallyClosed(t, w)
-}
-
-func TestInotifyCloseSlightlyLater(t *testing.T) {
- w, err := NewWatcher()
- if err != nil {
- t.Fatalf("Failed to create watcher")
- }
-
- // Wait until readEvents has reached unix.Read, and Close.
- <-time.After(50 * time.Millisecond)
- w.Close()
-
- // Wait for the close to complete.
- <-time.After(50 * time.Millisecond)
- isWatcherReallyClosed(t, w)
-}
-
-func TestInotifyCloseSlightlyLaterWithWatch(t *testing.T) {
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- w, err := NewWatcher()
- if err != nil {
- t.Fatalf("Failed to create watcher")
- }
- w.Add(testDir)
-
- // Wait until readEvents has reached unix.Read, and Close.
- <-time.After(50 * time.Millisecond)
- w.Close()
-
- // Wait for the close to complete.
- <-time.After(50 * time.Millisecond)
- isWatcherReallyClosed(t, w)
-}
-
-func TestInotifyCloseAfterRead(t *testing.T) {
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- w, err := NewWatcher()
- if err != nil {
- t.Fatalf("Failed to create watcher")
- }
-
- err = w.Add(testDir)
- if err != nil {
- t.Fatalf("Failed to add .")
- }
-
- // Generate an event.
- os.Create(filepath.Join(testDir, "somethingSOMETHINGsomethingSOMETHING"))
-
- // Wait for readEvents to read the event, then close the watcher.
- <-time.After(50 * time.Millisecond)
- w.Close()
-
- // Wait for the close to complete.
- <-time.After(50 * time.Millisecond)
- isWatcherReallyClosed(t, w)
-}
-
-func isWatcherReallyClosed(t *testing.T, w *Watcher) {
- select {
- case err, ok := <-w.Errors:
- if ok {
- t.Fatalf("w.Errors is not closed; readEvents is still alive after closing (error: %v)", err)
- }
- default:
- t.Fatalf("w.Errors would have blocked; readEvents is still alive!")
- }
-
- select {
- case _, ok := <-w.Events:
- if ok {
- t.Fatalf("w.Events is not closed; readEvents is still alive after closing")
- }
- default:
- t.Fatalf("w.Events would have blocked; readEvents is still alive!")
- }
-}
-
-func TestInotifyCloseCreate(t *testing.T) {
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- w, err := NewWatcher()
- if err != nil {
- t.Fatalf("Failed to create watcher: %v", err)
- }
- defer w.Close()
-
- err = w.Add(testDir)
- if err != nil {
- t.Fatalf("Failed to add testDir: %v", err)
- }
- h, err := os.Create(filepath.Join(testDir, "testfile"))
- if err != nil {
- t.Fatalf("Failed to create file in testdir: %v", err)
- }
- h.Close()
- select {
- case _ = <-w.Events:
- case err := <-w.Errors:
- t.Fatalf("Error from watcher: %v", err)
- case <-time.After(50 * time.Millisecond):
- t.Fatalf("Took too long to wait for event")
- }
-
- // At this point, we've received one event, so the goroutine is ready.
- // It's also blocking on unix.Read.
- // Now we try to swap the file descriptor under its nose.
- w.Close()
- w, err = NewWatcher()
- defer w.Close()
- if err != nil {
- t.Fatalf("Failed to create second watcher: %v", err)
- }
-
- <-time.After(50 * time.Millisecond)
- err = w.Add(testDir)
- if err != nil {
- t.Fatalf("Error adding testDir again: %v", err)
- }
-}
-
-// This test verifies the watcher can keep up with file creations/deletions
-// when under load.
-func TestInotifyStress(t *testing.T) {
- maxNumToCreate := 1000
-
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
- testFilePrefix := filepath.Join(testDir, "testfile")
-
- w, err := NewWatcher()
- if err != nil {
- t.Fatalf("Failed to create watcher: %v", err)
- }
- defer w.Close()
-
- err = w.Add(testDir)
- if err != nil {
- t.Fatalf("Failed to add testDir: %v", err)
- }
-
- doneChan := make(chan struct{})
- // The buffer ensures that the file generation goroutine is never blocked.
- errChan := make(chan error, 2*maxNumToCreate)
-
- go func() {
- for i := 0; i < maxNumToCreate; i++ {
- testFile := fmt.Sprintf("%s%d", testFilePrefix, i)
-
- handle, err := os.Create(testFile)
- if err != nil {
- errChan <- fmt.Errorf("Create failed: %v", err)
- continue
- }
-
- err = handle.Close()
- if err != nil {
- errChan <- fmt.Errorf("Close failed: %v", err)
- continue
- }
- }
-
- // If we delete a newly created file too quickly, inotify will skip the
- // create event and only send the delete event.
- time.Sleep(100 * time.Millisecond)
-
- for i := 0; i < maxNumToCreate; i++ {
- testFile := fmt.Sprintf("%s%d", testFilePrefix, i)
- err = os.Remove(testFile)
- if err != nil {
- errChan <- fmt.Errorf("Remove failed: %v", err)
- }
- }
-
- close(doneChan)
- }()
-
- creates := 0
- removes := 0
-
- finished := false
- after := time.After(10 * time.Second)
- for !finished {
- select {
- case <-after:
- t.Fatalf("Not done")
- case <-doneChan:
- finished = true
- case err := <-errChan:
- t.Fatalf("Got an error from file creator goroutine: %v", err)
- case err := <-w.Errors:
- t.Fatalf("Got an error from watcher: %v", err)
- case evt := <-w.Events:
- if !strings.HasPrefix(evt.Name, testFilePrefix) {
- t.Fatalf("Got an event for an unknown file: %s", evt.Name)
- }
- if evt.Op == Create {
- creates++
- }
- if evt.Op == Remove {
- removes++
- }
- }
- }
-
- // Drain remaining events from channels
- count := 0
- for count < 10 {
- select {
- case err := <-errChan:
- t.Fatalf("Got an error from file creator goroutine: %v", err)
- case err := <-w.Errors:
- t.Fatalf("Got an error from watcher: %v", err)
- case evt := <-w.Events:
- if !strings.HasPrefix(evt.Name, testFilePrefix) {
- t.Fatalf("Got an event for an unknown file: %s", evt.Name)
- }
- if evt.Op == Create {
- creates++
- }
- if evt.Op == Remove {
- removes++
- }
- count = 0
- default:
- count++
- // Give the watcher chances to fill the channels.
- time.Sleep(time.Millisecond)
- }
- }
-
- if creates-removes > 1 || creates-removes < -1 {
- t.Fatalf("Creates and removes should not be off by more than one: %d creates, %d removes", creates, removes)
- }
- if creates < 50 {
- t.Fatalf("Expected at least 50 creates, got %d", creates)
- }
-}
-
-func TestInotifyRemoveTwice(t *testing.T) {
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
- testFile := filepath.Join(testDir, "testfile")
-
- handle, err := os.Create(testFile)
- if err != nil {
- t.Fatalf("Create failed: %v", err)
- }
- handle.Close()
-
- w, err := NewWatcher()
- if err != nil {
- t.Fatalf("Failed to create watcher: %v", err)
- }
- defer w.Close()
-
- err = w.Add(testFile)
- if err != nil {
- t.Fatalf("Failed to add testFile: %v", err)
- }
-
- err = w.Remove(testFile)
- if err != nil {
- t.Fatalf("wanted successful remove but got:", err)
- }
-
- err = w.Remove(testFile)
- if err == nil {
- t.Fatalf("no error on removing invalid file")
- }
-
- w.mu.Lock()
- defer w.mu.Unlock()
- if len(w.watches) != 0 {
- t.Fatalf("Expected watches len is 0, but got: %d, %v", len(w.watches), w.watches)
- }
- if len(w.paths) != 0 {
- t.Fatalf("Expected paths len is 0, but got: %d, %v", len(w.paths), w.paths)
- }
-}
-
-func TestInotifyInnerMapLength(t *testing.T) {
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
- testFile := filepath.Join(testDir, "testfile")
-
- handle, err := os.Create(testFile)
- if err != nil {
- t.Fatalf("Create failed: %v", err)
- }
- handle.Close()
-
- w, err := NewWatcher()
- if err != nil {
- t.Fatalf("Failed to create watcher: %v", err)
- }
- defer w.Close()
-
- err = w.Add(testFile)
- if err != nil {
- t.Fatalf("Failed to add testFile: %v", err)
- }
- go func() {
- for err := range w.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- err = os.Remove(testFile)
- if err != nil {
- t.Fatalf("Failed to remove testFile: %v", err)
- }
- _ = <-w.Events // consume Remove event
- <-time.After(50 * time.Millisecond) // wait IN_IGNORE propagated
-
- w.mu.Lock()
- defer w.mu.Unlock()
- if len(w.watches) != 0 {
- t.Fatalf("Expected watches len is 0, but got: %d, %v", len(w.watches), w.watches)
- }
- if len(w.paths) != 0 {
- t.Fatalf("Expected paths len is 0, but got: %d, %v", len(w.paths), w.paths)
- }
-}
-
-func TestInotifyOverflow(t *testing.T) {
- // We need to generate many more events than the
- // fs.inotify.max_queued_events sysctl setting.
- // We use multiple goroutines (one per directory)
- // to speed up file creation.
- numDirs := 128
- numFiles := 1024
-
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- w, err := NewWatcher()
- if err != nil {
- t.Fatalf("Failed to create watcher: %v", err)
- }
- defer w.Close()
-
- for dn := 0; dn < numDirs; dn++ {
- testSubdir := fmt.Sprintf("%s/%d", testDir, dn)
-
- err := os.Mkdir(testSubdir, 0777)
- if err != nil {
- t.Fatalf("Cannot create subdir: %v", err)
- }
-
- err = w.Add(testSubdir)
- if err != nil {
- t.Fatalf("Failed to add subdir: %v", err)
- }
- }
-
- errChan := make(chan error, numDirs*numFiles)
-
- for dn := 0; dn < numDirs; dn++ {
- testSubdir := fmt.Sprintf("%s/%d", testDir, dn)
-
- go func() {
- for fn := 0; fn < numFiles; fn++ {
- testFile := fmt.Sprintf("%s/%d", testSubdir, fn)
-
- handle, err := os.Create(testFile)
- if err != nil {
- errChan <- fmt.Errorf("Create failed: %v", err)
- continue
- }
-
- err = handle.Close()
- if err != nil {
- errChan <- fmt.Errorf("Close failed: %v", err)
- continue
- }
- }
- }()
- }
-
- creates := 0
- overflows := 0
-
- after := time.After(10 * time.Second)
- for overflows == 0 && creates < numDirs*numFiles {
- select {
- case <-after:
- t.Fatalf("Not done")
- case err := <-errChan:
- t.Fatalf("Got an error from file creator goroutine: %v", err)
- case err := <-w.Errors:
- if err == ErrEventOverflow {
- overflows++
- } else {
- t.Fatalf("Got an error from watcher: %v", err)
- }
- case evt := <-w.Events:
- if !strings.HasPrefix(evt.Name, testDir) {
- t.Fatalf("Got an event for an unknown file: %s", evt.Name)
- }
- if evt.Op == Create {
- creates++
- }
- }
- }
-
- if creates == numDirs*numFiles {
- t.Fatalf("Could not trigger overflow")
- }
-
- if overflows == 0 {
- t.Fatalf("No overflow and not enough creates (expected %d, got %d)",
- numDirs*numFiles, creates)
- }
-}
diff --git a/vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go b/vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go
deleted file mode 100644
index cd6adc2..0000000
--- a/vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package fsnotify
-
-import (
- "os"
- "path/filepath"
- "testing"
- "time"
-
- "golang.org/x/sys/unix"
-)
-
-// testExchangedataForWatcher tests the watcher with the exchangedata operation on macOS.
-//
-// This is widely used for atomic saves on macOS, e.g. TextMate and in Apple's NSDocument.
-//
-// See https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/exchangedata.2.html
-// Also see: https://github.com/textmate/textmate/blob/cd016be29489eba5f3c09b7b70b06da134dda550/Frameworks/io/src/swap_file_data.cc#L20
-func testExchangedataForWatcher(t *testing.T, watchDir bool) {
- // Create directory to watch
- testDir1 := tempMkdir(t)
-
- // For the intermediate file
- testDir2 := tempMkdir(t)
-
- defer os.RemoveAll(testDir1)
- defer os.RemoveAll(testDir2)
-
- resolvedFilename := "TestFsnotifyEvents.file"
-
- // TextMate does:
- //
- // 1. exchangedata (intermediate, resolved)
- // 2. unlink intermediate
- //
- // Let's try to simulate that:
- resolved := filepath.Join(testDir1, resolvedFilename)
- intermediate := filepath.Join(testDir2, resolvedFilename+"~")
-
- // Make sure we create the file before we start watching
- createAndSyncFile(t, resolved)
-
- watcher := newWatcher(t)
-
- // Test both variants in isolation
- if watchDir {
- addWatch(t, watcher, testDir1)
- } else {
- addWatch(t, watcher, resolved)
- }
-
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for err := range watcher.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- // Receive events on the event channel on a separate goroutine
- eventstream := watcher.Events
- var removeReceived counter
- var createReceived counter
-
- done := make(chan bool)
-
- go func() {
- for event := range eventstream {
- // Only count relevant events
- if event.Name == filepath.Clean(resolved) {
- if event.Op&Remove == Remove {
- removeReceived.increment()
- }
- if event.Op&Create == Create {
- createReceived.increment()
- }
- }
- t.Logf("event received: %s", event)
- }
- done <- true
- }()
-
- // Repeat to make sure the watched file/directory "survives" the REMOVE/CREATE loop.
- for i := 1; i <= 3; i++ {
- // The intermediate file is created in a folder outside the watcher
- createAndSyncFile(t, intermediate)
-
- // 1. Swap
- if err := unix.Exchangedata(intermediate, resolved, 0); err != nil {
- t.Fatalf("[%d] exchangedata failed: %s", i, err)
- }
-
- time.Sleep(50 * time.Millisecond)
-
- // 2. Delete the intermediate file
- err := os.Remove(intermediate)
-
- if err != nil {
- t.Fatalf("[%d] remove %s failed: %s", i, intermediate, err)
- }
-
- time.Sleep(50 * time.Millisecond)
-
- }
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
-
- // The events will be (CHMOD + REMOVE + CREATE) X 2. Let's focus on the last two:
- if removeReceived.value() < 3 {
- t.Fatal("fsnotify remove events have not been received after 500 ms")
- }
-
- if createReceived.value() < 3 {
- t.Fatal("fsnotify create events have not been received after 500 ms")
- }
-
- watcher.Close()
- t.Log("waiting for the event channel to become closed...")
- select {
- case <-done:
- t.Log("event channel closed")
- case <-time.After(2 * time.Second):
- t.Fatal("event stream was not closed after 2 seconds")
- }
-}
-
-// TestExchangedataInWatchedDir test exchangedata operation on file in watched dir.
-func TestExchangedataInWatchedDir(t *testing.T) {
- testExchangedataForWatcher(t, true)
-}
-
-// TestExchangedataInWatchedDir test exchangedata operation on watched file.
-func TestExchangedataInWatchedFile(t *testing.T) {
- testExchangedataForWatcher(t, false)
-}
-
-func createAndSyncFile(t *testing.T, filepath string) {
- f1, err := os.OpenFile(filepath, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating %s failed: %s", filepath, err)
- }
- f1.Sync()
- f1.Close()
-}
diff --git a/vendor/github.com/fsnotify/fsnotify/integration_test.go b/vendor/github.com/fsnotify/fsnotify/integration_test.go
deleted file mode 100644
index 8b7e9d3..0000000
--- a/vendor/github.com/fsnotify/fsnotify/integration_test.go
+++ /dev/null
@@ -1,1237 +0,0 @@
-// 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 !plan9,!solaris
-
-package fsnotify
-
-import (
- "io/ioutil"
- "os"
- "os/exec"
- "path"
- "path/filepath"
- "runtime"
- "sync/atomic"
- "testing"
- "time"
-)
-
-// An atomic counter
-type counter struct {
- val int32
-}
-
-func (c *counter) increment() {
- atomic.AddInt32(&c.val, 1)
-}
-
-func (c *counter) value() int32 {
- return atomic.LoadInt32(&c.val)
-}
-
-func (c *counter) reset() {
- atomic.StoreInt32(&c.val, 0)
-}
-
-// tempMkdir makes a temporary directory
-func tempMkdir(t *testing.T) string {
- dir, err := ioutil.TempDir("", "fsnotify")
- if err != nil {
- t.Fatalf("failed to create test directory: %s", err)
- }
- return dir
-}
-
-// tempMkFile makes a temporary file.
-func tempMkFile(t *testing.T, dir string) string {
- f, err := ioutil.TempFile(dir, "fsnotify")
- if err != nil {
- t.Fatalf("failed to create test file: %v", err)
- }
- defer f.Close()
- return f.Name()
-}
-
-// newWatcher initializes an fsnotify Watcher instance.
-func newWatcher(t *testing.T) *Watcher {
- watcher, err := NewWatcher()
- if err != nil {
- t.Fatalf("NewWatcher() failed: %s", err)
- }
- return watcher
-}
-
-// addWatch adds a watch for a directory
-func addWatch(t *testing.T, watcher *Watcher, dir string) {
- if err := watcher.Add(dir); err != nil {
- t.Fatalf("watcher.Add(%q) failed: %s", dir, err)
- }
-}
-
-func TestFsnotifyMultipleOperations(t *testing.T) {
- watcher := newWatcher(t)
-
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for err := range watcher.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- // Create directory that's not watched
- testDirToMoveFiles := tempMkdir(t)
- defer os.RemoveAll(testDirToMoveFiles)
-
- testFile := filepath.Join(testDir, "TestFsnotifySeq.testfile")
- testFileRenamed := filepath.Join(testDirToMoveFiles, "TestFsnotifySeqRename.testfile")
-
- addWatch(t, watcher, testDir)
-
- // Receive events on the event channel on a separate goroutine
- eventstream := watcher.Events
- var createReceived, modifyReceived, deleteReceived, renameReceived counter
- done := make(chan bool)
- go func() {
- for event := range eventstream {
- // Only count relevant events
- if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) {
- t.Logf("event received: %s", event)
- if event.Op&Remove == Remove {
- deleteReceived.increment()
- }
- if event.Op&Write == Write {
- modifyReceived.increment()
- }
- if event.Op&Create == Create {
- createReceived.increment()
- }
- if event.Op&Rename == Rename {
- renameReceived.increment()
- }
- } else {
- t.Logf("unexpected event received: %s", event)
- }
- }
- done <- true
- }()
-
- // Create a file
- // This should add at least one event to the fsnotify event queue
- var f *os.File
- f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
-
- time.Sleep(time.Millisecond)
- f.WriteString("data")
- f.Sync()
- f.Close()
-
- time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
- if err := testRename(testFile, testFileRenamed); err != nil {
- t.Fatalf("rename failed: %s", err)
- }
-
- // Modify the file outside of the watched dir
- f, err = os.Open(testFileRenamed)
- if err != nil {
- t.Fatalf("open test renamed file failed: %s", err)
- }
- f.WriteString("data")
- f.Sync()
- f.Close()
-
- time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
- // Recreate the file that was moved
- f, err = os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Close()
- time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
- cReceived := createReceived.value()
- if cReceived != 2 {
- t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 2)
- }
- mReceived := modifyReceived.value()
- if mReceived != 1 {
- t.Fatalf("incorrect number of modify events received after 500 ms (%d vs %d)", mReceived, 1)
- }
- dReceived := deleteReceived.value()
- rReceived := renameReceived.value()
- if dReceived+rReceived != 1 {
- t.Fatalf("incorrect number of rename+delete events received after 500 ms (%d vs %d)", rReceived+dReceived, 1)
- }
-
- // Try closing the fsnotify instance
- t.Log("calling Close()")
- watcher.Close()
- t.Log("waiting for the event channel to become closed...")
- select {
- case <-done:
- t.Log("event channel closed")
- case <-time.After(2 * time.Second):
- t.Fatal("event stream was not closed after 2 seconds")
- }
-}
-
-func TestFsnotifyMultipleCreates(t *testing.T) {
- watcher := newWatcher(t)
-
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for err := range watcher.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- testFile := filepath.Join(testDir, "TestFsnotifySeq.testfile")
-
- addWatch(t, watcher, testDir)
-
- // Receive events on the event channel on a separate goroutine
- eventstream := watcher.Events
- var createReceived, modifyReceived, deleteReceived counter
- done := make(chan bool)
- go func() {
- for event := range eventstream {
- // Only count relevant events
- if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) {
- t.Logf("event received: %s", event)
- if event.Op&Remove == Remove {
- deleteReceived.increment()
- }
- if event.Op&Create == Create {
- createReceived.increment()
- }
- if event.Op&Write == Write {
- modifyReceived.increment()
- }
- } else {
- t.Logf("unexpected event received: %s", event)
- }
- }
- done <- true
- }()
-
- // Create a file
- // This should add at least one event to the fsnotify event queue
- var f *os.File
- f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
-
- time.Sleep(time.Millisecond)
- f.WriteString("data")
- f.Sync()
- f.Close()
-
- time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
- os.Remove(testFile)
-
- time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
- // Recreate the file
- f, err = os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Close()
- time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
- // Modify
- f, err = os.OpenFile(testFile, os.O_WRONLY, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
-
- time.Sleep(time.Millisecond)
- f.WriteString("data")
- f.Sync()
- f.Close()
-
- time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
- // Modify
- f, err = os.OpenFile(testFile, os.O_WRONLY, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
-
- time.Sleep(time.Millisecond)
- f.WriteString("data")
- f.Sync()
- f.Close()
-
- time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
- cReceived := createReceived.value()
- if cReceived != 2 {
- t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 2)
- }
- mReceived := modifyReceived.value()
- if mReceived < 3 {
- t.Fatalf("incorrect number of modify events received after 500 ms (%d vs atleast %d)", mReceived, 3)
- }
- dReceived := deleteReceived.value()
- if dReceived != 1 {
- t.Fatalf("incorrect number of rename+delete events received after 500 ms (%d vs %d)", dReceived, 1)
- }
-
- // Try closing the fsnotify instance
- t.Log("calling Close()")
- watcher.Close()
- t.Log("waiting for the event channel to become closed...")
- select {
- case <-done:
- t.Log("event channel closed")
- case <-time.After(2 * time.Second):
- t.Fatal("event stream was not closed after 2 seconds")
- }
-}
-
-func TestFsnotifyDirOnly(t *testing.T) {
- watcher := newWatcher(t)
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- // Create a file before watching directory
- // This should NOT add any events to the fsnotify event queue
- testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile")
- {
- var f *os.File
- f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
- f.Close()
- }
-
- addWatch(t, watcher, testDir)
-
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for err := range watcher.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- testFile := filepath.Join(testDir, "TestFsnotifyDirOnly.testfile")
-
- // Receive events on the event channel on a separate goroutine
- eventstream := watcher.Events
- var createReceived, modifyReceived, deleteReceived counter
- done := make(chan bool)
- go func() {
- for event := range eventstream {
- // Only count relevant events
- if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) || event.Name == filepath.Clean(testFileAlreadyExists) {
- t.Logf("event received: %s", event)
- if event.Op&Remove == Remove {
- deleteReceived.increment()
- }
- if event.Op&Write == Write {
- modifyReceived.increment()
- }
- if event.Op&Create == Create {
- createReceived.increment()
- }
- } else {
- t.Logf("unexpected event received: %s", event)
- }
- }
- done <- true
- }()
-
- // Create a file
- // This should add at least one event to the fsnotify event queue
- var f *os.File
- f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
-
- time.Sleep(time.Millisecond)
- f.WriteString("data")
- f.Sync()
- f.Close()
-
- time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete
-
- os.Remove(testFile)
- os.Remove(testFileAlreadyExists)
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
- cReceived := createReceived.value()
- if cReceived != 1 {
- t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 1)
- }
- mReceived := modifyReceived.value()
- if mReceived != 1 {
- t.Fatalf("incorrect number of modify events received after 500 ms (%d vs %d)", mReceived, 1)
- }
- dReceived := deleteReceived.value()
- if dReceived != 2 {
- t.Fatalf("incorrect number of delete events received after 500 ms (%d vs %d)", dReceived, 2)
- }
-
- // Try closing the fsnotify instance
- t.Log("calling Close()")
- watcher.Close()
- t.Log("waiting for the event channel to become closed...")
- select {
- case <-done:
- t.Log("event channel closed")
- case <-time.After(2 * time.Second):
- t.Fatal("event stream was not closed after 2 seconds")
- }
-}
-
-func TestFsnotifyDeleteWatchedDir(t *testing.T) {
- watcher := newWatcher(t)
- defer watcher.Close()
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- // Create a file before watching directory
- testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile")
- {
- var f *os.File
- f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
- f.Close()
- }
-
- addWatch(t, watcher, testDir)
-
- // Add a watch for testFile
- addWatch(t, watcher, testFileAlreadyExists)
-
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for err := range watcher.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- // Receive events on the event channel on a separate goroutine
- eventstream := watcher.Events
- var deleteReceived counter
- go func() {
- for event := range eventstream {
- // Only count relevant events
- if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFileAlreadyExists) {
- t.Logf("event received: %s", event)
- if event.Op&Remove == Remove {
- deleteReceived.increment()
- }
- } else {
- t.Logf("unexpected event received: %s", event)
- }
- }
- }()
-
- os.RemoveAll(testDir)
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
- dReceived := deleteReceived.value()
- if dReceived < 2 {
- t.Fatalf("did not receive at least %d delete events, received %d after 500 ms", 2, dReceived)
- }
-}
-
-func TestFsnotifySubDir(t *testing.T) {
- watcher := newWatcher(t)
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- testFile1 := filepath.Join(testDir, "TestFsnotifyFile1.testfile")
- testSubDir := filepath.Join(testDir, "sub")
- testSubDirFile := filepath.Join(testDir, "sub/TestFsnotifyFile1.testfile")
-
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for err := range watcher.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- // Receive events on the event channel on a separate goroutine
- eventstream := watcher.Events
- var createReceived, deleteReceived counter
- done := make(chan bool)
- go func() {
- for event := range eventstream {
- // Only count relevant events
- if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testSubDir) || event.Name == filepath.Clean(testFile1) {
- t.Logf("event received: %s", event)
- if event.Op&Create == Create {
- createReceived.increment()
- }
- if event.Op&Remove == Remove {
- deleteReceived.increment()
- }
- } else {
- t.Logf("unexpected event received: %s", event)
- }
- }
- done <- true
- }()
-
- addWatch(t, watcher, testDir)
-
- // Create sub-directory
- if err := os.Mkdir(testSubDir, 0777); err != nil {
- t.Fatalf("failed to create test sub-directory: %s", err)
- }
-
- // Create a file
- var f *os.File
- f, err := os.OpenFile(testFile1, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
- f.Close()
-
- // Create a file (Should not see this! we are not watching subdir)
- var fs *os.File
- fs, err = os.OpenFile(testSubDirFile, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- fs.Sync()
- fs.Close()
-
- time.Sleep(200 * time.Millisecond)
-
- // Make sure receive deletes for both file and sub-directory
- os.RemoveAll(testSubDir)
- os.Remove(testFile1)
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
- cReceived := createReceived.value()
- if cReceived != 2 {
- t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 2)
- }
- dReceived := deleteReceived.value()
- if dReceived != 2 {
- t.Fatalf("incorrect number of delete events received after 500 ms (%d vs %d)", dReceived, 2)
- }
-
- // Try closing the fsnotify instance
- t.Log("calling Close()")
- watcher.Close()
- t.Log("waiting for the event channel to become closed...")
- select {
- case <-done:
- t.Log("event channel closed")
- case <-time.After(2 * time.Second):
- t.Fatal("event stream was not closed after 2 seconds")
- }
-}
-
-func TestFsnotifyRename(t *testing.T) {
- watcher := newWatcher(t)
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- addWatch(t, watcher, testDir)
-
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for err := range watcher.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- testFile := filepath.Join(testDir, "TestFsnotifyEvents.testfile")
- testFileRenamed := filepath.Join(testDir, "TestFsnotifyEvents.testfileRenamed")
-
- // Receive events on the event channel on a separate goroutine
- eventstream := watcher.Events
- var renameReceived counter
- done := make(chan bool)
- go func() {
- for event := range eventstream {
- // Only count relevant events
- if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) || event.Name == filepath.Clean(testFileRenamed) {
- if event.Op&Rename == Rename {
- renameReceived.increment()
- }
- t.Logf("event received: %s", event)
- } else {
- t.Logf("unexpected event received: %s", event)
- }
- }
- done <- true
- }()
-
- // Create a file
- // This should add at least one event to the fsnotify event queue
- var f *os.File
- f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
-
- f.WriteString("data")
- f.Sync()
- f.Close()
-
- // Add a watch for testFile
- addWatch(t, watcher, testFile)
-
- if err := testRename(testFile, testFileRenamed); err != nil {
- t.Fatalf("rename failed: %s", err)
- }
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
- if renameReceived.value() == 0 {
- t.Fatal("fsnotify rename events have not been received after 500 ms")
- }
-
- // Try closing the fsnotify instance
- t.Log("calling Close()")
- watcher.Close()
- t.Log("waiting for the event channel to become closed...")
- select {
- case <-done:
- t.Log("event channel closed")
- case <-time.After(2 * time.Second):
- t.Fatal("event stream was not closed after 2 seconds")
- }
-
- os.Remove(testFileRenamed)
-}
-
-func TestFsnotifyRenameToCreate(t *testing.T) {
- watcher := newWatcher(t)
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- // Create directory to get file
- testDirFrom := tempMkdir(t)
- defer os.RemoveAll(testDirFrom)
-
- addWatch(t, watcher, testDir)
-
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for err := range watcher.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- testFile := filepath.Join(testDirFrom, "TestFsnotifyEvents.testfile")
- testFileRenamed := filepath.Join(testDir, "TestFsnotifyEvents.testfileRenamed")
-
- // Receive events on the event channel on a separate goroutine
- eventstream := watcher.Events
- var createReceived counter
- done := make(chan bool)
- go func() {
- for event := range eventstream {
- // Only count relevant events
- if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) || event.Name == filepath.Clean(testFileRenamed) {
- if event.Op&Create == Create {
- createReceived.increment()
- }
- t.Logf("event received: %s", event)
- } else {
- t.Logf("unexpected event received: %s", event)
- }
- }
- done <- true
- }()
-
- // Create a file
- // This should add at least one event to the fsnotify event queue
- var f *os.File
- f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
- f.Close()
-
- if err := testRename(testFile, testFileRenamed); err != nil {
- t.Fatalf("rename failed: %s", err)
- }
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
- if createReceived.value() == 0 {
- t.Fatal("fsnotify create events have not been received after 500 ms")
- }
-
- // Try closing the fsnotify instance
- t.Log("calling Close()")
- watcher.Close()
- t.Log("waiting for the event channel to become closed...")
- select {
- case <-done:
- t.Log("event channel closed")
- case <-time.After(2 * time.Second):
- t.Fatal("event stream was not closed after 2 seconds")
- }
-
- os.Remove(testFileRenamed)
-}
-
-func TestFsnotifyRenameToOverwrite(t *testing.T) {
- switch runtime.GOOS {
- case "plan9", "windows":
- t.Skipf("skipping test on %q (os.Rename over existing file does not create event).", runtime.GOOS)
- }
-
- watcher := newWatcher(t)
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- // Create directory to get file
- testDirFrom := tempMkdir(t)
- defer os.RemoveAll(testDirFrom)
-
- testFile := filepath.Join(testDirFrom, "TestFsnotifyEvents.testfile")
- testFileRenamed := filepath.Join(testDir, "TestFsnotifyEvents.testfileRenamed")
-
- // Create a file
- var fr *os.File
- fr, err := os.OpenFile(testFileRenamed, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- fr.Sync()
- fr.Close()
-
- addWatch(t, watcher, testDir)
-
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for err := range watcher.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- // Receive events on the event channel on a separate goroutine
- eventstream := watcher.Events
- var eventReceived counter
- done := make(chan bool)
- go func() {
- for event := range eventstream {
- // Only count relevant events
- if event.Name == filepath.Clean(testFileRenamed) {
- eventReceived.increment()
- t.Logf("event received: %s", event)
- } else {
- t.Logf("unexpected event received: %s", event)
- }
- }
- done <- true
- }()
-
- // Create a file
- // This should add at least one event to the fsnotify event queue
- var f *os.File
- f, err = os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
- f.Close()
-
- if err := testRename(testFile, testFileRenamed); err != nil {
- t.Fatalf("rename failed: %s", err)
- }
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
- if eventReceived.value() == 0 {
- t.Fatal("fsnotify events have not been received after 500 ms")
- }
-
- // Try closing the fsnotify instance
- t.Log("calling Close()")
- watcher.Close()
- t.Log("waiting for the event channel to become closed...")
- select {
- case <-done:
- t.Log("event channel closed")
- case <-time.After(2 * time.Second):
- t.Fatal("event stream was not closed after 2 seconds")
- }
-
- os.Remove(testFileRenamed)
-}
-
-func TestRemovalOfWatch(t *testing.T) {
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- // Create a file before watching directory
- testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile")
- {
- var f *os.File
- f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
- f.Close()
- }
-
- watcher := newWatcher(t)
- defer watcher.Close()
-
- addWatch(t, watcher, testDir)
- if err := watcher.Remove(testDir); err != nil {
- t.Fatalf("Could not remove the watch: %v\n", err)
- }
-
- go func() {
- select {
- case ev := <-watcher.Events:
- t.Fatalf("We received event: %v\n", ev)
- case <-time.After(500 * time.Millisecond):
- t.Log("No event received, as expected.")
- }
- }()
-
- time.Sleep(200 * time.Millisecond)
- // Modify the file outside of the watched dir
- f, err := os.Open(testFileAlreadyExists)
- if err != nil {
- t.Fatalf("Open test file failed: %s", err)
- }
- f.WriteString("data")
- f.Sync()
- f.Close()
- if err := os.Chmod(testFileAlreadyExists, 0700); err != nil {
- t.Fatalf("chmod failed: %s", err)
- }
- time.Sleep(400 * time.Millisecond)
-}
-
-func TestFsnotifyAttrib(t *testing.T) {
- if runtime.GOOS == "windows" {
- t.Skip("attributes don't work on Windows.")
- }
-
- watcher := newWatcher(t)
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for err := range watcher.Errors {
- t.Fatalf("error received: %s", err)
- }
- }()
-
- testFile := filepath.Join(testDir, "TestFsnotifyAttrib.testfile")
-
- // Receive events on the event channel on a separate goroutine
- eventstream := watcher.Events
- // The modifyReceived counter counts IsModify events that are not IsAttrib,
- // and the attribReceived counts IsAttrib events (which are also IsModify as
- // a consequence).
- var modifyReceived counter
- var attribReceived counter
- done := make(chan bool)
- go func() {
- for event := range eventstream {
- // Only count relevant events
- if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) {
- if event.Op&Write == Write {
- modifyReceived.increment()
- }
- if event.Op&Chmod == Chmod {
- attribReceived.increment()
- }
- t.Logf("event received: %s", event)
- } else {
- t.Logf("unexpected event received: %s", event)
- }
- }
- done <- true
- }()
-
- // Create a file
- // This should add at least one event to the fsnotify event queue
- var f *os.File
- f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
-
- f.WriteString("data")
- f.Sync()
- f.Close()
-
- // Add a watch for testFile
- addWatch(t, watcher, testFile)
-
- if err := os.Chmod(testFile, 0700); err != nil {
- t.Fatalf("chmod failed: %s", err)
- }
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- // Creating/writing a file changes also the mtime, so IsAttrib should be set to true here
- time.Sleep(500 * time.Millisecond)
- if modifyReceived.value() != 0 {
- t.Fatal("received an unexpected modify event when creating a test file")
- }
- if attribReceived.value() == 0 {
- t.Fatal("fsnotify attribute events have not received after 500 ms")
- }
-
- // Modifying the contents of the file does not set the attrib flag (although eg. the mtime
- // might have been modified).
- modifyReceived.reset()
- attribReceived.reset()
-
- f, err = os.OpenFile(testFile, os.O_WRONLY, 0)
- if err != nil {
- t.Fatalf("reopening test file failed: %s", err)
- }
-
- f.WriteString("more data")
- f.Sync()
- f.Close()
-
- time.Sleep(500 * time.Millisecond)
-
- if modifyReceived.value() != 1 {
- t.Fatal("didn't receive a modify event after changing test file contents")
- }
-
- if attribReceived.value() != 0 {
- t.Fatal("did receive an unexpected attrib event after changing test file contents")
- }
-
- modifyReceived.reset()
- attribReceived.reset()
-
- // Doing a chmod on the file should trigger an event with the "attrib" flag set (the contents
- // of the file are not changed though)
- if err := os.Chmod(testFile, 0600); err != nil {
- t.Fatalf("chmod failed: %s", err)
- }
-
- time.Sleep(500 * time.Millisecond)
-
- if attribReceived.value() != 1 {
- t.Fatal("didn't receive an attribute change after 500ms")
- }
-
- // Try closing the fsnotify instance
- t.Log("calling Close()")
- watcher.Close()
- t.Log("waiting for the event channel to become closed...")
- select {
- case <-done:
- t.Log("event channel closed")
- case <-time.After(1e9):
- t.Fatal("event stream was not closed after 1 second")
- }
-
- os.Remove(testFile)
-}
-
-func TestFsnotifyClose(t *testing.T) {
- watcher := newWatcher(t)
- watcher.Close()
-
- var done int32
- go func() {
- watcher.Close()
- atomic.StoreInt32(&done, 1)
- }()
-
- time.Sleep(50e6) // 50 ms
- if atomic.LoadInt32(&done) == 0 {
- t.Fatal("double Close() test failed: second Close() call didn't return")
- }
-
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- if err := watcher.Add(testDir); err == nil {
- t.Fatal("expected error on Watch() after Close(), got nil")
- }
-}
-
-func TestFsnotifyFakeSymlink(t *testing.T) {
- if runtime.GOOS == "windows" {
- t.Skip("symlinks don't work on Windows.")
- }
-
- watcher := newWatcher(t)
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- var errorsReceived counter
- // Receive errors on the error channel on a separate goroutine
- go func() {
- for errors := range watcher.Errors {
- t.Logf("Received error: %s", errors)
- errorsReceived.increment()
- }
- }()
-
- // Count the CREATE events received
- var createEventsReceived, otherEventsReceived counter
- go func() {
- for ev := range watcher.Events {
- t.Logf("event received: %s", ev)
- if ev.Op&Create == Create {
- createEventsReceived.increment()
- } else {
- otherEventsReceived.increment()
- }
- }
- }()
-
- addWatch(t, watcher, testDir)
-
- if err := os.Symlink(filepath.Join(testDir, "zzz"), filepath.Join(testDir, "zzznew")); err != nil {
- t.Fatalf("Failed to create bogus symlink: %s", err)
- }
- t.Logf("Created bogus symlink")
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
-
- // Should not be error, just no events for broken links (watching nothing)
- if errorsReceived.value() > 0 {
- t.Fatal("fsnotify errors have been received.")
- }
- if otherEventsReceived.value() > 0 {
- t.Fatal("fsnotify other events received on the broken link")
- }
-
- // Except for 1 create event (for the link itself)
- if createEventsReceived.value() == 0 {
- t.Fatal("fsnotify create events were not received after 500 ms")
- }
- if createEventsReceived.value() > 1 {
- t.Fatal("fsnotify more create events received than expected")
- }
-
- // Try closing the fsnotify instance
- t.Log("calling Close()")
- watcher.Close()
-}
-
-func TestCyclicSymlink(t *testing.T) {
- if runtime.GOOS == "windows" {
- t.Skip("symlinks don't work on Windows.")
- }
-
- watcher := newWatcher(t)
-
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- link := path.Join(testDir, "link")
- if err := os.Symlink(".", link); err != nil {
- t.Fatalf("could not make symlink: %v", err)
- }
- addWatch(t, watcher, testDir)
-
- var createEventsReceived counter
- go func() {
- for ev := range watcher.Events {
- if ev.Op&Create == Create {
- createEventsReceived.increment()
- }
- }
- }()
-
- if err := os.Remove(link); err != nil {
- t.Fatalf("Error removing link: %v", err)
- }
-
- // It would be nice to be able to expect a delete event here, but kqueue has
- // no way for us to get events on symlinks themselves, because opening them
- // opens an fd to the file to which they point.
-
- if err := ioutil.WriteFile(link, []byte("foo"), 0700); err != nil {
- t.Fatalf("could not make symlink: %v", err)
- }
-
- // We expect this event to be received almost immediately, but let's wait 500 ms to be sure
- time.Sleep(500 * time.Millisecond)
-
- if got := createEventsReceived.value(); got == 0 {
- t.Errorf("want at least 1 create event got %v", got)
- }
-
- watcher.Close()
-}
-
-// TestConcurrentRemovalOfWatch tests that concurrent calls to RemoveWatch do not race.
-// See https://codereview.appspot.com/103300045/
-// go test -test.run=TestConcurrentRemovalOfWatch -test.cpu=1,1,1,1,1 -race
-func TestConcurrentRemovalOfWatch(t *testing.T) {
- if runtime.GOOS != "darwin" {
- t.Skip("regression test for race only present on darwin")
- }
-
- // Create directory to watch
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- // Create a file before watching directory
- testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile")
- {
- var f *os.File
- f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- t.Fatalf("creating test file failed: %s", err)
- }
- f.Sync()
- f.Close()
- }
-
- watcher := newWatcher(t)
- defer watcher.Close()
-
- addWatch(t, watcher, testDir)
-
- // Test that RemoveWatch can be invoked concurrently, with no data races.
- removed1 := make(chan struct{})
- go func() {
- defer close(removed1)
- watcher.Remove(testDir)
- }()
- removed2 := make(chan struct{})
- go func() {
- close(removed2)
- watcher.Remove(testDir)
- }()
- <-removed1
- <-removed2
-}
-
-func TestClose(t *testing.T) {
- // Regression test for #59 bad file descriptor from Close
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- watcher := newWatcher(t)
- if err := watcher.Add(testDir); err != nil {
- t.Fatalf("Expected no error on Add, got %v", err)
- }
- err := watcher.Close()
- if err != nil {
- t.Fatalf("Expected no error on Close, got %v.", err)
- }
-}
-
-// TestRemoveWithClose tests if one can handle Remove events and, at the same
-// time, close Watcher object without any data races.
-func TestRemoveWithClose(t *testing.T) {
- testDir := tempMkdir(t)
- defer os.RemoveAll(testDir)
-
- const fileN = 200
- tempFiles := make([]string, 0, fileN)
- for i := 0; i < fileN; i++ {
- tempFiles = append(tempFiles, tempMkFile(t, testDir))
- }
- watcher := newWatcher(t)
- if err := watcher.Add(testDir); err != nil {
- t.Fatalf("Expected no error on Add, got %v", err)
- }
- startC, stopC := make(chan struct{}), make(chan struct{})
- errC := make(chan error)
- go func() {
- for {
- select {
- case <-watcher.Errors:
- case <-watcher.Events:
- case <-stopC:
- return
- }
- }
- }()
- go func() {
- <-startC
- for _, fileName := range tempFiles {
- os.Remove(fileName)
- }
- }()
- go func() {
- <-startC
- errC <- watcher.Close()
- }()
- close(startC)
- defer close(stopC)
- if err := <-errC; err != nil {
- t.Fatalf("Expected no error on Close, got %v.", err)
- }
-}
-
-func testRename(file1, file2 string) error {
- switch runtime.GOOS {
- case "windows", "plan9":
- return os.Rename(file1, file2)
- default:
- cmd := exec.Command("mv", file1, file2)
- return cmd.Run()
- }
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/afpacket.go b/vendor/github.com/google/gopacket/afpacket/afpacket.go
deleted file mode 100644
index 13937c1..0000000
--- a/vendor/github.com/google/gopacket/afpacket/afpacket.go
+++ /dev/null
@@ -1,476 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-// Package afpacket provides Go bindings for MMap'd AF_PACKET socket reading.
-package afpacket
-
-// Couldn't have done this without:
-// http://lxr.free-electrons.com/source/Documentation/networking/packet_mmap.txt
-// http://codemonkeytips.blogspot.co.uk/2011/07/asynchronous-packet-socket-reading-with.html
-
-import (
- "errors"
- "fmt"
- "net"
- "runtime"
- "sync"
- "sync/atomic"
- "time"
- "unsafe"
-
- "golang.org/x/net/bpf"
- "golang.org/x/sys/unix"
-
- "github.com/google/gopacket"
-)
-
-/*
-#include <linux/if_packet.h> // AF_PACKET, sockaddr_ll
-#include <linux/if_ether.h> // ETH_P_ALL
-#include <sys/socket.h> // socket()
-#include <unistd.h> // close()
-#include <arpa/inet.h> // htons()
-#include <sys/mman.h> // mmap(), munmap()
-#include <poll.h> // poll()
-*/
-import "C"
-
-var pageSize = unix.Getpagesize()
-var tpacketAlignment = uint(C.TPACKET_ALIGNMENT)
-
-// ErrPoll returned by poll
-var ErrPoll = errors.New("packet poll failed")
-
-// ErrTimeout returned on poll timeout
-var ErrTimeout = errors.New("packet poll timeout expired")
-
-func tpacketAlign(v int) int {
- return int((uint(v) + tpacketAlignment - 1) & ((^tpacketAlignment) - 1))
-}
-
-// Stats is a set of counters detailing the work TPacket has done so far.
-type Stats struct {
- // Packets is the total number of packets returned to the caller.
- Packets int64
- // Polls is the number of blocking syscalls made waiting for packets.
- // This should always be <= Packets, since with TPacket one syscall
- // can (and often does) return many results.
- Polls int64
-}
-
-// SocketStats is a struct where socket stats are stored
-type SocketStats C.struct_tpacket_stats
-
-// SocketStatsV3 is a struct where socket stats for TPacketV3 are stored
-type SocketStatsV3 C.struct_tpacket_stats_v3
-
-// TPacket implements packet receiving for Linux AF_PACKET versions 1, 2, and 3.
-type TPacket struct {
- // fd is the C file descriptor.
- fd int
- // ring points to the memory space of the ring buffer shared by tpacket and the kernel.
- ring []byte
- // rawring is the unsafe pointer that we use to poll for packets
- rawring unsafe.Pointer
- // opts contains read-only options for the TPacket object.
- opts options
- mu sync.Mutex // guards below
- // offset is the offset into the ring of the current header.
- offset int
- // current is the current header.
- current header
- // pollset is used by TPacket for its poll() call.
- pollset unix.PollFd
- // shouldReleasePacket is set to true whenever we return packet data, to make sure we remember to release that data back to the kernel.
- shouldReleasePacket bool
- // headerNextNeeded is set to true when header need to move to the next packet. No need to move it case of poll error.
- headerNextNeeded bool
- // tpVersion is the version of TPacket actually in use, set by setRequestedTPacketVersion.
- tpVersion OptTPacketVersion
- // Hackity hack hack hack. We need to return a pointer to the header with
- // getTPacketHeader, and we don't want to allocate a v3wrapper every time,
- // so we leave it in the TPacket object and return a pointer to it.
- v3 v3wrapper
-
- statsMu sync.Mutex // guards stats below
- // stats is simple statistics on TPacket's run.
- stats Stats
- // socketStats contains stats from the socket
- socketStats SocketStats
- // same as socketStats, but with an extra field freeze_q_cnt
- socketStatsV3 SocketStatsV3
-}
-
-var _ gopacket.ZeroCopyPacketDataSource = &TPacket{}
-
-// bindToInterface binds the TPacket socket to a particular named interface.
-func (h *TPacket) bindToInterface(ifaceName string) error {
- ifIndex := 0
- // An empty string here means to listen to all interfaces
- if ifaceName != "" {
- iface, err := net.InterfaceByName(ifaceName)
- if err != nil {
- return fmt.Errorf("InterfaceByName: %v", err)
- }
- ifIndex = iface.Index
- }
- s := &unix.SockaddrLinklayer{
- Protocol: htons(uint16(unix.ETH_P_ALL)),
- Ifindex: ifIndex,
- }
- return unix.Bind(h.fd, s)
-}
-
-// setTPacketVersion asks the kernel to set TPacket to a particular version, and returns an error on failure.
-func (h *TPacket) setTPacketVersion(version OptTPacketVersion) error {
- if err := unix.SetsockoptInt(h.fd, unix.SOL_PACKET, unix.PACKET_VERSION, int(version)); err != nil {
- return fmt.Errorf("setsockopt packet_version: %v", err)
- }
- return nil
-}
-
-// setRequestedTPacketVersion tries to set TPacket to the requested version or versions.
-func (h *TPacket) setRequestedTPacketVersion() error {
- switch {
- case (h.opts.version == TPacketVersionHighestAvailable || h.opts.version == TPacketVersion3) && h.setTPacketVersion(TPacketVersion3) == nil:
- h.tpVersion = TPacketVersion3
- case (h.opts.version == TPacketVersionHighestAvailable || h.opts.version == TPacketVersion2) && h.setTPacketVersion(TPacketVersion2) == nil:
- h.tpVersion = TPacketVersion2
- case (h.opts.version == TPacketVersionHighestAvailable || h.opts.version == TPacketVersion1) && h.setTPacketVersion(TPacketVersion1) == nil:
- h.tpVersion = TPacketVersion1
- default:
- return errors.New("no known tpacket versions work on this machine")
- }
- return nil
-}
-
-// setUpRing sets up the shared-memory ring buffer between the user process and the kernel.
-func (h *TPacket) setUpRing() (err error) {
- totalSize := int(h.opts.framesPerBlock * h.opts.numBlocks * h.opts.frameSize)
- switch h.tpVersion {
- case TPacketVersion1, TPacketVersion2:
- var tp C.struct_tpacket_req
- tp.tp_block_size = C.uint(h.opts.blockSize)
- tp.tp_block_nr = C.uint(h.opts.numBlocks)
- tp.tp_frame_size = C.uint(h.opts.frameSize)
- tp.tp_frame_nr = C.uint(h.opts.framesPerBlock * h.opts.numBlocks)
- if err := setsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_RX_RING, unsafe.Pointer(&tp), unsafe.Sizeof(tp)); err != nil {
- return fmt.Errorf("setsockopt packet_rx_ring: %v", err)
- }
- case TPacketVersion3:
- var tp C.struct_tpacket_req3
- tp.tp_block_size = C.uint(h.opts.blockSize)
- tp.tp_block_nr = C.uint(h.opts.numBlocks)
- tp.tp_frame_size = C.uint(h.opts.frameSize)
- tp.tp_frame_nr = C.uint(h.opts.framesPerBlock * h.opts.numBlocks)
- tp.tp_retire_blk_tov = C.uint(h.opts.blockTimeout / time.Millisecond)
- if err := setsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_RX_RING, unsafe.Pointer(&tp), unsafe.Sizeof(tp)); err != nil {
- return fmt.Errorf("setsockopt packet_rx_ring v3: %v", err)
- }
- default:
- return errors.New("invalid tpVersion")
- }
- h.ring, err = unix.Mmap(h.fd, 0, totalSize, unix.PROT_READ|unix.PROT_WRITE, unix.MAP_SHARED)
- if err != nil {
- return err
- }
- if h.ring == nil {
- return errors.New("no ring")
- }
- h.rawring = unsafe.Pointer(&h.ring[0])
- return nil
-}
-
-// Close cleans up the TPacket. It should not be used after the Close call.
-func (h *TPacket) Close() {
- if h.fd == -1 {
- return // already closed.
- }
- if h.ring != nil {
- unix.Munmap(h.ring)
- }
- h.ring = nil
- unix.Close(h.fd)
- h.fd = -1
- runtime.SetFinalizer(h, nil)
-}
-
-// NewTPacket returns a new TPacket object for reading packets off the wire.
-// Its behavior may be modified by passing in any/all of afpacket.Opt* to this
-// function.
-// If this function succeeds, the user should be sure to Close the returned
-// TPacket when finished with it.
-func NewTPacket(opts ...interface{}) (h *TPacket, err error) {
- h = &TPacket{}
- if h.opts, err = parseOptions(opts...); err != nil {
- return nil, err
- }
- fd, err := unix.Socket(unix.AF_PACKET, int(h.opts.socktype), int(htons(unix.ETH_P_ALL)))
- if err != nil {
- return nil, err
- }
- h.fd = fd
- if err = h.bindToInterface(h.opts.iface); err != nil {
- goto errlbl
- }
- if err = h.setRequestedTPacketVersion(); err != nil {
- goto errlbl
- }
- if err = h.setUpRing(); err != nil {
- goto errlbl
- }
- // Clear stat counter from socket
- if err = h.InitSocketStats(); err != nil {
- goto errlbl
- }
- runtime.SetFinalizer(h, (*TPacket).Close)
- return h, nil
-errlbl:
- h.Close()
- return nil, err
-}
-
-// SetBPF attaches a BPF filter to the underlying socket
-func (h *TPacket) SetBPF(filter []bpf.RawInstruction) error {
- var p unix.SockFprog
- if len(filter) > int(^uint16(0)) {
- return errors.New("filter too large")
- }
- p.Len = uint16(len(filter))
- p.Filter = (*unix.SockFilter)(unsafe.Pointer(&filter[0]))
-
- return setsockopt(h.fd, unix.SOL_SOCKET, unix.SO_ATTACH_FILTER, unsafe.Pointer(&p), unix.SizeofSockFprog)
-}
-
-func (h *TPacket) releaseCurrentPacket() error {
- h.current.clearStatus()
- h.offset++
- h.shouldReleasePacket = false
- return nil
-}
-
-// ZeroCopyReadPacketData reads the next packet off the wire, and returns its data.
-// The slice returned by ZeroCopyReadPacketData points to bytes owned by the
-// TPacket. Each call to ZeroCopyReadPacketData invalidates any data previously
-// returned by ZeroCopyReadPacketData. Care must be taken not to keep pointers
-// to old bytes when using ZeroCopyReadPacketData... if you need to keep data past
-// the next time you call ZeroCopyReadPacketData, use ReadPacketData, which copies
-// the bytes into a new buffer for you.
-// tp, _ := NewTPacket(...)
-// data1, _, _ := tp.ZeroCopyReadPacketData()
-// // do everything you want with data1 here, copying bytes out of it if you'd like to keep them around.
-// data2, _, _ := tp.ZeroCopyReadPacketData() // invalidates bytes in data1
-func (h *TPacket) ZeroCopyReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
- h.mu.Lock()
-retry:
- if h.current == nil || !h.headerNextNeeded || !h.current.next() {
- if h.shouldReleasePacket {
- h.releaseCurrentPacket()
- }
- h.current = h.getTPacketHeader()
- if err = h.pollForFirstPacket(h.current); err != nil {
- h.headerNextNeeded = false
- h.mu.Unlock()
- return
- }
- // We received an empty block
- if h.current.getLength() == 0 {
- goto retry
- }
- }
- data = h.current.getData()
- ci.Timestamp = h.current.getTime()
- ci.CaptureLength = len(data)
- ci.Length = h.current.getLength()
- ci.InterfaceIndex = h.current.getIfaceIndex()
- atomic.AddInt64(&h.stats.Packets, 1)
- h.headerNextNeeded = true
- h.mu.Unlock()
-
- return
-}
-
-// Stats returns statistics on the packets the TPacket has seen so far.
-func (h *TPacket) Stats() (Stats, error) {
- return Stats{
- Polls: atomic.LoadInt64(&h.stats.Polls),
- Packets: atomic.LoadInt64(&h.stats.Packets),
- }, nil
-}
-
-// InitSocketStats clears socket counters and return empty stats.
-func (h *TPacket) InitSocketStats() error {
- if h.tpVersion == TPacketVersion3 {
- socklen := unsafe.Sizeof(h.socketStatsV3)
- slt := C.socklen_t(socklen)
- var ssv3 SocketStatsV3
-
- err := getsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_STATISTICS, unsafe.Pointer(&ssv3), uintptr(unsafe.Pointer(&slt)))
- if err != nil {
- return err
- }
- h.socketStatsV3 = SocketStatsV3{}
- } else {
- socklen := unsafe.Sizeof(h.socketStats)
- slt := C.socklen_t(socklen)
- var ss SocketStats
-
- err := getsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_STATISTICS, unsafe.Pointer(&ss), uintptr(unsafe.Pointer(&slt)))
- if err != nil {
- return err
- }
- h.socketStats = SocketStats{}
- }
- return nil
-}
-
-// SocketStats saves stats from the socket to the TPacket instance.
-func (h *TPacket) SocketStats() (SocketStats, SocketStatsV3, error) {
- h.statsMu.Lock()
- defer h.statsMu.Unlock()
- // We need to save the counters since asking for the stats will clear them
- if h.tpVersion == TPacketVersion3 {
- socklen := unsafe.Sizeof(h.socketStatsV3)
- slt := C.socklen_t(socklen)
- var ssv3 SocketStatsV3
-
- err := getsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_STATISTICS, unsafe.Pointer(&ssv3), uintptr(unsafe.Pointer(&slt)))
- if err != nil {
- return SocketStats{}, SocketStatsV3{}, err
- }
-
- h.socketStatsV3.tp_packets += ssv3.tp_packets
- h.socketStatsV3.tp_drops += ssv3.tp_drops
- h.socketStatsV3.tp_freeze_q_cnt += ssv3.tp_freeze_q_cnt
- return h.socketStats, h.socketStatsV3, nil
- }
- socklen := unsafe.Sizeof(h.socketStats)
- slt := C.socklen_t(socklen)
- var ss SocketStats
-
- err := getsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_STATISTICS, unsafe.Pointer(&ss), uintptr(unsafe.Pointer(&slt)))
- if err != nil {
- return SocketStats{}, SocketStatsV3{}, err
- }
-
- h.socketStats.tp_packets += ss.tp_packets
- h.socketStats.tp_drops += ss.tp_drops
- return h.socketStats, h.socketStatsV3, nil
-}
-
-// ReadPacketDataTo reads packet data into a user-supplied buffer.
-// This function reads up to the length of the passed-in slice.
-// The number of bytes read into data will be returned in ci.CaptureLength,
-// which is the minimum of the size of the passed-in buffer and the size of
-// the captured packet.
-func (h *TPacket) ReadPacketDataTo(data []byte) (ci gopacket.CaptureInfo, err error) {
- var d []byte
- d, ci, err = h.ZeroCopyReadPacketData()
- if err != nil {
- return
- }
- ci.CaptureLength = copy(data, d)
- return
-}
-
-// ReadPacketData reads the next packet, copies it into a new buffer, and returns
-// that buffer. Since the buffer is allocated by ReadPacketData, it is safe for long-term
-// use. This implements gopacket.PacketDataSource.
-func (h *TPacket) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
- var d []byte
- d, ci, err = h.ZeroCopyReadPacketData()
- if err != nil {
- return
- }
- data = make([]byte, len(d))
- copy(data, d)
- return
-}
-
-func (h *TPacket) getTPacketHeader() header {
- switch h.tpVersion {
- case TPacketVersion1:
- if h.offset >= h.opts.framesPerBlock*h.opts.numBlocks {
- h.offset = 0
- }
- position := uintptr(h.rawring) + uintptr(h.opts.frameSize*h.offset)
- return (*v1header)(unsafe.Pointer(position))
- case TPacketVersion2:
- if h.offset >= h.opts.framesPerBlock*h.opts.numBlocks {
- h.offset = 0
- }
- position := uintptr(h.rawring) + uintptr(h.opts.frameSize*h.offset)
- return (*v2header)(unsafe.Pointer(position))
- case TPacketVersion3:
- // TPacket3 uses each block to return values, instead of each frame. Hence we need to rotate when we hit #blocks, not #frames.
- if h.offset >= h.opts.numBlocks {
- h.offset = 0
- }
- position := uintptr(h.rawring) + uintptr(h.opts.frameSize*h.offset*h.opts.framesPerBlock)
- h.v3 = initV3Wrapper(unsafe.Pointer(position))
- return &h.v3
- }
- panic("handle tpacket version is invalid")
-}
-
-func (h *TPacket) pollForFirstPacket(hdr header) error {
- tm := int(h.opts.pollTimeout / time.Millisecond)
- for hdr.getStatus()&C.TP_STATUS_USER == 0 {
- h.pollset.Fd = int32(h.fd)
- h.pollset.Events = unix.POLLIN
- h.pollset.Revents = 0
- n, err := unix.Poll([]unix.PollFd{h.pollset}, tm)
- if n == 0 {
- return ErrTimeout
- }
-
- atomic.AddInt64(&h.stats.Polls, 1)
- if h.pollset.Revents&unix.POLLERR > 0 {
- return ErrPoll
- }
- if err != nil {
- return err
- }
- }
-
- h.shouldReleasePacket = true
- return nil
-}
-
-// FanoutType determines the type of fanout to use with a TPacket SetFanout call.
-type FanoutType int
-
-// FanoutType values.
-const (
- FanoutHash FanoutType = 0
- // It appears that defrag only works with FanoutHash, see:
- // http://lxr.free-electrons.com/source/net/packet/af_packet.c#L1204
- FanoutHashWithDefrag FanoutType = 0x8000
- FanoutLoadBalance FanoutType = 1
- FanoutCPU FanoutType = 2
-)
-
-// SetFanout activates TPacket's fanout ability.
-// Use of Fanout requires creating multiple TPacket objects and the same id/type to
-// a SetFanout call on each. Note that this can be done cross-process, so if two
-// different processes both call SetFanout with the same type/id, they'll share
-// packets between them. The same should work for multiple TPacket objects within
-// the same process.
-func (h *TPacket) SetFanout(t FanoutType, id uint16) error {
- h.mu.Lock()
- defer h.mu.Unlock()
- arg := C.int(t) << 16
- arg |= C.int(id)
- return setsockopt(h.fd, unix.SOL_PACKET, unix.PACKET_FANOUT, unsafe.Pointer(&arg), unsafe.Sizeof(arg))
-}
-
-// WritePacketData transmits a raw packet.
-func (h *TPacket) WritePacketData(pkt []byte) error {
- _, err := unix.Write(h.fd, pkt)
- return err
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/afpacket_test.go b/vendor/github.com/google/gopacket/afpacket/afpacket_test.go
deleted file mode 100644
index 57f6480..0000000
--- a/vendor/github.com/google/gopacket/afpacket/afpacket_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-package afpacket
-
-import (
- "reflect"
- "testing"
-)
-
-func TestParseOptions(t *testing.T) {
- wanted1 := defaultOpts
- wanted1.frameSize = 1 << 10
- wanted1.framesPerBlock = wanted1.blockSize / wanted1.frameSize
- for i, test := range []struct {
- opts []interface{}
- want options
- err bool
- }{
- {opts: []interface{}{OptBlockSize(2)}, err: true},
- {opts: []interface{}{OptFrameSize(333)}, err: true},
- {opts: []interface{}{OptTPacketVersion(-3)}, err: true},
- {opts: []interface{}{OptTPacketVersion(5)}, err: true},
- {opts: []interface{}{OptFrameSize(1 << 10)}, want: wanted1},
- } {
- got, err := parseOptions(test.opts...)
- t.Logf("got: %#v\nerr: %v", got, err)
- if test.err && err == nil || !test.err && err != nil {
- t.Errorf("%d error mismatch, want error? %v. error: %v", i, test.err, err)
- }
- if !test.err && !reflect.DeepEqual(test.want, got) {
- t.Errorf("%d opts mismatch, want\n%#v", i, test.want)
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/header.go b/vendor/github.com/google/gopacket/afpacket/header.go
deleted file mode 100644
index 0b9918e..0000000
--- a/vendor/github.com/google/gopacket/afpacket/header.go
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-package afpacket
-
-import (
- "reflect"
- "time"
- "unsafe"
-)
-
-// #include <linux/if_packet.h>
-import "C"
-
-// Our model of handling all TPacket versions is a little hacky, to say the
-// least. We use the header interface to handle interactions with the
-// tpacket1/tpacket2 packet header AND the tpacket3 block header. The big
-// difference is that tpacket3's block header implements the next() call to get
-// the next packet within the block, while v1/v2 just always return false.
-
-type header interface {
- // getStatus returns the TPacket status of the current header.
- getStatus() int
- // clearStatus clears the status of the current header, releasing its
- // underlying data back to the kernel for future use with new packets.
- // Using the header after calling clearStatus is an error. clearStatus
- // should only be called after next() returns false.
- clearStatus()
- // getTime returns the timestamp for the current packet pointed to by
- // the header.
- getTime() time.Time
- // getData returns the packet data pointed to by the current header.
- getData() []byte
- // getLength returns the total length of the packet.
- getLength() int
- // getIfaceIndex returns the index of the network interface
- // where the packet was seen. The index can later be translated to a name.
- getIfaceIndex() int
- // next moves this header to point to the next packet it contains,
- // returning true on success (in which case getTime and getData will
- // return values for the new packet) or false if there are no more
- // packets (in which case clearStatus should be called).
- next() bool
-}
-
-func tpAlign(x int) int {
- return int((uint(x) + tpacketAlignment - 1) &^ (tpacketAlignment - 1))
-}
-
-type v1header C.struct_tpacket_hdr
-type v2header C.struct_tpacket2_hdr
-
-func makeSlice(start uintptr, length int) (data []byte) {
- slice := (*reflect.SliceHeader)(unsafe.Pointer(&data))
- slice.Data = start
- slice.Len = length
- slice.Cap = length
- return
-}
-
-func (h *v1header) getStatus() int {
- return int(h.tp_status)
-}
-func (h *v1header) clearStatus() {
- h.tp_status = 0
-}
-func (h *v1header) getTime() time.Time {
- return time.Unix(int64(h.tp_sec), int64(h.tp_usec)*1000)
-}
-func (h *v1header) getData() []byte {
- return makeSlice(uintptr(unsafe.Pointer(h))+uintptr(h.tp_mac), int(h.tp_snaplen))
-}
-func (h *v1header) getLength() int {
- return int(h.tp_len)
-}
-func (h *v1header) getIfaceIndex() int {
- ll := (*C.struct_sockaddr_ll)(unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(tpAlign(int(C.sizeof_struct_tpacket_hdr)))))
- return int(ll.sll_ifindex)
-}
-func (h *v1header) next() bool {
- return false
-}
-
-func (h *v2header) getStatus() int {
- return int(h.tp_status)
-}
-func (h *v2header) clearStatus() {
- h.tp_status = 0
-}
-func (h *v2header) getTime() time.Time {
- return time.Unix(int64(h.tp_sec), int64(h.tp_nsec))
-}
-func (h *v2header) getData() []byte {
- return makeSlice(uintptr(unsafe.Pointer(h))+uintptr(h.tp_mac), int(h.tp_snaplen))
-}
-func (h *v2header) getLength() int {
- return int(h.tp_len)
-}
-func (h *v2header) getIfaceIndex() int {
- ll := (*C.struct_sockaddr_ll)(unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(tpAlign(int(C.sizeof_struct_tpacket2_hdr)))))
- return int(ll.sll_ifindex)
-}
-func (h *v2header) next() bool {
- return false
-}
-
-type v3wrapper struct {
- block *C.struct_tpacket_block_desc
- blockhdr *C.struct_tpacket_hdr_v1
- packet *C.struct_tpacket3_hdr
- used C.__u32
-}
-
-func initV3Wrapper(block unsafe.Pointer) (w v3wrapper) {
- w.block = (*C.struct_tpacket_block_desc)(block)
- w.blockhdr = (*C.struct_tpacket_hdr_v1)(unsafe.Pointer(&w.block.hdr[0]))
- w.packet = (*C.struct_tpacket3_hdr)(unsafe.Pointer(uintptr(block) + uintptr(w.blockhdr.offset_to_first_pkt)))
- return
-}
-func (w *v3wrapper) getStatus() int {
- return int(w.blockhdr.block_status)
-}
-func (w *v3wrapper) clearStatus() {
- w.blockhdr.block_status = 0
-}
-func (w *v3wrapper) getTime() time.Time {
- return time.Unix(int64(w.packet.tp_sec), int64(w.packet.tp_nsec))
-}
-func (w *v3wrapper) getData() []byte {
- return makeSlice(uintptr(unsafe.Pointer(w.packet))+uintptr(w.packet.tp_mac), int(w.packet.tp_snaplen))
-}
-func (w *v3wrapper) getLength() int {
- return int(w.packet.tp_len)
-}
-func (w *v3wrapper) getIfaceIndex() int {
- ll := (*C.struct_sockaddr_ll)(unsafe.Pointer(uintptr(unsafe.Pointer(w.packet)) + uintptr(tpAlign(int(C.sizeof_struct_tpacket3_hdr)))))
- return int(ll.sll_ifindex)
-}
-func (w *v3wrapper) next() bool {
- w.used++
- if w.used >= w.blockhdr.num_pkts {
- return false
- }
-
- next := uintptr(unsafe.Pointer(w.packet))
- if w.packet.tp_next_offset != 0 {
- next += uintptr(w.packet.tp_next_offset)
- } else {
- next += uintptr(tpacketAlign(int(w.packet.tp_snaplen) + int(w.packet.tp_mac)))
- }
- w.packet = (*C.struct_tpacket3_hdr)(unsafe.Pointer(next))
- return true
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/options.go b/vendor/github.com/google/gopacket/afpacket/options.go
deleted file mode 100644
index c5ab771..0000000
--- a/vendor/github.com/google/gopacket/afpacket/options.go
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-package afpacket
-
-import (
- "errors"
- "fmt"
- "time"
-)
-
-// #include <linux/if_packet.h>
-// #include <sys/socket.h>
-import "C"
-
-// OptTPacketVersion is the version of TPacket to use.
-// It can be passed into NewTPacket.
-type OptTPacketVersion int
-
-// String returns a string representation of the version, generally of the form V#.
-func (t OptTPacketVersion) String() string {
- switch t {
- case TPacketVersion1:
- return "V1"
- case TPacketVersion2:
- return "V2"
- case TPacketVersion3:
- return "V3"
- case TPacketVersionHighestAvailable:
- return "HighestAvailable"
- }
- return "InvalidVersion"
-}
-
-// OptSocketType is the socket type used to open the TPacket socket.
-type OptSocketType int
-
-func (t OptSocketType) String() string {
- switch t {
- case SocketRaw:
- return "SOCK_RAW"
- case SocketDgram:
- return "SOCK_DGRAM"
- }
- return "UnknownSocketType"
-}
-
-// TPacket version numbers for use with NewHandle.
-const (
- // TPacketVersionHighestAvailable tells NewHandle to use the highest available version of tpacket the kernel has available.
- // This is the default, should a version number not be given in NewHandle's options.
- TPacketVersionHighestAvailable = OptTPacketVersion(-1)
- TPacketVersion1 = OptTPacketVersion(C.TPACKET_V1)
- TPacketVersion2 = OptTPacketVersion(C.TPACKET_V2)
- TPacketVersion3 = OptTPacketVersion(C.TPACKET_V3)
- tpacketVersionMax = TPacketVersion3
- tpacketVersionMin = -1
- // SocketRaw is the default socket type. It returns packet data
- // including the link layer (ethernet headers, etc).
- SocketRaw = OptSocketType(C.SOCK_RAW)
- // SocketDgram strips off the link layer when reading packets, and adds
- // the link layer back automatically on packet writes (coming soon...)
- SocketDgram = OptSocketType(C.SOCK_DGRAM)
-)
-
-// OptInterface is the specific interface to bind to.
-// It can be passed into NewTPacket.
-type OptInterface string
-
-// OptFrameSize is TPacket's tp_frame_size
-// It can be passed into NewTPacket.
-type OptFrameSize int
-
-// OptBlockSize is TPacket's tp_block_size
-// It can be passed into NewTPacket.
-type OptBlockSize int
-
-// OptNumBlocks is TPacket's tp_block_nr
-// It can be passed into NewTPacket.
-type OptNumBlocks int
-
-// OptBlockTimeout is TPacket v3's tp_retire_blk_tov. Note that it has only millisecond granularity, so must be >= 1 ms.
-// It can be passed into NewTPacket.
-type OptBlockTimeout time.Duration
-
-// OptPollTimeout is the number of milliseconds that poll() should block waiting for a file
-// descriptor to become ready. Specifying a negative value in time‐out means an infinite timeout.
-type OptPollTimeout time.Duration
-
-// Default constants used by options.
-const (
- DefaultFrameSize = 4096 // Default value for OptFrameSize.
- DefaultBlockSize = DefaultFrameSize * 128 // Default value for OptBlockSize.
- DefaultNumBlocks = 128 // Default value for OptNumBlocks.
- DefaultBlockTimeout = 64 * time.Millisecond // Default value for OptBlockTimeout.
- DefaultPollTimeout = -1 * time.Millisecond // Default value for OptPollTimeout. This blocks forever.
-)
-
-type options struct {
- frameSize int
- framesPerBlock int
- blockSize int
- numBlocks int
- blockTimeout time.Duration
- pollTimeout time.Duration
- version OptTPacketVersion
- socktype OptSocketType
- iface string
-}
-
-var defaultOpts = options{
- frameSize: DefaultFrameSize,
- blockSize: DefaultBlockSize,
- numBlocks: DefaultNumBlocks,
- blockTimeout: DefaultBlockTimeout,
- pollTimeout: DefaultPollTimeout,
- version: TPacketVersionHighestAvailable,
- socktype: SocketRaw,
-}
-
-func parseOptions(opts ...interface{}) (ret options, err error) {
- ret = defaultOpts
- for _, opt := range opts {
- switch v := opt.(type) {
- case OptFrameSize:
- ret.frameSize = int(v)
- case OptBlockSize:
- ret.blockSize = int(v)
- case OptNumBlocks:
- ret.numBlocks = int(v)
- case OptBlockTimeout:
- ret.blockTimeout = time.Duration(v)
- case OptPollTimeout:
- ret.pollTimeout = time.Duration(v)
- case OptTPacketVersion:
- ret.version = v
- case OptInterface:
- ret.iface = string(v)
- case OptSocketType:
- ret.socktype = v
- default:
- err = errors.New("unknown type in options")
- return
- }
- }
- if err = ret.check(); err != nil {
- return
- }
- ret.framesPerBlock = ret.blockSize / ret.frameSize
- return
-}
-func (o options) check() error {
- switch {
- case o.blockSize%pageSize != 0:
- return fmt.Errorf("block size %d must be divisible by page size %d", o.blockSize, pageSize)
- case o.blockSize%o.frameSize != 0:
- return fmt.Errorf("block size %d must be divisible by frame size %d", o.blockSize, o.frameSize)
- case o.numBlocks < 1:
- return fmt.Errorf("num blocks %d must be >= 1", o.numBlocks)
- case o.blockTimeout < time.Millisecond:
- return fmt.Errorf("block timeout %v must be > %v", o.blockTimeout, time.Millisecond)
- case o.version < tpacketVersionMin || o.version > tpacketVersionMax:
- return fmt.Errorf("tpacket version %v is invalid", o.version)
- }
- return nil
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/sockopt_linux.go b/vendor/github.com/google/gopacket/afpacket/sockopt_linux.go
deleted file mode 100644
index c53e1cc..0000000
--- a/vendor/github.com/google/gopacket/afpacket/sockopt_linux.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-package afpacket
-
-import (
- "unsafe"
-
- "golang.org/x/sys/unix"
-)
-
-// setsockopt provides access to the setsockopt syscall.
-func setsockopt(fd, level, name int, val unsafe.Pointer, vallen uintptr) error {
- _, _, errno := unix.Syscall6(
- unix.SYS_SETSOCKOPT,
- uintptr(fd),
- uintptr(level),
- uintptr(name),
- uintptr(val),
- vallen,
- 0,
- )
- if errno != 0 {
- return error(errno)
- }
-
- return nil
-}
-
-// getsockopt provides access to the getsockopt syscall.
-func getsockopt(fd, level, name int, val unsafe.Pointer, vallen uintptr) error {
- _, _, errno := unix.Syscall6(
- unix.SYS_GETSOCKOPT,
- uintptr(fd),
- uintptr(level),
- uintptr(name),
- uintptr(val),
- vallen,
- 0,
- )
- if errno != 0 {
- return error(errno)
- }
-
- return nil
-}
-
-// htons converts a short (uint16) from host-to-network byte order.
-// Thanks to mikioh for this neat trick:
-// https://github.com/mikioh/-stdyng/blob/master/afpacket.go
-func htons(i uint16) uint16 {
- return (i<<8)&0xff00 | i>>8
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.go b/vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.go
deleted file mode 100644
index 8c3eb42..0000000
--- a/vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.go
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux,386
-
-package afpacket
-
-import (
- "unsafe"
-
- "golang.org/x/sys/unix"
-)
-
-const (
- sysSETSOCKOPT = 0xe
- sysGETSOCKOPT = 0xf
-)
-
-func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, unix.Errno)
-
-// setsockopt provides access to the setsockopt syscall.
-func setsockopt(fd, level, name int, v unsafe.Pointer, l uintptr) error {
- _, errno := socketcall(
- sysSETSOCKOPT,
- uintptr(fd),
- uintptr(level),
- uintptr(name),
- uintptr(v),
- l,
- 0,
- )
- if errno != 0 {
- return error(errno)
- }
-
- return nil
-}
-
-func getsockopt(fd, level, name int, v unsafe.Pointer, l uintptr) error {
- _, errno := socketcall(
- sysGETSOCKOPT,
- uintptr(fd),
- uintptr(level),
- uintptr(name),
- uintptr(v),
- l,
- 0,
- )
- if errno != 0 {
- return error(errno)
- }
-
- return nil
-}
diff --git a/vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.s b/vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.s
deleted file mode 100644
index 7d0336a..0000000
--- a/vendor/github.com/google/gopacket/afpacket/sockopt_linux_386.s
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-TEXT ·socketcall(SB),4,$0-36
- JMP syscall·socketcall(SB) \ No newline at end of file
diff --git a/vendor/github.com/google/gopacket/benchmark_test.go b/vendor/github.com/google/gopacket/benchmark_test.go
deleted file mode 100644
index 74a1d28..0000000
--- a/vendor/github.com/google/gopacket/benchmark_test.go
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package gopacket
-
-import (
- "runtime"
- "testing"
-)
-
-// A few benchmarks for figuring out exactly how fast some underlying Go
-// things are.
-
-type testError struct{}
-
-func (t *testError) Error() string { return "abc" }
-
-func BenchmarkTypeAssertion(b *testing.B) {
- var e error = &testError{}
- for i := 0; i < b.N; i++ {
- _, _ = e.(*testError)
- }
-}
-
-func BenchmarkMapLookup(b *testing.B) {
- m := map[LayerType]bool{
- LayerTypePayload: true,
- }
- for i := 0; i < b.N; i++ {
- _ = m[LayerTypePayload]
- }
-}
-
-func BenchmarkNilMapLookup(b *testing.B) {
- var m map[LayerType]bool
- for i := 0; i < b.N; i++ {
- _ = m[LayerTypePayload]
- }
-}
-
-func BenchmarkNilMapLookupWithNilCheck(b *testing.B) {
- var m map[LayerType]bool
- for i := 0; i < b.N; i++ {
- if m != nil {
- _ = m[LayerTypePayload]
- }
- }
-}
-
-func BenchmarkArrayLookup(b *testing.B) {
- m := make([]bool, 100)
- for i := 0; i < b.N; i++ {
- _ = m[LayerTypePayload]
- }
-}
-
-var testError1 = &testError{}
-var testError2 error = testError1
-
-func BenchmarkTypeToInterface1(b *testing.B) {
- var e error
- for i := 0; i < b.N; i++ {
- e = testError1
- }
- // Have to do someting with 'e' or the compiler complains about an unused
- // variable.
- testError2 = e
-}
-func BenchmarkTypeToInterface2(b *testing.B) {
- var e error
- for i := 0; i < b.N; i++ {
- e = testError2
- }
- // Have to do someting with 'e' or the compiler complains about an unused
- // variable.
- testError2 = e
-}
-
-var decodeOpts DecodeOptions
-
-func decodeOptsByValue(_ DecodeOptions) {}
-func decodeOptsByPointer(_ *DecodeOptions) {}
-func BenchmarkPassDecodeOptionsByValue(b *testing.B) {
- for i := 0; i < b.N; i++ {
- decodeOptsByValue(decodeOpts)
- }
-}
-func BenchmarkPassDecodeOptionsByPointer(b *testing.B) {
- for i := 0; i < b.N; i++ {
- decodeOptsByPointer(&decodeOpts)
- }
-}
-
-func BenchmarkLockOSThread(b *testing.B) {
- for i := 0; i < b.N; i++ {
- runtime.LockOSThread()
- }
-}
-func BenchmarkUnlockOSThread(b *testing.B) {
- for i := 0; i < b.N; i++ {
- runtime.UnlockOSThread()
- }
-}
-func lockUnlock() {
- runtime.LockOSThread()
- runtime.UnlockOSThread()
-}
-func lockDeferUnlock() {
- runtime.LockOSThread()
- defer runtime.UnlockOSThread()
-}
-func BenchmarkLockUnlockOSThread(b *testing.B) {
- for i := 0; i < b.N; i++ {
- lockUnlock()
- }
-}
-func BenchmarkLockDeferUnlockOSThread(b *testing.B) {
- for i := 0; i < b.N; i++ {
- lockDeferUnlock()
- }
-}
-
-func BenchmarkUnbufferedChannel(b *testing.B) {
- ca := make(chan bool)
- cb := make(chan bool)
- defer close(ca)
- go func() {
- defer close(cb)
- for _ = range ca {
- cb <- true
- }
- }()
- for i := 0; i < b.N; i++ {
- ca <- true
- <-cb
- }
-}
-func BenchmarkSmallBufferedChannel(b *testing.B) {
- ca := make(chan bool, 1)
- cb := make(chan bool, 1)
- defer close(ca)
- go func() {
- defer close(cb)
- for _ = range ca {
- cb <- true
- }
- }()
- for i := 0; i < b.N; i++ {
- ca <- true
- <-cb
- }
-}
-func BenchmarkLargeBufferedChannel(b *testing.B) {
- ca := make(chan bool, 1000)
- cb := make(chan bool, 1000)
- defer close(ca)
- go func() {
- defer close(cb)
- for _ = range ca {
- cb <- true
- }
- }()
- for i := 0; i < b.N; i++ {
- ca <- true
- <-cb
- }
-}
-func BenchmarkEndpointFastHashShort(b *testing.B) {
- e := Endpoint{typ: 1, len: 2}
- for i := 0; i < b.N; i++ {
- e.FastHash()
- }
-}
-func BenchmarkEndpointFastHashLong(b *testing.B) {
- e := Endpoint{typ: 1, len: 16}
- for i := 0; i < b.N; i++ {
- e.FastHash()
- }
-}
-func BenchmarkFlowFastHashShort(b *testing.B) {
- e := Flow{typ: 1, slen: 2, dlen: 2}
- for i := 0; i < b.N; i++ {
- e.FastHash()
- }
-}
-func BenchmarkFlowFastHashLong(b *testing.B) {
- e := Flow{typ: 1, slen: 16, dlen: 16}
- for i := 0; i < b.N; i++ {
- e.FastHash()
- }
-}
diff --git a/vendor/github.com/google/gopacket/bsdbpf/bsd_bpf_sniffer.go b/vendor/github.com/google/gopacket/bsdbpf/bsd_bpf_sniffer.go
deleted file mode 100644
index 3e1da0b..0000000
--- a/vendor/github.com/google/gopacket/bsdbpf/bsd_bpf_sniffer.go
+++ /dev/null
@@ -1,215 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build darwin dragonfly freebsd netbsd openbsd
-
-package bsdbpf
-
-import (
- "errors"
- "fmt"
- "syscall"
- "time"
- "unsafe"
-
- "github.com/google/gopacket"
- "golang.org/x/sys/unix"
-)
-
-const wordSize = int(unsafe.Sizeof(uintptr(0)))
-
-func bpfWordAlign(x int) int {
- return (((x) + (wordSize - 1)) &^ (wordSize - 1))
-}
-
-// Options is used to configure various properties of the BPF sniffer.
-// Default values are used when a nil Options pointer is passed to NewBPFSniffer.
-type Options struct {
- // BPFDeviceName is name of the bpf device to use for sniffing
- // the network device. The default value of BPFDeviceName is empty string
- // which causes the first available BPF device file /dev/bpfX to be used.
- BPFDeviceName string
- // ReadBufLen specifies the size of the buffer used to read packets
- // off the wire such that multiple packets are buffered with each read syscall.
- // Note that an individual packet larger than the buffer size is necessarily truncated.
- // A larger buffer should increase performance because fewer read syscalls would be made.
- // If zero is used, the system's default buffer length will be used which depending on the
- // system may default to 4096 bytes which is not big enough to accomodate some link layers
- // such as WLAN (802.11).
- // ReadBufLen defaults to 32767... however typical BSD manual pages for BPF indicate that
- // if the requested buffer size cannot be accommodated, the closest allowable size will be
- // set and returned... hence our GetReadBufLen method.
- ReadBufLen int
- // Timeout is the length of time to wait before timing out on a read request.
- // Timeout defaults to nil which means no timeout is used.
- Timeout *syscall.Timeval
- // Promisc is set to true for promiscuous mode ethernet sniffing.
- // Promisc defaults to true.
- Promisc bool
- // Immediate is set to true to make our read requests return as soon as a packet becomes available.
- // Otherwise, a read will block until either the kernel buffer becomes full or a timeout occurs.
- // The default is true.
- Immediate bool
- // PreserveLinkAddr is set to false if the link level source address should be filled in automatically
- // by the interface output routine. Set to true if the link level source address will be written,
- // as provided, to the wire.
- // The default is true.
- PreserveLinkAddr bool
-}
-
-var defaultOptions = Options{
- BPFDeviceName: "",
- ReadBufLen: 32767,
- Timeout: nil,
- Promisc: true,
- Immediate: true,
- PreserveLinkAddr: true,
-}
-
-// BPFSniffer is a struct used to track state of a BSD BPF ethernet sniffer
-// such that gopacket's PacketDataSource interface is implemented.
-type BPFSniffer struct {
- options *Options
- sniffDeviceName string
- fd int
- readBuffer []byte
- lastReadLen int
- readBytesConsumed int
-}
-
-// NewBPFSniffer is used to create BSD-only BPF ethernet sniffer
-// iface is the network interface device name that you wish to sniff
-// options can set to nil in order to utilize default values for everything.
-// Each field of Options also have a default setting if left unspecified by
-// the user's custome Options struct.
-func NewBPFSniffer(iface string, options *Options) (*BPFSniffer, error) {
- var err error
- enable := 1
- sniffer := BPFSniffer{
- sniffDeviceName: iface,
- }
- if options == nil {
- sniffer.options = &defaultOptions
- } else {
- sniffer.options = options
- }
-
- if sniffer.options.BPFDeviceName == "" {
- sniffer.pickBpfDevice()
- }
-
- // setup our read buffer
- if sniffer.options.ReadBufLen == 0 {
- sniffer.options.ReadBufLen, err = syscall.BpfBuflen(sniffer.fd)
- if err != nil {
- return nil, err
- }
- } else {
- sniffer.options.ReadBufLen, err = syscall.SetBpfBuflen(sniffer.fd, sniffer.options.ReadBufLen)
- if err != nil {
- return nil, err
- }
- }
- sniffer.readBuffer = make([]byte, sniffer.options.ReadBufLen)
-
- err = syscall.SetBpfInterface(sniffer.fd, sniffer.sniffDeviceName)
- if err != nil {
- return nil, err
- }
-
- if sniffer.options.Immediate {
- // turn immediate mode on. This makes the snffer non-blocking.
- err = syscall.SetBpfImmediate(sniffer.fd, enable)
- if err != nil {
- return nil, err
- }
- }
-
- // the above call to syscall.SetBpfImmediate needs to be made
- // before setting a timer otherwise the reads will block for the
- // entire timer duration even if there are packets to return.
- if sniffer.options.Timeout != nil {
- err = syscall.SetBpfTimeout(sniffer.fd, sniffer.options.Timeout)
- if err != nil {
- return nil, err
- }
- }
-
- if sniffer.options.PreserveLinkAddr {
- // preserves the link level source address...
- // higher level protocol analyzers will not need this
- err = syscall.SetBpfHeadercmpl(sniffer.fd, enable)
- if err != nil {
- return nil, err
- }
- }
-
- if sniffer.options.Promisc {
- // forces the interface into promiscuous mode
- err = syscall.SetBpfPromisc(sniffer.fd, enable)
- if err != nil {
- return nil, err
- }
- }
-
- return &sniffer, nil
-}
-
-// Close is used to close the file-descriptor of the BPF device file.
-func (b *BPFSniffer) Close() error {
- return syscall.Close(b.fd)
-}
-
-func (b *BPFSniffer) pickBpfDevice() {
- var err error
- b.options.BPFDeviceName = ""
- for i := 0; i < 99; i++ {
- b.options.BPFDeviceName = fmt.Sprintf("/dev/bpf%d", i)
- b.fd, err = syscall.Open(b.options.BPFDeviceName, syscall.O_RDWR, 0)
- if err == nil {
- return
- }
- }
- panic("failed to acquire a BPF device for read-write access")
-}
-
-func (b *BPFSniffer) ReadPacketData() ([]byte, gopacket.CaptureInfo, error) {
- var err error
- if b.readBytesConsumed >= b.lastReadLen {
- b.readBytesConsumed = 0
- b.readBuffer = make([]byte, b.options.ReadBufLen)
- b.lastReadLen, err = syscall.Read(b.fd, b.readBuffer)
- if err != nil {
- b.lastReadLen = 0
- return nil, gopacket.CaptureInfo{}, err
- }
- }
- hdr := (*unix.BpfHdr)(unsafe.Pointer(&b.readBuffer[b.readBytesConsumed]))
- frameStart := b.readBytesConsumed + int(hdr.Hdrlen)
- b.readBytesConsumed += bpfWordAlign(int(hdr.Hdrlen) + int(hdr.Caplen))
-
- if frameStart+int(hdr.Caplen) > len(b.readBuffer) {
- captureInfo := gopacket.CaptureInfo{
- Timestamp: time.Unix(int64(hdr.Tstamp.Sec), int64(hdr.Tstamp.Usec)*1000),
- CaptureLength: 0,
- Length: 0,
- }
- return nil, captureInfo, errors.New("BPF captured frame received with corrupted BpfHdr struct.")
- }
-
- rawFrame := b.readBuffer[frameStart : frameStart+int(hdr.Caplen)]
- captureInfo := gopacket.CaptureInfo{
- Timestamp: time.Unix(int64(hdr.Tstamp.Sec), int64(hdr.Tstamp.Usec)*1000),
- CaptureLength: len(rawFrame),
- Length: len(rawFrame),
- }
- return rawFrame, captureInfo, nil
-}
-
-// GetReadBufLen returns the BPF read buffer length
-func (b *BPFSniffer) GetReadBufLen() int {
- return b.options.ReadBufLen
-}
diff --git a/vendor/github.com/google/gopacket/bytediff/bytediff.go b/vendor/github.com/google/gopacket/bytediff/bytediff.go
deleted file mode 100644
index 63addd9..0000000
--- a/vendor/github.com/google/gopacket/bytediff/bytediff.go
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package bytediff provides a simple diff utility for looking at differences in byte
-// slices. It's slow, clunky, and not particularly good by any measure, but
-// it does provide very useful visualizations for diffs between small byte
-// slices.
-//
-// Our diff algorithm uses a dynamic programming implementation of longest common
-// substring to find matching parts of slices, then recursively calls itself on
-// the prefix/suffix of that matching part for each packet. This is a Bad Idea
-// (tm) for normal (especially large) input, but for packets where large portions
-// repeat frequently and we expect minor changes between results, it's actually
-// quite useful.
-package bytediff
-
-import (
- "bytes"
- "fmt"
-)
-
-// OutputFormat tells a Differences.String call how to format the set of
-// differences into a human-readable string. Its internals are currently
-// unexported because we may want to change them drastically in the future. For
-// the moment, please just use one of the provided OutputFormats that comes with
-// this library.
-type OutputFormat struct {
- start, finish, add, remove, change, reset string
-}
-
-var (
- // BashOutput uses bash escape sequences to color output.
- BashOutput = &OutputFormat{
- reset: "\033[0m",
- remove: "\033[32m",
- add: "\033[31m",
- change: "\033[33m",
- }
- // HTMLOutput uses a <pre> to wrap output, and <span>s to color it.
- // HTMLOutput is pretty experimental, so use at your own risk ;)
- HTMLOutput = &OutputFormat{
- start: "<pre>",
- finish: "</pre>",
- reset: "</span>",
- remove: "<span style='color:red'>",
- add: "<span style='color:green'>",
- change: "<span style='color:yellow'>",
- }
-)
-
-// longestCommonSubstring uses a O(MN) dynamic programming approach to find the
-// longest common substring in a set of slices. It returns the index in each
-// slice at which the substring begins, plus the length of the commonality.
-func longestCommonSubstring(strA, strB []byte) (indexA, indexB, length int) {
- lenA, lenB := len(strA), len(strB)
- if lenA == 0 || lenB == 0 {
- return 0, 0, 0
- }
- arr := make([][]int, lenA)
- for i := 0; i < lenA; i++ {
- arr[i] = make([]int, lenB)
- }
- var maxLength int
- var maxA, maxB int
- for a := 0; a < lenA; a++ {
- for b := 0; b < lenB; b++ {
- if strA[a] == strB[b] {
- length := 1
- if a > 0 && b > 0 {
- length = arr[a-1][b-1] + 1
- }
- arr[a][b] = length
- if length > maxLength {
- maxLength = length
- maxA = a
- maxB = b
- }
- }
- }
- }
- a, b := maxA, maxB
- for a >= 0 && b >= 0 && strA[a] == strB[b] {
- indexA = a
- indexB = b
- a--
- b--
- length++
- }
- return
-}
-
-func intMax(a, b int) int {
- if a > b {
- return a
- }
- return b
-}
-
-// Difference represents a single part of the data being diffed, containing
-// information about both the original and new values.
-// From and To are the sets of bytes in the original and the new byte slice.
-// !Replace implies From == To (no change)
-// len(To) == 0 implies From is being deleted
-// len(From) == 0 implies To is being inserted
-// else implies From is being replaced by To
-type Difference struct {
- Replace bool
- From, To []byte
-}
-
-// color returns the bash color for a given difference.
-func (c *OutputFormat) color(d Difference) string {
- switch {
- case !d.Replace:
- return ""
- case len(d.From) == 0:
- return c.remove
- case len(d.To) == 0:
- return c.add
- default:
- return c.change
- }
-}
-
-// Diff diffs strA and strB, returning a list of differences which
-// can be used to construct either the original or new string.
-//
-// Diff is optimized for comparing VERY SHORT slices. It's meant for comparing
-// things like packets off the wire, not large files or the like.
-// As such, its runtime can be catastrophic if large inputs are passed in.
-// You've been warned.
-func Diff(strA, strB []byte) Differences {
- if len(strA) == 0 && len(strB) == 0 {
- return nil
- }
- ia, ib, l := longestCommonSubstring(strA, strB)
- if l == 0 {
- return Differences{
- Difference{true, strA, strB},
- }
- }
- beforeA, match, afterA := strA[:ia], strA[ia:ia+l], strA[ia+l:]
- beforeB, afterB := strB[:ib], strB[ib+l:]
- var diffs Differences
- diffs = append(diffs, Diff(beforeA, beforeB)...)
- diffs = append(diffs, Difference{false, match, match})
- diffs = append(diffs, Diff(afterA, afterB)...)
- return diffs
-}
-
-// Differences is a set of differences for a given diff'd pair of byte slices.
-type Differences []Difference
-
-// String outputs a previously diff'd set of strings, showing differences
-// between them, highlighted by colors.
-//
-// The output format of this function is NOT guaranteed consistent, and may be
-// changed at any time by the library authors. It's meant solely for human
-// consumption.
-func (c *OutputFormat) String(diffs Differences) string {
- var buf bytes.Buffer
- count := 0
- fmt.Fprintf(&buf, "%s", c.start)
- fmt.Fprintf(&buf, "00000000 ")
- for i := 0; i < len(diffs); i++ {
- diff := diffs[i]
- color := c.color(diff)
- reset := ""
- if color != "" {
- reset = c.reset
- }
- fmt.Fprint(&buf, color)
- for _, b := range diff.From {
- fmt.Fprintf(&buf, " %02x", b)
- count++
- switch count % 16 {
- case 0:
- fmt.Fprintf(&buf, "%v\n%08x%v ", reset, count, color)
- case 8:
- fmt.Fprintf(&buf, " ")
- }
- }
- fmt.Fprint(&buf, reset)
- }
- fmt.Fprintf(&buf, "\n\n00000000 ")
- count = 0
- for i := 0; i < len(diffs); i++ {
- diff := diffs[i]
- str := diff.From
- if diff.Replace {
- str = diff.To
- }
- color := c.color(diff)
- reset := ""
- if color != "" {
- reset = c.reset
- }
- fmt.Fprint(&buf, color)
- for _, b := range str {
- fmt.Fprintf(&buf, " %02x", b)
- count++
- switch count % 16 {
- case 0:
- fmt.Fprintf(&buf, "%v\n%08x%v ", reset, count, color)
- case 8:
- fmt.Fprintf(&buf, " ")
- }
- }
- fmt.Fprint(&buf, reset)
- }
- fmt.Fprint(&buf, "\n")
- fmt.Fprintf(&buf, "%s", c.finish)
- return string(buf.Bytes())
-}
diff --git a/vendor/github.com/google/gopacket/bytediff/bytediff_test.go b/vendor/github.com/google/gopacket/bytediff/bytediff_test.go
deleted file mode 100644
index 022ad4b..0000000
--- a/vendor/github.com/google/gopacket/bytediff/bytediff_test.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package bytediff
-
-import (
- "reflect"
- "testing"
-)
-
-func TestLCS(t *testing.T) {
- for i, test := range []struct {
- a, b []byte
- indexA, indexB, length int
- }{
- {[]byte{1, 2, 3}, []byte{1, 2, 3}, 0, 0, 3},
- {[]byte{0, 1, 2, 3}, []byte{1, 2, 3, 4}, 1, 0, 3},
- {[]byte{0, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3}, []byte{1, 2, 3, 4}, 4, 0, 4},
- {[]byte{1, 2, 2, 3, 4}, []byte{1, 2, 3, 4}, 2, 1, 3},
- {[]byte{0, 1, 2, 3, 4}, []byte{1, 1, 2, 2, 3, 4}, 2, 3, 3},
- } {
- ia, ib, l := longestCommonSubstring(test.a, test.b)
- if ia != test.indexA || ib != test.indexB || l != test.length {
- t.Errorf("%d: want (%d %d %d) got (%d %d %d)", i, test.indexA, test.indexB, test.length, ia, ib, l)
- }
- }
-}
-
-func TestDiff(t *testing.T) {
- for i, test := range []struct {
- a, b []byte
- d Differences
- }{
- {
- []byte{0, 1, 2, 3, 4},
- []byte{1, 1, 2, 2, 3, 4},
- Differences{
- Difference{true, []byte{0}, []byte{}},
- Difference{false, []byte{1}, []byte{1}},
- Difference{true, []byte{}, []byte{1, 2}},
- Difference{false, []byte{2, 3, 4}, []byte{2, 3, 4}},
- },
- },
- } {
- diffs := Diff(test.a, test.b)
- if !reflect.DeepEqual(diffs, test.d) {
- t.Errorf("%d want %v got %v", i, test.d, diffs)
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/dumpcommand/tcpdump.go b/vendor/github.com/google/gopacket/dumpcommand/tcpdump.go
deleted file mode 100644
index 2d35722..0000000
--- a/vendor/github.com/google/gopacket/dumpcommand/tcpdump.go
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package dumpcommand implements a run function for pfdump and pcapdump
-// with many similar flags/features to tcpdump. This code is split out seperate
-// from data sources (pcap/pfring) so it can be used by both.
-package dumpcommand
-
-import (
- "flag"
- "fmt"
- "log"
- "os"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/ip4defrag"
- "github.com/google/gopacket/layers" // pulls in all layers decoders
-)
-
-var (
- print = flag.Bool("print", true, "Print out packets, if false only prints out statistics")
- maxcount = flag.Int("c", -1, "Only grab this many packets, then exit")
- decoder = flag.String("decoder", "Ethernet", "Name of the decoder to use")
- dump = flag.Bool("X", false, "If true, dump very verbose info on each packet")
- statsevery = flag.Int("stats", 1000, "Output statistics every N packets")
- printErrors = flag.Bool("errors", false, "Print out packet dumps of decode errors, useful for checking decoders against live traffic")
- lazy = flag.Bool("lazy", false, "If true, do lazy decoding")
- defrag = flag.Bool("defrag", false, "If true, do IPv4 defrag")
-)
-
-func Run(src gopacket.PacketDataSource) {
- if !flag.Parsed() {
- log.Fatalln("Run called without flags.Parse() being called")
- }
- var dec gopacket.Decoder
- var ok bool
- if dec, ok = gopacket.DecodersByLayerName[*decoder]; !ok {
- log.Fatalln("No decoder named", *decoder)
- }
- source := gopacket.NewPacketSource(src, dec)
- source.Lazy = *lazy
- source.NoCopy = true
- source.DecodeStreamsAsDatagrams = true
- fmt.Fprintln(os.Stderr, "Starting to read packets")
- count := 0
- bytes := int64(0)
- start := time.Now()
- errors := 0
- truncated := 0
- layertypes := map[gopacket.LayerType]int{}
- defragger := ip4defrag.NewIPv4Defragmenter()
-
- for packet := range source.Packets() {
- count++
- bytes += int64(len(packet.Data()))
-
- // defrag the IPv4 packet if required
- if *defrag {
- ip4Layer := packet.Layer(layers.LayerTypeIPv4)
- if ip4Layer == nil {
- continue
- }
- ip4 := ip4Layer.(*layers.IPv4)
- l := ip4.Length
-
- newip4, err := defragger.DefragIPv4(ip4)
- if err != nil {
- log.Fatalln("Error while de-fragmenting", err)
- } else if newip4 == nil {
- continue // packet fragment, we don't have whole packet yet.
- }
- if newip4.Length != l {
- fmt.Printf("Decoding re-assembled packet: %s\n", newip4.NextLayerType())
- pb, ok := packet.(gopacket.PacketBuilder)
- if !ok {
- panic("Not a PacketBuilder")
- }
- nextDecoder := newip4.NextLayerType()
- nextDecoder.Decode(newip4.Payload, pb)
- }
- }
-
- if *dump {
- fmt.Println(packet.Dump())
- } else if *print {
- fmt.Println(packet)
- }
- if !*lazy || *print || *dump { // if we've already decoded all layers...
- for _, layer := range packet.Layers() {
- layertypes[layer.LayerType()]++
- }
- if packet.Metadata().Truncated {
- truncated++
- }
- if errLayer := packet.ErrorLayer(); errLayer != nil {
- errors++
- if *printErrors {
- fmt.Println("Error:", errLayer.Error())
- fmt.Println("--- Packet ---")
- fmt.Println(packet.Dump())
- }
- }
- }
- done := *maxcount > 0 && count >= *maxcount
- if count%*statsevery == 0 || done {
- fmt.Fprintf(os.Stderr, "Processed %v packets (%v bytes) in %v, %v errors and %v truncated packets\n", count, bytes, time.Since(start), errors, truncated)
- if len(layertypes) > 0 {
- fmt.Fprintf(os.Stderr, "Layer types seen: %+v\n", layertypes)
- }
- }
- if done {
- break
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/examples/arpscan/arpscan.go b/vendor/github.com/google/gopacket/examples/arpscan/arpscan.go
deleted file mode 100644
index 1a0e33e..0000000
--- a/vendor/github.com/google/gopacket/examples/arpscan/arpscan.go
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// arpscan implements ARP scanning of all interfaces' local networks using
-// gopacket and its subpackages. This example shows, among other things:
-// * Generating and sending packet data
-// * Reading in packet data and interpreting it
-// * Use of the 'pcap' subpackage for reading/writing
-package main
-
-import (
- "bytes"
- "encoding/binary"
- "errors"
- "log"
- "net"
- "sync"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
- "github.com/google/gopacket/pcap"
-)
-
-func main() {
- // Get a list of all interfaces.
- ifaces, err := net.Interfaces()
- if err != nil {
- panic(err)
- }
-
- var wg sync.WaitGroup
- for _, iface := range ifaces {
- wg.Add(1)
- // Start up a scan on each interface.
- go func(iface net.Interface) {
- defer wg.Done()
- if err := scan(&iface); err != nil {
- log.Printf("interface %v: %v", iface.Name, err)
- }
- }(iface)
- }
- // Wait for all interfaces' scans to complete. They'll try to run
- // forever, but will stop on an error, so if we get past this Wait
- // it means all attempts to write have failed.
- wg.Wait()
-}
-
-// scan scans an individual interface's local network for machines using ARP requests/replies.
-//
-// scan loops forever, sending packets out regularly. It returns an error if
-// it's ever unable to write a packet.
-func scan(iface *net.Interface) error {
- // We just look for IPv4 addresses, so try to find if the interface has one.
- var addr *net.IPNet
- if addrs, err := iface.Addrs(); err != nil {
- return err
- } else {
- for _, a := range addrs {
- if ipnet, ok := a.(*net.IPNet); ok {
- if ip4 := ipnet.IP.To4(); ip4 != nil {
- addr = &net.IPNet{
- IP: ip4,
- Mask: ipnet.Mask[len(ipnet.Mask)-4:],
- }
- break
- }
- }
- }
- }
- // Sanity-check that the interface has a good address.
- if addr == nil {
- return errors.New("no good IP network found")
- } else if addr.IP[0] == 127 {
- return errors.New("skipping localhost")
- } else if addr.Mask[0] != 0xff || addr.Mask[1] != 0xff {
- return errors.New("mask means network is too large")
- }
- log.Printf("Using network range %v for interface %v", addr, iface.Name)
-
- // Open up a pcap handle for packet reads/writes.
- handle, err := pcap.OpenLive(iface.Name, 65536, true, pcap.BlockForever)
- if err != nil {
- return err
- }
- defer handle.Close()
-
- // Start up a goroutine to read in packet data.
- stop := make(chan struct{})
- go readARP(handle, iface, stop)
- defer close(stop)
- for {
- // Write our scan packets out to the handle.
- if err := writeARP(handle, iface, addr); err != nil {
- log.Printf("error writing packets on %v: %v", iface.Name, err)
- return err
- }
- // We don't know exactly how long it'll take for packets to be
- // sent back to us, but 10 seconds should be more than enough
- // time ;)
- time.Sleep(10 * time.Second)
- }
-}
-
-// readARP watches a handle for incoming ARP responses we might care about, and prints them.
-//
-// readARP loops until 'stop' is closed.
-func readARP(handle *pcap.Handle, iface *net.Interface, stop chan struct{}) {
- src := gopacket.NewPacketSource(handle, layers.LayerTypeEthernet)
- in := src.Packets()
- for {
- var packet gopacket.Packet
- select {
- case <-stop:
- return
- case packet = <-in:
- arpLayer := packet.Layer(layers.LayerTypeARP)
- if arpLayer == nil {
- continue
- }
- arp := arpLayer.(*layers.ARP)
- if arp.Operation != layers.ARPReply || bytes.Equal([]byte(iface.HardwareAddr), arp.SourceHwAddress) {
- // This is a packet I sent.
- continue
- }
- // Note: we might get some packets here that aren't responses to ones we've sent,
- // if for example someone else sends US an ARP request. Doesn't much matter, though...
- // all information is good information :)
- log.Printf("IP %v is at %v", net.IP(arp.SourceProtAddress), net.HardwareAddr(arp.SourceHwAddress))
- }
- }
-}
-
-// writeARP writes an ARP request for each address on our local network to the
-// pcap handle.
-func writeARP(handle *pcap.Handle, iface *net.Interface, addr *net.IPNet) error {
- // Set up all the layers' fields we can.
- eth := layers.Ethernet{
- SrcMAC: iface.HardwareAddr,
- DstMAC: net.HardwareAddr{0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
- EthernetType: layers.EthernetTypeARP,
- }
- arp := layers.ARP{
- AddrType: layers.LinkTypeEthernet,
- Protocol: layers.EthernetTypeIPv4,
- HwAddressSize: 6,
- ProtAddressSize: 4,
- Operation: layers.ARPRequest,
- SourceHwAddress: []byte(iface.HardwareAddr),
- SourceProtAddress: []byte(addr.IP),
- DstHwAddress: []byte{0, 0, 0, 0, 0, 0},
- }
- // Set up buffer and options for serialization.
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{
- FixLengths: true,
- ComputeChecksums: true,
- }
- // Send one packet for every address.
- for _, ip := range ips(addr) {
- arp.DstProtAddress = []byte(ip)
- gopacket.SerializeLayers(buf, opts, &eth, &arp)
- if err := handle.WritePacketData(buf.Bytes()); err != nil {
- return err
- }
- }
- return nil
-}
-
-// ips is a simple and not very good method for getting all IPv4 addresses from a
-// net.IPNet. It returns all IPs it can over the channel it sends back, closing
-// the channel when done.
-func ips(n *net.IPNet) (out []net.IP) {
- num := binary.BigEndian.Uint32([]byte(n.IP))
- mask := binary.BigEndian.Uint32([]byte(n.Mask))
- num &= mask
- for mask < 0xffffffff {
- var buf [4]byte
- binary.BigEndian.PutUint32(buf[:], num)
- out = append(out, net.IP(buf[:]))
- mask += 1
- num += 1
- }
- return
-}
diff --git a/vendor/github.com/google/gopacket/examples/bidirectional/main.go b/vendor/github.com/google/gopacket/examples/bidirectional/main.go
deleted file mode 100644
index 4b0b240..0000000
--- a/vendor/github.com/google/gopacket/examples/bidirectional/main.go
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This binary provides an example of connecting up bidirectional streams from
-// the unidirectional streams provided by gopacket/tcpassembly.
-package main
-
-import (
- "flag"
- "fmt"
- "github.com/google/gopacket"
- "github.com/google/gopacket/examples/util"
- "github.com/google/gopacket/layers"
- "github.com/google/gopacket/pcap"
- "github.com/google/gopacket/tcpassembly"
- "log"
- "time"
-)
-
-var iface = flag.String("i", "eth0", "Interface to get packets from")
-var snaplen = flag.Int("s", 16<<10, "SnapLen for pcap packet capture")
-var filter = flag.String("f", "tcp", "BPF filter for pcap")
-var logAllPackets = flag.Bool("v", false, "Logs every packet in great detail")
-
-// key is used to map bidirectional streams to each other.
-type key struct {
- net, transport gopacket.Flow
-}
-
-// String prints out the key in a human-readable fashion.
-func (k key) String() string {
- return fmt.Sprintf("%v:%v", k.net, k.transport)
-}
-
-// timeout is the length of time to wait befor flushing connections and
-// bidirectional stream pairs.
-const timeout time.Duration = time.Minute * 5
-
-// myStream implements tcpassembly.Stream
-type myStream struct {
- bytes int64 // total bytes seen on this stream.
- bidi *bidi // maps to my bidirectional twin.
- done bool // if true, we've seen the last packet we're going to for this stream.
-}
-
-// bidi stores each unidirectional side of a bidirectional stream.
-//
-// When a new stream comes in, if we don't have an opposite stream, a bidi is
-// created with 'a' set to the new stream. If we DO have an opposite stream,
-// 'b' is set to the new stream.
-type bidi struct {
- key key // Key of the first stream, mostly for logging.
- a, b *myStream // the two bidirectional streams.
- lastPacketSeen time.Time // last time we saw a packet from either stream.
-}
-
-// myFactory implements tcpassmebly.StreamFactory
-type myFactory struct {
- // bidiMap maps keys to bidirectional stream pairs.
- bidiMap map[key]*bidi
-}
-
-// New handles creating a new tcpassembly.Stream.
-func (f *myFactory) New(netFlow, tcpFlow gopacket.Flow) tcpassembly.Stream {
- // Create a new stream.
- s := &myStream{}
-
- // Find the bidi bidirectional struct for this stream, creating a new one if
- // one doesn't already exist in the map.
- k := key{netFlow, tcpFlow}
- bd := f.bidiMap[k]
- if bd == nil {
- bd = &bidi{a: s, key: k}
- log.Printf("[%v] created first side of bidirectional stream", bd.key)
- // Register bidirectional with the reverse key, so the matching stream going
- // the other direction will find it.
- f.bidiMap[key{netFlow.Reverse(), tcpFlow.Reverse()}] = bd
- } else {
- log.Printf("[%v] found second side of bidirectional stream", bd.key)
- bd.b = s
- // Clear out the bidi we're using from the map, just in case.
- delete(f.bidiMap, k)
- }
- s.bidi = bd
- return s
-}
-
-// emptyStream is used to finish bidi that only have one stream, in
-// collectOldStreams.
-var emptyStream = &myStream{done: true}
-
-// collectOldStreams finds any streams that haven't received a packet within
-// 'timeout', and sets/finishes the 'b' stream inside them. The 'a' stream may
-// still receive packets after this.
-func (f *myFactory) collectOldStreams() {
- cutoff := time.Now().Add(-timeout)
- for k, bd := range f.bidiMap {
- if bd.lastPacketSeen.Before(cutoff) {
- log.Printf("[%v] timing out old stream", bd.key)
- bd.b = emptyStream // stub out b with an empty stream.
- delete(f.bidiMap, k) // remove it from our map.
- bd.maybeFinish() // if b was the last stream we were waiting for, finish up.
- }
- }
-}
-
-// Reassembled handles reassembled TCP stream data.
-func (s *myStream) Reassembled(rs []tcpassembly.Reassembly) {
- for _, r := range rs {
- // For now, we'll simply count the bytes on each side of the TCP stream.
- s.bytes += int64(len(r.Bytes))
- if r.Skip > 0 {
- s.bytes += int64(r.Skip)
- }
- // Mark that we've received new packet data.
- // We could just use time.Now, but by using r.Seen we handle the case
- // where packets are being read from a file and could be very old.
- if s.bidi.lastPacketSeen.After(r.Seen) {
- s.bidi.lastPacketSeen = r.Seen
- }
- }
-}
-
-// ReassemblyComplete marks this stream as finished.
-func (s *myStream) ReassemblyComplete() {
- s.done = true
- s.bidi.maybeFinish()
-}
-
-// maybeFinish will wait until both directions are complete, then print out
-// stats.
-func (bd *bidi) maybeFinish() {
- switch {
- case bd.a == nil:
- log.Fatalf("[%v] a should always be non-nil, since it's set when bidis are created", bd.key)
- case !bd.a.done:
- log.Printf("[%v] still waiting on first stream", bd.key)
- case bd.b == nil:
- log.Printf("[%v] no second stream yet", bd.key)
- case !bd.b.done:
- log.Printf("[%v] still waiting on second stream", bd.key)
- default:
- log.Printf("[%v] FINISHED, bytes: %d tx, %d rx", bd.key, bd.a.bytes, bd.b.bytes)
- }
-}
-
-func main() {
- defer util.Run()()
- log.Printf("starting capture on interface %q", *iface)
- // Set up pcap packet capture
- handle, err := pcap.OpenLive(*iface, int32(*snaplen), true, pcap.BlockForever)
- if err != nil {
- panic(err)
- }
- if err := handle.SetBPFFilter(*filter); err != nil {
- panic(err)
- }
-
- // Set up assembly
- streamFactory := &myFactory{bidiMap: make(map[key]*bidi)}
- streamPool := tcpassembly.NewStreamPool(streamFactory)
- assembler := tcpassembly.NewAssembler(streamPool)
-
- log.Println("reading in packets")
- // Read in packets, pass to assembler.
- packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
- packets := packetSource.Packets()
- ticker := time.Tick(timeout / 4)
- for {
- select {
- case packet := <-packets:
- if *logAllPackets {
- log.Println(packet)
- }
- if packet.NetworkLayer() == nil || packet.TransportLayer() == nil || packet.TransportLayer().LayerType() != layers.LayerTypeTCP {
- log.Println("Unusable packet")
- continue
- }
- tcp := packet.TransportLayer().(*layers.TCP)
- assembler.AssembleWithTimestamp(packet.NetworkLayer().NetworkFlow(), tcp, packet.Metadata().Timestamp)
-
- case <-ticker:
- // Every minute, flush connections that haven't seen activity in the past minute.
- log.Println("---- FLUSHING ----")
- assembler.FlushOlderThan(time.Now().Add(-timeout))
- streamFactory.collectOldStreams()
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/examples/bytediff/bytediff.png b/vendor/github.com/google/gopacket/examples/bytediff/bytediff.png
deleted file mode 100644
index 5aa3c8a..0000000
--- a/vendor/github.com/google/gopacket/examples/bytediff/bytediff.png
+++ /dev/null
Binary files differ
diff --git a/vendor/github.com/google/gopacket/examples/bytediff/main.go b/vendor/github.com/google/gopacket/examples/bytediff/main.go
deleted file mode 100644
index 2a4c11b..0000000
--- a/vendor/github.com/google/gopacket/examples/bytediff/main.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This binary shows how to display byte differences to users via the bytediff
-// library.
-package main
-
-import (
- "fmt"
- "github.com/google/gopacket/bytediff"
-)
-
-var sliceA = []byte{
- 0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x20, 0xbc, 0x30, 0x5b, 0xe8, 0xd3, 0x49,
- 0x08, 0x00, 0x45, 0x00, 0x01, 0xa4, 0x39, 0xdf, 0x40, 0x00, 0x40, 0x06,
- 0x55, 0x5a, 0xac, 0x11, 0x51, 0x49, 0xad, 0xde, 0xfe, 0xe1, 0xc5, 0xf7,
- 0x00, 0x50, 0xc5, 0x7e, 0x0e, 0x48, 0x49, 0x07, 0x42, 0x32, 0x80, 0x18,
- 0x00, 0x73, 0x9a, 0x8f, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x03, 0x77,
- 0x37, 0x9c, 0x42, 0x77, 0x5e, 0x3a, 0x47, 0x45, 0x54, 0x20, 0x2f, 0x20,
- 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x48, 0x6f,
- 0x73, 0x74, 0x3a, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x69, 0x73, 0x68,
- 0x2e, 0x63, 0x6f, 0x6d, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x6b, 0x65, 0x65, 0x70, 0x2d, 0x61,
- 0x6c, 0x69, 0x76, 0x65, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41,
- 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c,
- 0x61, 0x2f, 0x35, 0x2e, 0x30, 0x20, 0x28, 0x58, 0x31, 0x31, 0x3b, 0x20,
- 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x20, 0x78, 0x38, 0x36, 0x5f, 0x36, 0x34,
- 0x29, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x57, 0x65, 0x62, 0x4b, 0x69,
- 0x74, 0x2f, 0x35, 0x33, 0x35, 0x2e, 0x32, 0x20, 0x28, 0x4b, 0x48, 0x54,
- 0x4d, 0x4c, 0x2c, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x47, 0x65, 0x63,
- 0x6b, 0x6f, 0x29, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2f, 0x31,
- 0x35, 0x2e, 0x30, 0x2e, 0x38, 0x37, 0x34, 0x2e, 0x31, 0x32, 0x31, 0x20,
- 0x53, 0x61, 0x66, 0x61, 0x72, 0x69, 0x2f, 0x35, 0x2e, 0x31,
- 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x74, 0x65,
- 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c,
- 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x68, 0x74, 0x6d,
- 0x6c, 0x2b, 0x78, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x6d, 0x6c, 0x3b, 0x71, 0x3d,
- 0x30, 0x2e, 0x39, 0x2c, 0x2a, 0x2f, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e,
- 0x38, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x45, 0x6e,
- 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x67, 0x7a, 0x69, 0x70,
- 0x2c, 0x64, 0x65, 0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, 0x63,
- 0x68, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x4c, 0x61,
- 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x65, 0x6e, 0x2d, 0x55,
- 0x53, 0x2c, 0x65, 0x6e, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x38, 0x0d, 0x0a,
- 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x43, 0x68, 0x61, 0x72, 0x73,
- 0x65, 0x74, 0x3a, 0x20, 0x49, 0x53, 0x4f, 0x2d, 0x38, 0x38, 0x35, 0x39,
- 0x2d, 0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x3b, 0x71, 0x3d, 0x30,
- 0x2e, 0x37, 0x2c, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x33, 0x0d, 0x0a,
- 0x0d, 0x0a,
-}
-var sliceB = []byte{
- 0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x20, 0xbc, 0x30, 0x5b, 0xe8, 0xd3, 0x49,
- 0x08, 0x00, 0x45, 0x00, 0x01, 0xa4, 0x39, 0xdf, 0x40, 0x00, 0x40, 0x06,
- 0x55, 0x5a, 0xac, 0x11, 0x51, 0x49, 0xad, 0xde, 0xfe, 0xe1, 0xc5, 0xf7,
- 0x00, 0x50, 0xc5, 0x7e, 0x0e, 0x48, 0x49, 0x07, 0x42, 0x32, 0x80, 0x18,
- 0x00, 0x73, 0x9a, 0x8f, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x03, 0x77,
- 0x37, 0x9c, 0x42, 0x77, 0x5e, 0x3a, 0x47, 0x45, 0x54, 0x20, 0x2f, 0x20,
- 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x48, 0x6f,
- 0x73, 0x74, 0x3a, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x69, 0x73, 0x68,
- 0x2e, 0x63, 0x6f, 0x6d, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
- 0x6c, 0x69, 0x76, 0x65, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41,
- 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c,
- 0x61, 0x2f, 0x35, 0x2e, 0x30, 0x20, 0x28, 0x58, 0x31, 0x31, 0x3b, 0x20,
- 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x20, 0x78, 0x38, 0x36, 0x5f, 0x36, 0x34,
- 0x29, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x57, 0x65, 0x62, 0x4b, 0x69,
- 0x74, 0x2f, 0x35, 0x33, 0x35, 0x2e, 0x32, 0x20, 0x28, 0x4b, 0x48, 0x54,
- 0x4d, 0x4c, 0x2c, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x47, 0x65, 0x63,
- 0x6b, 0x6f, 0x29, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2f, 0x31,
- 0x35, 0x2e, 0x30, 0x2e, 0x38, 0x37, 0x34, 0x2e, 0x31, 0x32, 0x31, 0x20,
- 0x53, 0x61, 0x66, 0x61, 0x72, 0x69, 0x2f, 0x35, 0x33, 0x35, 0x2e, 0x32,
- 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x74, 0x65,
- 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c,
- 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x68, 0x74, 0x6d,
- 0x6c, 0x2b, 0x78, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x6d, 0x6c, 0x3b, 0x71, 0x3d,
- 0x30, 0x2e, 0x39, 0x2c, 0x2a, 0x2f, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e,
- 0x38, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x45, 0x6e,
- 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x67, 0x7a, 0x69, 0x70,
- 0x2c, 0x64, 0x65, 0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, 0x63,
- 0x68, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x4c, 0x61,
- 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x65, 0x6e, 0x2d, 0x55,
- 0x53, 0x2c, 0x65, 0x6e, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x38, 0x0d, 0x0a,
- 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x43, 0x68, 0x61, 0x72, 0x73,
- 0x65, 0x74, 0x3a, 0x20, 0x49, 0x53, 0x4f, 0x2e, 0x39, 0x55, 0x35, 0x39,
- 0x2d, 0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x3b, 0x71, 0x3d, 0x30,
- 0x2e, 0x37, 0x2c, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x33, 0x0d, 0x0a,
- 0x0d, 0x0a,
-}
-
-func main() {
- fmt.Println(bytediff.BashOutput.String(bytediff.Diff(sliceA, sliceB)))
-}
diff --git a/vendor/github.com/google/gopacket/examples/httpassembly/main.go b/vendor/github.com/google/gopacket/examples/httpassembly/main.go
deleted file mode 100644
index 02af21e..0000000
--- a/vendor/github.com/google/gopacket/examples/httpassembly/main.go
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This binary provides sample code for using the gopacket TCP assembler and TCP
-// stream reader. It reads packets off the wire and reconstructs HTTP requests
-// it sees, logging them.
-package main
-
-import (
- "bufio"
- "flag"
- "io"
- "log"
- "net/http"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/examples/util"
- "github.com/google/gopacket/layers"
- "github.com/google/gopacket/pcap"
- "github.com/google/gopacket/tcpassembly"
- "github.com/google/gopacket/tcpassembly/tcpreader"
-)
-
-var iface = flag.String("i", "eth0", "Interface to get packets from")
-var fname = flag.String("r", "", "Filename to read from, overrides -i")
-var snaplen = flag.Int("s", 1600, "SnapLen for pcap packet capture")
-var filter = flag.String("f", "tcp and dst port 80", "BPF filter for pcap")
-var logAllPackets = flag.Bool("v", false, "Logs every packet in great detail")
-
-// Build a simple HTTP request parser using tcpassembly.StreamFactory and tcpassembly.Stream interfaces
-
-// httpStreamFactory implements tcpassembly.StreamFactory
-type httpStreamFactory struct{}
-
-// httpStream will handle the actual decoding of http requests.
-type httpStream struct {
- net, transport gopacket.Flow
- r tcpreader.ReaderStream
-}
-
-func (h *httpStreamFactory) New(net, transport gopacket.Flow) tcpassembly.Stream {
- hstream := &httpStream{
- net: net,
- transport: transport,
- r: tcpreader.NewReaderStream(),
- }
- go hstream.run() // Important... we must guarantee that data from the reader stream is read.
-
- // ReaderStream implements tcpassembly.Stream, so we can return a pointer to it.
- return &hstream.r
-}
-
-func (h *httpStream) run() {
- buf := bufio.NewReader(&h.r)
- for {
- req, err := http.ReadRequest(buf)
- if err == io.EOF {
- // We must read until we see an EOF... very important!
- return
- } else if err != nil {
- log.Println("Error reading stream", h.net, h.transport, ":", err)
- } else {
- bodyBytes := tcpreader.DiscardBytesToEOF(req.Body)
- req.Body.Close()
- log.Println("Received request from stream", h.net, h.transport, ":", req, "with", bodyBytes, "bytes in request body")
- }
- }
-}
-
-func main() {
- defer util.Run()()
- var handle *pcap.Handle
- var err error
-
- // Set up pcap packet capture
- if *fname != "" {
- log.Printf("Reading from pcap dump %q", *fname)
- handle, err = pcap.OpenOffline(*fname)
- } else {
- log.Printf("Starting capture on interface %q", *iface)
- handle, err = pcap.OpenLive(*iface, int32(*snaplen), true, pcap.BlockForever)
- }
- if err != nil {
- log.Fatal(err)
- }
-
- if err := handle.SetBPFFilter(*filter); err != nil {
- log.Fatal(err)
- }
-
- // Set up assembly
- streamFactory := &httpStreamFactory{}
- streamPool := tcpassembly.NewStreamPool(streamFactory)
- assembler := tcpassembly.NewAssembler(streamPool)
-
- log.Println("reading in packets")
- // Read in packets, pass to assembler.
- packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
- packets := packetSource.Packets()
- ticker := time.Tick(time.Minute)
- for {
- select {
- case packet := <-packets:
- // A nil packet indicates the end of a pcap file.
- if packet == nil {
- return
- }
- if *logAllPackets {
- log.Println(packet)
- }
- if packet.NetworkLayer() == nil || packet.TransportLayer() == nil || packet.TransportLayer().LayerType() != layers.LayerTypeTCP {
- log.Println("Unusable packet")
- continue
- }
- tcp := packet.TransportLayer().(*layers.TCP)
- assembler.AssembleWithTimestamp(packet.NetworkLayer().NetworkFlow(), tcp, packet.Metadata().Timestamp)
-
- case <-ticker:
- // Every minute, flush connections that haven't seen activity in the past 2 minutes.
- assembler.FlushOlderThan(time.Now().Add(time.Minute * -2))
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/examples/pcapdump/main.go b/vendor/github.com/google/gopacket/examples/pcapdump/main.go
deleted file mode 100644
index 373dee2..0000000
--- a/vendor/github.com/google/gopacket/examples/pcapdump/main.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// The pcapdump binary implements a tcpdump-like command line tool with gopacket
-// using pcap as a backend data collection mechanism.
-package main
-
-import (
- "flag"
- "fmt"
- "github.com/google/gopacket/dumpcommand"
- "github.com/google/gopacket/examples/util"
- "github.com/google/gopacket/pcap"
- "log"
- "os"
- "strings"
- "time"
-)
-
-var iface = flag.String("i", "eth0", "Interface to read packets from")
-var fname = flag.String("r", "", "Filename to read from, overrides -i")
-var snaplen = flag.Int("s", 65536, "Snap length (number of bytes max to read per packet")
-var tstype = flag.String("timestamp_type", "", "Type of timestamps to use")
-var promisc = flag.Bool("promisc", true, "Set promiscuous mode")
-
-func main() {
- defer util.Run()()
- var handle *pcap.Handle
- var err error
- if *fname != "" {
- if handle, err = pcap.OpenOffline(*fname); err != nil {
- log.Fatal("PCAP OpenOffline error:", err)
- }
- } else {
- // This is a little complicated because we want to allow all possible options
- // for creating the packet capture handle... instead of all this you can
- // just call pcap.OpenLive if you want a simple handle.
- inactive, err := pcap.NewInactiveHandle(*iface)
- if err != nil {
- log.Fatalf("could not create: %v", err)
- }
- defer inactive.CleanUp()
- if err = inactive.SetSnapLen(*snaplen); err != nil {
- log.Fatalf("could not set snap length: %v", err)
- } else if err = inactive.SetPromisc(*promisc); err != nil {
- log.Fatalf("could not set promisc mode: %v", err)
- } else if err = inactive.SetTimeout(time.Second); err != nil {
- log.Fatalf("could not set timeout: %v", err)
- }
- if *tstype != "" {
- if t, err := pcap.TimestampSourceFromString(*tstype); err != nil {
- log.Fatalf("Supported timestamp types: %v", inactive.SupportedTimestamps())
- } else if err := inactive.SetTimestampSource(t); err != nil {
- log.Fatalf("Supported timestamp types: %v", inactive.SupportedTimestamps())
- }
- }
- if handle, err = inactive.Activate(); err != nil {
- log.Fatal("PCAP Activate error:", err)
- }
- defer handle.Close()
- }
- if len(flag.Args()) > 0 {
- bpffilter := strings.Join(flag.Args(), " ")
- fmt.Fprintf(os.Stderr, "Using BPF filter %q\n", bpffilter)
- if err = handle.SetBPFFilter(bpffilter); err != nil {
- log.Fatal("BPF filter error:", err)
- }
- }
- dumpcommand.Run(handle)
-}
diff --git a/vendor/github.com/google/gopacket/examples/pcaplay/main.go b/vendor/github.com/google/gopacket/examples/pcaplay/main.go
deleted file mode 100644
index d36d860..0000000
--- a/vendor/github.com/google/gopacket/examples/pcaplay/main.go
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// The pcaplay binary load an offline capture (pcap file) and replay
-// it on the select interface, with an emphasis on packet timing
-package main
-
-import (
- "flag"
- "fmt"
- "io"
- "log"
- "os"
- "strings"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/examples/util"
- "github.com/google/gopacket/pcap"
-)
-
-var iface = flag.String("i", "eth0", "Interface to write packets to")
-var fname = flag.String("r", "", "Filename to read from")
-var fast = flag.Bool("f", false, "Send each packets as fast as possible")
-
-var lastTS time.Time
-var lastSend time.Time
-
-var start time.Time
-var bytesSent int
-
-func writePacketDelayed(handle *pcap.Handle, buf []byte, ci gopacket.CaptureInfo) {
- if ci.CaptureLength != ci.Length {
- // do not write truncated packets
- return
- }
-
- intervalInCapture := ci.Timestamp.Sub(lastTS)
- elapsedTime := time.Since(lastSend)
-
- if (intervalInCapture > elapsedTime) && !lastSend.IsZero() {
- time.Sleep(intervalInCapture - elapsedTime)
- }
-
- lastSend = time.Now()
- writePacket(handle, buf)
- lastTS = ci.Timestamp
-}
-
-func writePacket(handle *pcap.Handle, buf []byte) error {
- if err := handle.WritePacketData(buf); err != nil {
- log.Printf("Failed to send packet: %s\n", err)
- return err
- }
- return nil
-}
-
-func pcapInfo(filename string) (start time.Time, end time.Time, packets int, size int) {
- handleRead, err := pcap.OpenOffline(*fname)
- if err != nil {
- log.Fatal("PCAP OpenOffline error (handle to read packet):", err)
- }
-
- var previousTs time.Time
- var deltaTotal time.Duration
-
- for {
- data, ci, err := handleRead.ReadPacketData()
- if err != nil && err != io.EOF {
- log.Fatal(err)
- } else if err == io.EOF {
- break
- } else {
-
- if start.IsZero() {
- start = ci.Timestamp
- }
- end = ci.Timestamp
- packets++
- size += len(data)
-
- if previousTs.IsZero() {
- previousTs = ci.Timestamp
- } else {
- deltaTotal += ci.Timestamp.Sub(previousTs)
- previousTs = ci.Timestamp
- }
- }
- }
- sec := int(deltaTotal.Seconds())
- if sec == 0 {
- sec = 1
- }
- fmt.Printf("Avg packet rate %d/s\n", packets/sec)
- return start, end, packets, size
-}
-
-func main() {
- defer util.Run()()
-
- // Sanity checks
- if *fname == "" {
- log.Fatal("Need a input file")
- }
-
- // Open PCAP file + handle potential BPF Filter
- handleRead, err := pcap.OpenOffline(*fname)
- if err != nil {
- log.Fatal("PCAP OpenOffline error (handle to read packet):", err)
- }
- defer handleRead.Close()
- if len(flag.Args()) > 0 {
- bpffilter := strings.Join(flag.Args(), " ")
- fmt.Fprintf(os.Stderr, "Using BPF filter %q\n", bpffilter)
- if err = handleRead.SetBPFFilter(bpffilter); err != nil {
- log.Fatal("BPF filter error:", err)
- }
- }
- // Open up a second pcap handle for packet writes.
- handleWrite, err := pcap.OpenLive(*iface, 65536, true, pcap.BlockForever)
- if err != nil {
- log.Fatal("PCAP OpenLive error (handle to write packet):", err)
- }
- defer handleWrite.Close()
-
- start = time.Now()
- pkt := 0
- tsStart, tsEnd, packets, size := pcapInfo(*fname)
-
- // Loop over packets and write them
- for {
- data, ci, err := handleRead.ReadPacketData()
- switch {
- case err == io.EOF:
- fmt.Printf("\nFinished in %s", time.Since(start))
- return
- case err != nil:
- log.Printf("Failed to read packet %d: %s\n", pkt, err)
- default:
- if *fast {
- writePacket(handleWrite, data)
- } else {
- writePacketDelayed(handleWrite, data, ci)
- }
-
- bytesSent += len(data)
- duration := time.Since(start)
- pkt++
-
- if duration > time.Second {
- rate := bytesSent / int(duration.Seconds())
- remainingTime := tsEnd.Sub(tsStart) - duration
- fmt.Printf("\rrate %d kB/sec - sent %d/%d kB - %d/%d packets - remaining time %s",
- rate/1000, bytesSent/1000, size/1000,
- pkt, packets, remainingTime)
- }
- }
- }
-
-}
diff --git a/vendor/github.com/google/gopacket/examples/pfdump/main.go b/vendor/github.com/google/gopacket/examples/pfdump/main.go
deleted file mode 100644
index 4b3ace6..0000000
--- a/vendor/github.com/google/gopacket/examples/pfdump/main.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// The pfdump binary implements a tcpdump-like command line tool with gopacket
-// using pfring as a backend data collection mechanism.
-package main
-
-import (
- "flag"
- "fmt"
- "github.com/google/gopacket/dumpcommand"
- "github.com/google/gopacket/examples/util"
- "github.com/google/gopacket/pfring"
- "log"
- "os"
- "strings"
-)
-
-var iface = flag.String("i", "eth0", "Interface to read packets from")
-var snaplen = flag.Int("s", 65536, "Snap length (number of bytes max to read per packet")
-var cluster = flag.Int("cluster", -1, "If >= 0, sets the pfring cluster to this value")
-var clustertype = flag.Int("clustertype", int(pfring.ClusterPerFlow), "Cluster type")
-
-func main() {
- defer util.Run()()
- var ring *pfring.Ring
- var err error
- if ring, err = pfring.NewRing(*iface, uint32(*snaplen), pfring.FlagPromisc); err != nil {
- log.Fatalln("pfring ring creation error:", err)
- }
- if len(flag.Args()) > 0 {
- bpffilter := strings.Join(flag.Args(), " ")
- fmt.Fprintf(os.Stderr, "Using BPF filter %q\n", bpffilter)
- if err = ring.SetBPFFilter(bpffilter); err != nil {
- log.Fatalln("BPF filter error:", err)
- }
- }
- if *cluster >= 0 {
- if err = ring.SetCluster(*cluster, pfring.ClusterType(*clustertype)); err != nil {
- log.Fatalln("pfring SetCluster error:", err)
- }
- }
- if err = ring.SetSocketMode(pfring.ReadOnly); err != nil {
- log.Fatalln("pfring SetSocketMode error:", err)
- } else if err = ring.Enable(); err != nil {
- log.Fatalln("pfring Enable error:", err)
- }
- dumpcommand.Run(ring)
-}
diff --git a/vendor/github.com/google/gopacket/examples/reassemblydump/compare.sh b/vendor/github.com/google/gopacket/examples/reassemblydump/compare.sh
deleted file mode 100755
index 671d29f..0000000
--- a/vendor/github.com/google/gopacket/examples/reassemblydump/compare.sh
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/bin/bash
-
-# Limitations: if the number extracted files in too big, finding identical
-# files might fail due to '*' in cmdline
-# This would require to split sha256sum symlinks in xx/yyyyy
-
-usage()
-{
- echo "Usage: $0 <file.pcap> <output-dir>"
- echo "Compares tcpreassembly against tcpflow"
- echo ""
- echo "$@"
- exit 1
-}
-
-debug() {
- return # comment me for debug
- echo "$@"
-}
-
-die()
-{
- (
- echo "$@"
- echo
- ) >&2
- exit 1
-}
-
-rename()
-{
- local path="$1"
- local filter="$2"
- find "$path" -type f -name "$filter" -print0 |
- while IFS= read -r -d $'\0' f; do
- local sha256="$(sha256sum "$f" | cut -d ' ' -f 1)"
- local target="$(dirname $f)/../sha256/$sha256"
- debug "$target → $f"
- mkdir -p "$(dirname "$target")" || return 1
- if [ ! -f "$target" ]; then
- ln -sr "$f" "$target" || return 1
- fi
- done
- return $?
-}
-
-main()
-{
- local src="$1"
- local out="$2"
-
- # TODO: make options
- local extra=""
- extra="$extra -debug"
- extra="$extra -cpuprofile "$out/gopacket/cpu.prof""
- extra="$extra -memprofile "$out/gopacket/mem.prof""
-
- [ ! -f "$src" ] && usage "Missing pcap"
- [ ! -d "$out" ] && ( mkdir "$out" || die "Failed to create $out" )
-
- mkdir -p "$out/gopacket/all" || die "Failed to create $out/gopacket/all"
- mkdir -p "$out/tcpflow/all" || die "Faield to create $out/tcpflow/all"
-
- echo " * Running go reassembly"
- time ./reassemblydump -r "$src" $debug -output "$out/gopacket/all" $extra -writeincomplete -ignorefsmerr -nooptcheck -allowmissinginit port 80 &> "$out/gopacket.txt" || die "Failed to run reassmbly. Check $out/gopacket.txt"
- echo " * Running tcpflow"
- time tcpflow -e http -r "$src" -o "$out/tcpflow/all" port 80 &> "$out/tcpflow.txt" || die "Failed to run tcpflow. Check $out/tcpflow.txt"
-
- echo " * Creating sha256sum symlinks for gopacket"
- rename "$out/gopacket/all" '*' || die "Failed to rename in $out/gopacket"
- echo " * Creating sha256sum symlinks for tcpflow"
- rename "$out/tcpflow/all" '*HTTPBODY*' || die "Failed to rename in $out/tcpflow"
-
- # Remove identical files
- echo " * Finding identical files"
- local nb=0
- mkdir -p "$out/gopacket/sha256-equal"
- mkdir -p "$out/tcpflow/sha256-equal"
- for f in "$out/gopacket/sha256/"*; do
- local f="$(basename "$f")"
- [ -f "$out/tcpflow/sha256/$f" ] && {
- debug " $f"
- mv "$out/gopacket/sha256/$f" "$out/gopacket/sha256-equal"
- mv "$out/tcpflow/sha256/$f" "$out/tcpflow/sha256-equal"
- nb=$((nb+1))
- }
- done
- echo " → found $nb files"
-
- echo " * Diffing {gopacket,tcpflow}/sha256"
- local rc=0
- for p in "gopacket" "tcpflow"; do
- local nb=$(ls -1 "$out/$p/sha256/" | wc -l)
- if [ $nb -ne 0 ]; then
- rc=$((rc+1))
- echo " → $nb files in $out/$p/sha256"
- fi
- done
- return $rc
-}
-
-main "$@"
-exit $?
diff --git a/vendor/github.com/google/gopacket/examples/reassemblydump/main.go b/vendor/github.com/google/gopacket/examples/reassemblydump/main.go
deleted file mode 100644
index 9fc3791..0000000
--- a/vendor/github.com/google/gopacket/examples/reassemblydump/main.go
+++ /dev/null
@@ -1,650 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// The pcapdump binary implements a tcpdump-like command line tool with gopacket
-// using pcap as a backend data collection mechanism.
-package main
-
-import (
- "bufio"
- "bytes"
- "compress/gzip"
- "encoding/binary"
- "encoding/hex"
- "flag"
- "fmt"
- "io"
- "io/ioutil"
- "log"
- "net/http"
- "net/url"
- "os"
- "os/signal"
- "path"
- "runtime/pprof"
- "strings"
- "sync"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/examples/util"
- "github.com/google/gopacket/ip4defrag"
- "github.com/google/gopacket/layers" // pulls in all layers decoders
- "github.com/google/gopacket/pcap"
- "github.com/google/gopacket/reassembly"
-)
-
-var maxcount = flag.Int("c", -1, "Only grab this many packets, then exit")
-var decoder = flag.String("decoder", "", "Name of the decoder to use (default: guess from capture)")
-var statsevery = flag.Int("stats", 1000, "Output statistics every N packets")
-var lazy = flag.Bool("lazy", false, "If true, do lazy decoding")
-var nodefrag = flag.Bool("nodefrag", false, "If true, do not do IPv4 defrag")
-var checksum = flag.Bool("checksum", false, "Check TCP checksum")
-var nooptcheck = flag.Bool("nooptcheck", false, "Do not check TCP options (useful to ignore MSS on captures with TSO)")
-var ignorefsmerr = flag.Bool("ignorefsmerr", false, "Ignore TCP FSM errors")
-var allowmissinginit = flag.Bool("allowmissinginit", false, "Support streams without SYN/SYN+ACK/ACK sequence")
-var verbose = flag.Bool("verbose", false, "Be verbose")
-var debug = flag.Bool("debug", false, "Display debug information")
-var quiet = flag.Bool("quiet", false, "Be quiet regarding errors")
-
-// http
-var nohttp = flag.Bool("nohttp", false, "Disable HTTP parsing")
-var output = flag.String("output", "", "Path to create file for HTTP 200 OK responses")
-var writeincomplete = flag.Bool("writeincomplete", false, "Write incomplete response")
-
-var hexdump = flag.Bool("dump", false, "Dump HTTP request/response as hex")
-var hexdumppkt = flag.Bool("dumppkt", false, "Dump packet as hex")
-
-// capture
-var iface = flag.String("i", "eth0", "Interface to read packets from")
-var fname = flag.String("r", "", "Filename to read from, overrides -i")
-var snaplen = flag.Int("s", 65536, "Snap length (number of bytes max to read per packet")
-var tstype = flag.String("timestamp_type", "", "Type of timestamps to use")
-var promisc = flag.Bool("promisc", true, "Set promiscuous mode")
-
-var memprofile = flag.String("memprofile", "", "Write memory profile")
-
-var stats struct {
- ipdefrag int
- missedBytes int
- pkt int
- sz int
- totalsz int
- rejectFsm int
- rejectOpt int
- rejectConnFsm int
- reassembled int
- outOfOrderBytes int
- outOfOrderPackets int
- biggestChunkBytes int
- biggestChunkPackets int
- overlapBytes int
- overlapPackets int
-}
-
-const closeTimeout time.Duration = time.Hour * 24 // Closing inactive: TODO: from CLI
-const timeout time.Duration = time.Minute * 5 // Pending bytes: TODO: from CLI
-
-/*
- * HTTP part
- */
-
-type httpReader struct {
- ident string
- isClient bool
- bytes chan []byte
- data []byte
- hexdump bool
- parent *tcpStream
-}
-
-func (h *httpReader) Read(p []byte) (int, error) {
- ok := true
- for ok && len(h.data) == 0 {
- h.data, ok = <-h.bytes
- }
- if !ok || len(h.data) == 0 {
- return 0, io.EOF
- }
-
- l := copy(p, h.data)
- h.data = h.data[l:]
- return l, nil
-}
-
-var outputLevel int
-var errorsMap map[string]uint
-var errors uint
-
-// Too bad for perf that a... is evaluated
-func Error(t string, s string, a ...interface{}) {
- errors++
- nb, _ := errorsMap[t]
- errorsMap[t] = nb + 1
- if outputLevel >= 0 {
- fmt.Printf(s, a...)
- }
-}
-func Info(s string, a ...interface{}) {
- if outputLevel >= 1 {
- fmt.Printf(s, a...)
- }
-}
-func Debug(s string, a ...interface{}) {
- if outputLevel >= 2 {
- fmt.Printf(s, a...)
- }
-}
-
-func (h *httpReader) run(wg *sync.WaitGroup) {
- defer wg.Done()
- b := bufio.NewReader(h)
- for true {
- if h.isClient {
- req, err := http.ReadRequest(b)
- if err == io.EOF || err == io.ErrUnexpectedEOF {
- break
- } else if err != nil {
- Error("HTTP-request", "HTTP/%s Request error: %s (%v,%+v)\n", h.ident, err, err, err)
- continue
- }
- body, err := ioutil.ReadAll(req.Body)
- s := len(body)
- if err != nil {
- Error("HTTP-request-body", "Got body err: %s\n", err)
- } else if h.hexdump {
- Info("Body(%d/0x%x)\n%s\n", len(body), len(body), hex.Dump(body))
- }
- req.Body.Close()
- Info("HTTP/%s Request: %s %s (body:%d)\n", h.ident, req.Method, req.URL, s)
- h.parent.urls = append(h.parent.urls, req.URL.String())
- } else {
- res, err := http.ReadResponse(b, nil)
- var req string
- if len(h.parent.urls) == 0 {
- req = fmt.Sprintf("<no-request-seen>")
- } else {
- req, h.parent.urls = h.parent.urls[0], h.parent.urls[1:]
- }
- if err == io.EOF || err == io.ErrUnexpectedEOF {
- break
- } else if err != nil {
- Error("HTTP-response", "HTTP/%s Response error: %s (%v,%+v)\n", h.ident, err, err, err)
- continue
- }
- body, err := ioutil.ReadAll(res.Body)
- s := len(body)
- if err != nil {
- Error("HTTP-response-body", "HTTP/%s: failed to get body(parsed len:%d): %s\n", h.ident, s, err)
- }
- if h.hexdump {
- Info("Body(%d/0x%x)\n%s\n", len(body), len(body), hex.Dump(body))
- }
- res.Body.Close()
- sym := ","
- if res.ContentLength > 0 && res.ContentLength != int64(s) {
- sym = "!="
- }
- contentType, ok := res.Header["Content-Type"]
- if !ok {
- contentType = []string{http.DetectContentType(body)}
- }
- encoding := res.Header["Content-Encoding"]
- Info("HTTP/%s Response: %s URL:%s (%d%s%d%s) -> %s\n", h.ident, res.Status, req, res.ContentLength, sym, s, contentType, encoding)
- if (err == nil || *writeincomplete) && *output != "" {
- base := url.QueryEscape(path.Base(req))
- if err != nil {
- base = "incomplete-" + base
- }
- base = path.Join(*output, base)
- if len(base) > 250 {
- base = base[:250] + "..."
- }
- if base == *output {
- base = path.Join(*output, "noname")
- }
- target := base
- n := 0
- for true {
- _, err := os.Stat(target)
- //if os.IsNotExist(err) != nil {
- if err != nil {
- break
- }
- target = fmt.Sprintf("%s-%d", base, n)
- n++
- }
- f, err := os.Create(target)
- if err != nil {
- Error("HTTP-create", "Cannot create %s: %s\n", target, err)
- continue
- }
- var r io.Reader
- r = bytes.NewBuffer(body)
- if len(encoding) > 0 && (encoding[0] == "gzip" || encoding[0] == "deflate") {
- r, err = gzip.NewReader(r)
- if err != nil {
- Error("HTTP-gunzip", "Failed to gzip decode: %s", err)
- }
- }
- if err == nil {
- w, err := io.Copy(f, r)
- if _, ok := r.(*gzip.Reader); ok {
- r.(*gzip.Reader).Close()
- }
- f.Close()
- if err != nil {
- Error("HTTP-save", "%s: failed to save %s (l:%d): %s\n", h.ident, target, w, err)
- } else {
- Info("%s: Saved %s (l:%d)\n", h.ident, target, w)
- }
- }
- }
- }
- }
-}
-
-/*
- * The TCP factory: returns a new Stream
- */
-type tcpStreamFactory struct {
- wg sync.WaitGroup
- doHTTP bool
-}
-
-func (factory *tcpStreamFactory) New(net, transport gopacket.Flow, tcp *layers.TCP, ac reassembly.AssemblerContext) reassembly.Stream {
- Debug("* NEW: %s %s\n", net, transport)
- fsmOptions := reassembly.TCPSimpleFSMOptions{
- SupportMissingEstablishment: *allowmissinginit,
- }
- stream := &tcpStream{
- net: net,
- transport: transport,
- isDNS: tcp.SrcPort == 53 || tcp.DstPort == 53,
- isHTTP: (tcp.SrcPort == 80 || tcp.DstPort == 80) && factory.doHTTP,
- reversed: tcp.SrcPort == 80,
- tcpstate: reassembly.NewTCPSimpleFSM(fsmOptions),
- ident: fmt.Sprintf("%s:%s", net, transport),
- optchecker: reassembly.NewTCPOptionCheck(),
- }
- if stream.isHTTP {
- stream.client = httpReader{
- bytes: make(chan []byte),
- ident: fmt.Sprintf("%s %s", net, transport),
- hexdump: *hexdump,
- parent: stream,
- isClient: true,
- }
- stream.server = httpReader{
- bytes: make(chan []byte),
- ident: fmt.Sprintf("%s %s", net.Reverse(), transport.Reverse()),
- hexdump: *hexdump,
- parent: stream,
- }
- factory.wg.Add(2)
- go stream.client.run(&factory.wg)
- go stream.server.run(&factory.wg)
- }
- return stream
-}
-
-func (factory *tcpStreamFactory) WaitGoRoutines() {
- factory.wg.Wait()
-}
-
-/*
- * The assembler context
- */
-type Context struct {
- CaptureInfo gopacket.CaptureInfo
-}
-
-func (c *Context) GetCaptureInfo() gopacket.CaptureInfo {
- return c.CaptureInfo
-}
-
-/*
- * TCP stream
- */
-
-/* It's a connection (bidirectional) */
-type tcpStream struct {
- tcpstate *reassembly.TCPSimpleFSM
- fsmerr bool
- optchecker reassembly.TCPOptionCheck
- net, transport gopacket.Flow
- isDNS bool
- isHTTP bool
- reversed bool
- client httpReader
- server httpReader
- urls []string
- ident string
-}
-
-func (t *tcpStream) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir reassembly.TCPFlowDirection, acked reassembly.Sequence, start *bool, ac reassembly.AssemblerContext) bool {
- // FSM
- if !t.tcpstate.CheckState(tcp, dir) {
- Error("FSM", "%s: Packet rejected by FSM (state:%s)\n", t.ident, t.tcpstate.String())
- stats.rejectFsm++
- if !t.fsmerr {
- t.fsmerr = true
- stats.rejectConnFsm++
- }
- if !*ignorefsmerr {
- return false
- }
- }
- // Options
- err := t.optchecker.Accept(tcp, ci, dir, acked, start)
- if err != nil {
- Error("OptionChecker", "%s: Packet rejected by OptionChecker: %s\n", t.ident, err)
- stats.rejectOpt++
- if !*nooptcheck {
- return false
- }
- }
- // Checksum
- accept := true
- if *checksum {
- c, err := tcp.ComputeChecksum()
- if err != nil {
- Error("ChecksumCompute", "%s: Got error computing checksum: %s\n", t.ident, err)
- accept = false
- } else if c != 0x0 {
- Error("Checksum", "%s: Invalid checksum: 0x%x\n", t.ident, c)
- accept = false
- }
- }
- if !accept {
- stats.rejectOpt++
- }
- return accept
-}
-
-func (t *tcpStream) ReassembledSG(sg reassembly.ScatterGather, ac reassembly.AssemblerContext) {
- dir, start, end, skip := sg.Info()
- length, saved := sg.Lengths()
- // update stats
- sgStats := sg.Stats()
- if skip > 0 {
- stats.missedBytes += skip
- }
- stats.sz += length - saved
- stats.pkt += sgStats.Packets
- if sgStats.Chunks > 1 {
- stats.reassembled++
- }
- stats.outOfOrderPackets += sgStats.QueuedPackets
- stats.outOfOrderBytes += sgStats.QueuedBytes
- if length > stats.biggestChunkBytes {
- stats.biggestChunkBytes = length
- }
- if sgStats.Packets > stats.biggestChunkPackets {
- stats.biggestChunkPackets = sgStats.Packets
- }
- if sgStats.OverlapBytes != 0 && sgStats.OverlapPackets == 0 {
- fmt.Printf("bytes:%d, pkts:%d\n", sgStats.OverlapBytes, sgStats.OverlapPackets)
- panic("Invalid overlap")
- }
- stats.overlapBytes += sgStats.OverlapBytes
- stats.overlapPackets += sgStats.OverlapPackets
-
- var ident string
- if dir == reassembly.TCPDirClientToServer {
- ident = fmt.Sprintf("%v %v(%s): ", t.net, t.transport, dir)
- } else {
- ident = fmt.Sprintf("%v %v(%s): ", t.net.Reverse(), t.transport.Reverse(), dir)
- }
- Debug("%s: SG reassembled packet with %d bytes (start:%v,end:%v,skip:%d,saved:%d,nb:%d,%d,overlap:%d,%d)\n", ident, length, start, end, skip, saved, sgStats.Packets, sgStats.Chunks, sgStats.OverlapBytes, sgStats.OverlapPackets)
- if skip == -1 && *allowmissinginit {
- // this is allowed
- } else if skip != 0 {
- // Missing bytes in stream: do not even try to parse it
- return
- }
- data := sg.Fetch(length)
- if t.isDNS {
- dns := &layers.DNS{}
- var decoded []gopacket.LayerType
- if len(data) < 2 {
- if len(data) > 0 {
- sg.KeepFrom(0)
- }
- return
- }
- dnsSize := binary.BigEndian.Uint16(data[:2])
- missing := int(dnsSize) - len(data[2:])
- Debug("dnsSize: %d, missing: %d\n", dnsSize, missing)
- if missing > 0 {
- Info("Missing some bytes: %d\n", missing)
- sg.KeepFrom(0)
- return
- }
- p := gopacket.NewDecodingLayerParser(layers.LayerTypeDNS, dns)
- err := p.DecodeLayers(data[2:], &decoded)
- if err != nil {
- Error("DNS-parser", "Failed to decode DNS: %v\n", err)
- } else {
- Debug("DNS: %s\n", gopacket.LayerDump(dns))
- }
- if len(data) > 2+int(dnsSize) {
- sg.KeepFrom(2 + int(dnsSize))
- }
- } else if t.isHTTP {
- if length > 0 {
- if *hexdump {
- Debug("Feeding http with:\n%s", hex.Dump(data))
- }
- if dir == reassembly.TCPDirClientToServer && !t.reversed {
- t.client.bytes <- data
- } else {
- t.server.bytes <- data
- }
- }
- }
-}
-
-func (t *tcpStream) ReassemblyComplete(ac reassembly.AssemblerContext) bool {
- Debug("%s: Connection closed\n", t.ident)
- if t.isHTTP {
- close(t.client.bytes)
- close(t.server.bytes)
- }
- // do not remove the connection to allow last ACK
- return false
-}
-
-func main() {
- defer util.Run()()
- var handle *pcap.Handle
- var err error
- if *debug {
- outputLevel = 2
- } else if *verbose {
- outputLevel = 1
- } else if *quiet {
- outputLevel = -1
- }
- errorsMap = make(map[string]uint)
- if *fname != "" {
- if handle, err = pcap.OpenOffline(*fname); err != nil {
- log.Fatal("PCAP OpenOffline error:", err)
- }
- } else {
- // This is a little complicated because we want to allow all possible options
- // for creating the packet capture handle... instead of all this you can
- // just call pcap.OpenLive if you want a simple handle.
- inactive, err := pcap.NewInactiveHandle(*iface)
- if err != nil {
- log.Fatal("could not create: %v", err)
- }
- defer inactive.CleanUp()
- if err = inactive.SetSnapLen(*snaplen); err != nil {
- log.Fatal("could not set snap length: %v", err)
- } else if err = inactive.SetPromisc(*promisc); err != nil {
- log.Fatal("could not set promisc mode: %v", err)
- } else if err = inactive.SetTimeout(time.Second); err != nil {
- log.Fatal("could not set timeout: %v", err)
- }
- if *tstype != "" {
- if t, err := pcap.TimestampSourceFromString(*tstype); err != nil {
- log.Fatalf("Supported timestamp types: %v", inactive.SupportedTimestamps())
- } else if err := inactive.SetTimestampSource(t); err != nil {
- log.Fatalf("Supported timestamp types: %v", inactive.SupportedTimestamps())
- }
- }
- if handle, err = inactive.Activate(); err != nil {
- log.Fatal("PCAP Activate error:", err)
- }
- defer handle.Close()
- }
- if len(flag.Args()) > 0 {
- bpffilter := strings.Join(flag.Args(), " ")
- Info("Using BPF filter %q\n", bpffilter)
- if err = handle.SetBPFFilter(bpffilter); err != nil {
- log.Fatal("BPF filter error:", err)
- }
- }
-
- var dec gopacket.Decoder
- var ok bool
- decoder_name := *decoder
- if decoder_name == "" {
- decoder_name = fmt.Sprintf("%s", handle.LinkType())
- }
- if dec, ok = gopacket.DecodersByLayerName[decoder_name]; !ok {
- log.Fatalln("No decoder named", decoder_name)
- }
- source := gopacket.NewPacketSource(handle, dec)
- source.Lazy = *lazy
- source.NoCopy = true
- Info("Starting to read packets\n")
- count := 0
- bytes := int64(0)
- start := time.Now()
- defragger := ip4defrag.NewIPv4Defragmenter()
-
- streamFactory := &tcpStreamFactory{doHTTP: !*nohttp}
- streamPool := reassembly.NewStreamPool(streamFactory)
- assembler := reassembly.NewAssembler(streamPool)
-
- signalChan := make(chan os.Signal, 1)
- signal.Notify(signalChan, os.Interrupt)
-
- for packet := range source.Packets() {
- count++
- Debug("PACKET #%d\n", count)
- data := packet.Data()
- bytes += int64(len(data))
- if *hexdumppkt {
- Debug("Packet content (%d/0x%x)\n%s\n", len(data), len(data), hex.Dump(data))
- }
-
- // defrag the IPv4 packet if required
- if !*nodefrag {
- ip4Layer := packet.Layer(layers.LayerTypeIPv4)
- if ip4Layer == nil {
- continue
- }
- ip4 := ip4Layer.(*layers.IPv4)
- l := ip4.Length
- newip4, err := defragger.DefragIPv4(ip4)
- if err != nil {
- log.Fatalln("Error while de-fragmenting", err)
- } else if newip4 == nil {
- Debug("Fragment...\n")
- continue // packet fragment, we don't have whole packet yet.
- }
- if newip4.Length != l {
- stats.ipdefrag++
- Debug("Decoding re-assembled packet: %s\n", newip4.NextLayerType())
- pb, ok := packet.(gopacket.PacketBuilder)
- if !ok {
- panic("Not a PacketBuilder")
- }
- nextDecoder := newip4.NextLayerType()
- nextDecoder.Decode(newip4.Payload, pb)
- }
- }
-
- tcp := packet.Layer(layers.LayerTypeTCP)
- if tcp != nil {
- tcp := tcp.(*layers.TCP)
- if *checksum {
- err := tcp.SetNetworkLayerForChecksum(packet.NetworkLayer())
- if err != nil {
- log.Fatalf("Failed to set network layer for checksum: %s\n", err)
- }
- }
- c := Context{
- CaptureInfo: packet.Metadata().CaptureInfo,
- }
- stats.totalsz += len(tcp.Payload)
- assembler.AssembleWithContext(packet.NetworkLayer().NetworkFlow(), tcp, &c)
- }
- if count%*statsevery == 0 {
- ref := packet.Metadata().CaptureInfo.Timestamp
- flushed, closed := assembler.FlushWithOptions(reassembly.FlushOptions{T: ref.Add(-timeout), TC: ref.Add(-closeTimeout)})
- Debug("Forced flush: %d flushed, %d closed (%s)", flushed, closed, ref)
- }
-
- done := *maxcount > 0 && count >= *maxcount
- if count%*statsevery == 0 || done {
- fmt.Fprintf(os.Stderr, "Processed %v packets (%v bytes) in %v (errors: %v, type:%v)\n", count, bytes, time.Since(start), errors, len(errorsMap))
- }
- select {
- case <-signalChan:
- fmt.Fprintf(os.Stderr, "\nCaught SIGINT: aborting\n")
- done = true
- default:
- // NOP: continue
- }
- if done {
- break
- }
- }
-
- closed := assembler.FlushAll()
- Debug("Final flush: %d closed", closed)
- if outputLevel >= 2 {
- streamPool.Dump()
- }
-
- if *memprofile != "" {
- f, err := os.Create(*memprofile)
- if err != nil {
- log.Fatal(err)
- }
- pprof.WriteHeapProfile(f)
- f.Close()
- }
-
- streamFactory.WaitGoRoutines()
- Debug("%s\n", assembler.Dump())
- if !*nodefrag {
- fmt.Printf("IPdefrag:\t\t%d\n", stats.ipdefrag)
- }
- fmt.Printf("TCP stats:\n")
- fmt.Printf(" missed bytes:\t\t%d\n", stats.missedBytes)
- fmt.Printf(" total packets:\t\t%d\n", stats.pkt)
- fmt.Printf(" rejected FSM:\t\t%d\n", stats.rejectFsm)
- fmt.Printf(" rejected Options:\t%d\n", stats.rejectOpt)
- fmt.Printf(" reassembled bytes:\t%d\n", stats.sz)
- fmt.Printf(" total TCP bytes:\t%d\n", stats.totalsz)
- fmt.Printf(" conn rejected FSM:\t%d\n", stats.rejectConnFsm)
- fmt.Printf(" reassembled chunks:\t%d\n", stats.reassembled)
- fmt.Printf(" out-of-order packets:\t%d\n", stats.outOfOrderPackets)
- fmt.Printf(" out-of-order bytes:\t%d\n", stats.outOfOrderBytes)
- fmt.Printf(" biggest-chunk packets:\t%d\n", stats.biggestChunkPackets)
- fmt.Printf(" biggest-chunk bytes:\t%d\n", stats.biggestChunkBytes)
- fmt.Printf(" overlap packets:\t%d\n", stats.overlapPackets)
- fmt.Printf(" overlap bytes:\t\t%d\n", stats.overlapBytes)
- fmt.Printf("Errors: %d\n", errors)
- for e, _ := range errorsMap {
- fmt.Printf(" %s:\t\t%d\n", e, errorsMap[e])
- }
-}
diff --git a/vendor/github.com/google/gopacket/examples/statsassembly/main.go b/vendor/github.com/google/gopacket/examples/statsassembly/main.go
deleted file mode 100644
index 36da011..0000000
--- a/vendor/github.com/google/gopacket/examples/statsassembly/main.go
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This binary provides sample code for using the gopacket TCP assembler raw,
-// without the help of the tcpreader library. It watches TCP streams and
-// reports statistics on completed streams.
-//
-// It also uses gopacket.DecodingLayerParser instead of the normal
-// gopacket.PacketSource, to highlight the methods, pros, and cons of this
-// approach.
-package main
-
-import (
- "flag"
- "github.com/google/gopacket"
- "github.com/google/gopacket/examples/util"
- "github.com/google/gopacket/layers"
- "github.com/google/gopacket/pcap"
- "github.com/google/gopacket/tcpassembly"
- "log"
- "time"
-)
-
-var iface = flag.String("i", "eth0", "Interface to get packets from")
-var snaplen = flag.Int("s", 65536, "SnapLen for pcap packet capture")
-var filter = flag.String("f", "tcp", "BPF filter for pcap")
-var logAllPackets = flag.Bool("v", false, "Log whenever we see a packet")
-var bufferedPerConnection = flag.Int("connection_max_buffer", 0, `
-Max packets to buffer for a single connection before skipping over a gap in data
-and continuing to stream the connection after the buffer. If zero or less, this
-is infinite.`)
-var bufferedTotal = flag.Int("total_max_buffer", 0, `
-Max packets to buffer total before skipping over gaps in connections and
-continuing to stream connection data. If zero or less, this is infinite`)
-var flushAfter = flag.String("flush_after", "2m", `
-Connections which have buffered packets (they've gotten packets out of order and
-are waiting for old packets to fill the gaps) are flushed after they're this old
-(their oldest gap is skipped). Any string parsed by time.ParseDuration is
-acceptable here`)
-var packetCount = flag.Int("c", -1, `
-Quit after processing this many packets, flushing all currently buffered
-connections. If negative, this is infinite`)
-
-// simpleStreamFactory implements tcpassembly.StreamFactory
-type statsStreamFactory struct{}
-
-// statsStream will handle the actual decoding of stats requests.
-type statsStream struct {
- net, transport gopacket.Flow
- bytes, packets, outOfOrder, skipped int64
- start, end time.Time
- sawStart, sawEnd bool
-}
-
-// New creates a new stream. It's called whenever the assembler sees a stream
-// it isn't currently following.
-func (factory *statsStreamFactory) New(net, transport gopacket.Flow) tcpassembly.Stream {
- log.Printf("new stream %v:%v started", net, transport)
- s := &statsStream{
- net: net,
- transport: transport,
- start: time.Now(),
- }
- s.end = s.start
- // ReaderStream implements tcpassembly.Stream, so we can return a pointer to it.
- return s
-}
-
-// Reassembled is called whenever new packet data is available for reading.
-// Reassembly objects contain stream data IN ORDER.
-func (s *statsStream) Reassembled(reassemblies []tcpassembly.Reassembly) {
- for _, reassembly := range reassemblies {
- if reassembly.Seen.Before(s.end) {
- s.outOfOrder++
- } else {
- s.end = reassembly.Seen
- }
- s.bytes += int64(len(reassembly.Bytes))
- s.packets += 1
- if reassembly.Skip > 0 {
- s.skipped += int64(reassembly.Skip)
- }
- s.sawStart = s.sawStart || reassembly.Start
- s.sawEnd = s.sawEnd || reassembly.End
- }
-}
-
-// ReassemblyComplete is called when the TCP assembler believes a stream has
-// finished.
-func (s *statsStream) ReassemblyComplete() {
- diffSecs := float64(s.end.Sub(s.start)) / float64(time.Second)
- log.Printf("Reassembly of stream %v:%v complete - start:%v end:%v bytes:%v packets:%v ooo:%v bps:%v pps:%v skipped:%v",
- s.net, s.transport, s.start, s.end, s.bytes, s.packets, s.outOfOrder,
- float64(s.bytes)/diffSecs, float64(s.packets)/diffSecs, s.skipped)
-}
-
-func main() {
- defer util.Run()()
-
- flushDuration, err := time.ParseDuration(*flushAfter)
- if err != nil {
- log.Fatal("invalid flush duration: ", *flushAfter)
- }
-
- log.Printf("starting capture on interface %q", *iface)
- // Set up pcap packet capture
- handle, err := pcap.OpenLive(*iface, int32(*snaplen), true, flushDuration/2)
- if err != nil {
- log.Fatal("error opening pcap handle: ", err)
- }
- if err := handle.SetBPFFilter(*filter); err != nil {
- log.Fatal("error setting BPF filter: ", err)
- }
-
- // Set up assembly
- streamFactory := &statsStreamFactory{}
- streamPool := tcpassembly.NewStreamPool(streamFactory)
- assembler := tcpassembly.NewAssembler(streamPool)
- assembler.MaxBufferedPagesPerConnection = *bufferedPerConnection
- assembler.MaxBufferedPagesTotal = *bufferedTotal
-
- log.Println("reading in packets")
-
- // We use a DecodingLayerParser here instead of a simpler PacketSource.
- // This approach should be measurably faster, but is also more rigid.
- // PacketSource will handle any known type of packet safely and easily,
- // but DecodingLayerParser will only handle those packet types we
- // specifically pass in. This trade-off can be quite useful, though, in
- // high-throughput situations.
- var eth layers.Ethernet
- var dot1q layers.Dot1Q
- var ip4 layers.IPv4
- var ip6 layers.IPv6
- var ip6extensions layers.IPv6ExtensionSkipper
- var tcp layers.TCP
- var payload gopacket.Payload
- parser := gopacket.NewDecodingLayerParser(layers.LayerTypeEthernet,
- &eth, &dot1q, &ip4, &ip6, &ip6extensions, &tcp, &payload)
- decoded := make([]gopacket.LayerType, 0, 4)
-
- nextFlush := time.Now().Add(flushDuration / 2)
-
- var byteCount int64
- start := time.Now()
-
-loop:
- for ; *packetCount != 0; *packetCount-- {
- // Check to see if we should flush the streams we have
- // that haven't seen any new data in a while. Note we set a
- // timeout on our PCAP handle, so this should happen even if we
- // never see packet data.
- if time.Now().After(nextFlush) {
- stats, _ := handle.Stats()
- log.Printf("flushing all streams that haven't seen packets in the last 2 minutes, pcap stats: %+v", stats)
- assembler.FlushOlderThan(time.Now().Add(flushDuration))
- nextFlush = time.Now().Add(flushDuration / 2)
- }
-
- // To speed things up, we're also using the ZeroCopy method for
- // reading packet data. This method is faster than the normal
- // ReadPacketData, but the returned bytes in 'data' are
- // invalidated by any subsequent ZeroCopyReadPacketData call.
- // Note that tcpassembly is entirely compatible with this packet
- // reading method. This is another trade-off which might be
- // appropriate for high-throughput sniffing: it avoids a packet
- // copy, but its cost is much more careful handling of the
- // resulting byte slice.
- data, ci, err := handle.ZeroCopyReadPacketData()
-
- if err != nil {
- log.Printf("error getting packet: %v", err)
- continue
- }
- err = parser.DecodeLayers(data, &decoded)
- if err != nil {
- log.Printf("error decoding packet: %v", err)
- continue
- }
- if *logAllPackets {
- log.Printf("decoded the following layers: %v", decoded)
- }
- byteCount += int64(len(data))
- // Find either the IPv4 or IPv6 address to use as our network
- // layer.
- foundNetLayer := false
- var netFlow gopacket.Flow
- for _, typ := range decoded {
- switch typ {
- case layers.LayerTypeIPv4:
- netFlow = ip4.NetworkFlow()
- foundNetLayer = true
- case layers.LayerTypeIPv6:
- netFlow = ip6.NetworkFlow()
- foundNetLayer = true
- case layers.LayerTypeTCP:
- if foundNetLayer {
- assembler.AssembleWithTimestamp(netFlow, &tcp, ci.Timestamp)
- } else {
- log.Println("could not find IPv4 or IPv6 layer, inoring")
- }
- continue loop
- }
- }
- log.Println("could not find TCP layer")
- }
- assembler.FlushAll()
- log.Printf("processed %d bytes in %v", byteCount, time.Since(start))
-}
diff --git a/vendor/github.com/google/gopacket/examples/synscan/main.go b/vendor/github.com/google/gopacket/examples/synscan/main.go
deleted file mode 100644
index 7a2345f..0000000
--- a/vendor/github.com/google/gopacket/examples/synscan/main.go
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// synscan implements a TCP syn scanner on top of pcap.
-// It's more complicated than arpscan, since it has to handle sending packets
-// outside the local network, requiring some routing and ARP work.
-//
-// Since this is just an example program, it aims for simplicity over
-// performance. It doesn't handle sending packets very quickly, it scans IPs
-// serially instead of in parallel, and uses gopacket.Packet instead of
-// gopacket.DecodingLayerParser for packet processing. We also make use of very
-// simple timeout logic with time.Since.
-//
-// Making it blazingly fast is left as an exercise to the reader.
-package main
-
-import (
- "errors"
- "flag"
- "log"
- "net"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/examples/util"
- "github.com/google/gopacket/layers"
- "github.com/google/gopacket/pcap"
- "github.com/google/gopacket/routing"
-)
-
-// scanner handles scanning a single IP address.
-type scanner struct {
- // iface is the interface to send packets on.
- iface *net.Interface
- // destination, gateway (if applicable), and source IP addresses to use.
- dst, gw, src net.IP
-
- handle *pcap.Handle
-
- // opts and buf allow us to easily serialize packets in the send()
- // method.
- opts gopacket.SerializeOptions
- buf gopacket.SerializeBuffer
-}
-
-// newScanner creates a new scanner for a given destination IP address, using
-// router to determine how to route packets to that IP.
-func newScanner(ip net.IP, router routing.Router) (*scanner, error) {
- s := &scanner{
- dst: ip,
- opts: gopacket.SerializeOptions{
- FixLengths: true,
- ComputeChecksums: true,
- },
- buf: gopacket.NewSerializeBuffer(),
- }
- // Figure out the route to the IP.
- iface, gw, src, err := router.Route(ip)
- if err != nil {
- return nil, err
- }
- log.Printf("scanning ip %v with interface %v, gateway %v, src %v", ip, iface.Name, gw, src)
- s.gw, s.src, s.iface = gw, src, iface
-
- // Open the handle for reading/writing.
- // Note we could very easily add some BPF filtering here to greatly
- // decrease the number of packets we have to look at when getting back
- // scan results.
- handle, err := pcap.OpenLive(iface.Name, 65536, true, pcap.BlockForever)
- if err != nil {
- return nil, err
- }
- s.handle = handle
- return s, nil
-}
-
-// close cleans up the handle.
-func (s *scanner) close() {
- s.handle.Close()
-}
-
-// getHwAddr is a hacky but effective way to get the destination hardware
-// address for our packets. It does an ARP request for our gateway (if there is
-// one) or destination IP (if no gateway is necessary), then waits for an ARP
-// reply. This is pretty slow right now, since it blocks on the ARP
-// request/reply.
-func (s *scanner) getHwAddr() (net.HardwareAddr, error) {
- start := time.Now()
- arpDst := s.dst
- if s.gw != nil {
- arpDst = s.gw
- }
- // Prepare the layers to send for an ARP request.
- eth := layers.Ethernet{
- SrcMAC: s.iface.HardwareAddr,
- DstMAC: net.HardwareAddr{0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
- EthernetType: layers.EthernetTypeARP,
- }
- arp := layers.ARP{
- AddrType: layers.LinkTypeEthernet,
- Protocol: layers.EthernetTypeIPv4,
- HwAddressSize: 6,
- ProtAddressSize: 4,
- Operation: layers.ARPRequest,
- SourceHwAddress: []byte(s.iface.HardwareAddr),
- SourceProtAddress: []byte(s.src),
- DstHwAddress: []byte{0, 0, 0, 0, 0, 0},
- DstProtAddress: []byte(arpDst),
- }
- // Send a single ARP request packet (we never retry a send, since this
- // is just an example ;)
- if err := s.send(&eth, &arp); err != nil {
- return nil, err
- }
- // Wait 3 seconds for an ARP reply.
- for {
- if time.Since(start) > time.Second*3 {
- return nil, errors.New("timeout getting ARP reply")
- }
- data, _, err := s.handle.ReadPacketData()
- if err == pcap.NextErrorTimeoutExpired {
- continue
- } else if err != nil {
- return nil, err
- }
- packet := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.NoCopy)
- if arpLayer := packet.Layer(layers.LayerTypeARP); arpLayer != nil {
- arp := arpLayer.(*layers.ARP)
- if net.IP(arp.SourceProtAddress).Equal(net.IP(arpDst)) {
- return net.HardwareAddr(arp.SourceHwAddress), nil
- }
- }
- }
-}
-
-// scan scans the dst IP address of this scanner.
-func (s *scanner) scan() error {
- // First off, get the MAC address we should be sending packets to.
- hwaddr, err := s.getHwAddr()
- if err != nil {
- return err
- }
- // Construct all the network layers we need.
- eth := layers.Ethernet{
- SrcMAC: s.iface.HardwareAddr,
- DstMAC: hwaddr,
- EthernetType: layers.EthernetTypeIPv4,
- }
- ip4 := layers.IPv4{
- SrcIP: s.src,
- DstIP: s.dst,
- Version: 4,
- TTL: 64,
- Protocol: layers.IPProtocolTCP,
- }
- tcp := layers.TCP{
- SrcPort: 54321,
- DstPort: 0, // will be incremented during the scan
- SYN: true,
- }
- tcp.SetNetworkLayerForChecksum(&ip4)
-
- // Create the flow we expect returning packets to have, so we can check
- // against it and discard useless packets.
- ipFlow := gopacket.NewFlow(layers.EndpointIPv4, s.dst, s.src)
- start := time.Now()
- for {
- // Send one packet per loop iteration until we've sent packets
- // to all of ports [1, 65535].
- if tcp.DstPort < 65535 {
- start = time.Now()
- tcp.DstPort++
- if err := s.send(&eth, &ip4, &tcp); err != nil {
- log.Printf("error sending to port %v: %v", tcp.DstPort, err)
- }
- }
- // Time out 5 seconds after the last packet we sent.
- if time.Since(start) > time.Second*5 {
- log.Printf("timed out for %v, assuming we've seen all we can", s.dst)
- return nil
- }
-
- // Read in the next packet.
- data, _, err := s.handle.ReadPacketData()
- if err == pcap.NextErrorTimeoutExpired {
- continue
- } else if err != nil {
- log.Printf("error reading packet: %v", err)
- continue
- }
-
- // Parse the packet. We'd use DecodingLayerParser here if we
- // wanted to be really fast.
- packet := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.NoCopy)
-
- // Find the packets we care about, and print out logging
- // information about them. All others are ignored.
- if net := packet.NetworkLayer(); net == nil {
- // log.Printf("packet has no network layer")
- } else if net.NetworkFlow() != ipFlow {
- // log.Printf("packet does not match our ip src/dst")
- } else if tcpLayer := packet.Layer(layers.LayerTypeTCP); tcpLayer == nil {
- // log.Printf("packet has not tcp layer")
- } else if tcp, ok := tcpLayer.(*layers.TCP); !ok {
- // We panic here because this is guaranteed to never
- // happen.
- panic("tcp layer is not tcp layer :-/")
- } else if tcp.DstPort != 54321 {
- // log.Printf("dst port %v does not match", tcp.DstPort)
- } else if tcp.RST {
- log.Printf(" port %v closed", tcp.SrcPort)
- } else if tcp.SYN && tcp.ACK {
- log.Printf(" port %v open", tcp.SrcPort)
- } else {
- // log.Printf("ignoring useless packet")
- }
- }
-}
-
-// send sends the given layers as a single packet on the network.
-func (s *scanner) send(l ...gopacket.SerializableLayer) error {
- if err := gopacket.SerializeLayers(s.buf, s.opts, l...); err != nil {
- return err
- }
- return s.handle.WritePacketData(s.buf.Bytes())
-}
-
-func main() {
- defer util.Run()()
- router, err := routing.New()
- if err != nil {
- log.Fatal("routing error:", err)
- }
- for _, arg := range flag.Args() {
- var ip net.IP
- if ip = net.ParseIP(arg); ip == nil {
- log.Printf("non-ip target: %q", arg)
- continue
- } else if ip = ip.To4(); ip == nil {
- log.Printf("non-ipv4 target: %q", arg)
- continue
- }
- // Note: newScanner creates and closes a pcap Handle once for
- // every scan target. We could do much better, were this not an
- // example ;)
- s, err := newScanner(ip, router)
- if err != nil {
- log.Printf("unable to create scanner for %v: %v", ip, err)
- continue
- }
- if err := s.scan(); err != nil {
- log.Printf("unable to scan %v: %v", ip, err)
- }
- s.close()
- }
-}
diff --git a/vendor/github.com/google/gopacket/examples/util/util.go b/vendor/github.com/google/gopacket/examples/util/util.go
deleted file mode 100644
index 0f698fb..0000000
--- a/vendor/github.com/google/gopacket/examples/util/util.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package util provides shared utilities for all gopacket examples.
-package util
-
-import (
- "flag"
- "log"
- "os"
- "runtime/pprof"
-)
-
-var cpuprofile = flag.String("cpuprofile", "", "Where to write CPU profile")
-
-// Run starts up stuff at the beginning of a main function, and returns a
-// function to defer until the function completes. It should be used like this:
-//
-// func main() {
-// defer util.Run()()
-// ... stuff ...
-// }
-func Run() func() {
- flag.Parse()
- if *cpuprofile != "" {
- f, err := os.Create(*cpuprofile)
- if err != nil {
- log.Fatalf("could not open cpu profile file %q", *cpuprofile)
- }
- pprof.StartCPUProfile(f)
- return func() {
- pprof.StopCPUProfile()
- f.Close()
- }
- }
- return func() {}
-}
diff --git a/vendor/github.com/google/gopacket/ip4defrag/defrag.go b/vendor/github.com/google/gopacket/ip4defrag/defrag.go
deleted file mode 100644
index 9d3862f..0000000
--- a/vendor/github.com/google/gopacket/ip4defrag/defrag.go
+++ /dev/null
@@ -1,350 +0,0 @@
-// Copyright 2013 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package ip4defrag implements a IPv4 defragmenter
-package ip4defrag
-
-import (
- "container/list"
- "errors"
- "fmt"
- "log"
- "sync"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
-)
-
-// Quick and Easy to use debug code to trace
-// how defrag works.
-var debug debugging = false // or flip to true
-type debugging bool
-
-func (d debugging) Printf(format string, args ...interface{}) {
- if d {
- log.Printf(format, args...)
- }
-}
-
-// Constants determining how to handle fragments.
-const (
- IPv4MinimumFragmentSize = 576 // Minimum size of a single fragment
- IPv4MaximumSize = 65535 // Maximum size of a fragment (2^16)
- IPv4MaximumFragmentOffset = 8189 // Maximum offset of a fragment
- IPv4MaximumFragmentListLen = 8 // Back out if we get more than this many fragments
-)
-
-// DefragIPv4 takes in an IPv4 packet with a fragment payload.
-//
-// It do not modify the IPv4 layer in place, 'in' remains untouched
-// It returns a ready-to be used IPv4 layer.
-//
-// If the passed-in IPv4 layer is NOT fragmented, it will
-// immediately return it without modifying the layer.
-//
-// If the IPv4 layer is a fragment and we don't have all
-// fragments, it will return nil and store whatever internal
-// information it needs to eventually defrag the packet.
-//
-// If the IPv4 layer is the last fragment needed to reconstruct
-// the packet, a new IPv4 layer will be returned, and will be set to
-// the entire defragmented packet,
-//
-// It use a map of all the running flows
-//
-// Usage example:
-//
-// func HandlePacket(in *layers.IPv4) err {
-// defragger := ip4defrag.NewIPv4Defragmenter()
-// in, err := defragger.DefragIPv4(in)
-// if err != nil {
-// return err
-// } else if in == nil {
-// return nil // packet fragment, we don't have whole packet yet.
-// }
-// // At this point, we know that 'in' is defragmented.
-// //It may be the same 'in' passed to
-// // HandlePacket, or it may not, but we don't really care :)
-// ... do stuff to 'in' ...
-//}
-//
-func (d *IPv4Defragmenter) DefragIPv4(in *layers.IPv4) (*layers.IPv4, error) {
- return d.DefragIPv4WithTimestamp(in, time.Now())
-}
-
-// DefragIPv4WithTimestamp provides functionality of DefragIPv4 with
-// an additional timestamp parameter which is used for discarding
-// old fragments instead of time.Now()
-//
-// This is useful when operating on pcap files instead of live captured data
-//
-func (d *IPv4Defragmenter) DefragIPv4WithTimestamp(in *layers.IPv4, t time.Time) (*layers.IPv4, error) {
- // check if we need to defrag
- if st := d.dontDefrag(in); st == true {
- debug.Printf("defrag: do nothing, do not need anything")
- return in, nil
- }
- // perfom security checks
- st, err := d.securityChecks(in)
- if err != nil || st == false {
- debug.Printf("defrag: alert security check")
- return nil, err
- }
-
- // ok, got a fragment
- debug.Printf("defrag: got a new fragment in.Id=%d in.FragOffset=%d in.Flags=%d\n",
- in.Id, in.FragOffset*8, in.Flags)
-
- // have we already seen a flow between src/dst with that Id?
- ipf := newIPv4(in)
- var fl *fragmentList
- var exist bool
- d.Lock()
- fl, exist = d.ipFlows[ipf]
- if !exist {
- debug.Printf("defrag: unknown flow, creating a new one\n")
- fl = new(fragmentList)
- d.ipFlows[ipf] = fl
- }
- d.Unlock()
- // insert, and if final build it
- out, err2 := fl.insert(in, t)
-
- // at last, if we hit the maximum frag list len
- // without any defrag success, we just drop everything and
- // raise an error
- if out == nil && fl.List.Len()+1 > IPv4MaximumFragmentListLen {
- d.flush(ipf)
- return nil, fmt.Errorf("defrag: Fragment List hits its maximum"+
- "size(%d), without success. Flushing the list",
- IPv4MaximumFragmentListLen)
- }
-
- // if we got a packet, it's a new one, and he is defragmented
- if out != nil {
- // when defrag is done for a flow between two ip
- // clean the list
- d.flush(ipf)
- return out, nil
- }
- return nil, err2
-}
-
-// DiscardOlderThan forgets all packets without any activity since
-// time t. It returns the number of FragmentList aka number of
-// fragment packets it has discarded.
-func (d *IPv4Defragmenter) DiscardOlderThan(t time.Time) int {
- var nb int
- d.Lock()
- for k, v := range d.ipFlows {
- if v.LastSeen.Before(t) {
- nb = nb + 1
- delete(d.ipFlows, k)
- }
- }
- d.Unlock()
- return nb
-}
-
-// flush the fragment list for a particular flow
-func (d *IPv4Defragmenter) flush(ipf ipv4) {
- d.Lock()
- fl := new(fragmentList)
- d.ipFlows[ipf] = fl
- d.Unlock()
-}
-
-// dontDefrag returns true if the IPv4 packet do not need
-// any defragmentation
-func (d *IPv4Defragmenter) dontDefrag(ip *layers.IPv4) bool {
- // don't defrag packet with DF flag
- if ip.Flags&layers.IPv4DontFragment != 0 {
- return true
- }
- // don't defrag not fragmented ones
- if ip.Flags&layers.IPv4MoreFragments == 0 && ip.FragOffset == 0 {
- return true
- }
- return false
-}
-
-// securityChecks performs the needed security checks
-func (d *IPv4Defragmenter) securityChecks(ip *layers.IPv4) (bool, error) {
- // don't allow too big fragment offset
- if ip.FragOffset > IPv4MaximumFragmentOffset {
- return false, fmt.Errorf("defrag: fragment offset too big "+
- "(handcrafted? %d > %d)", ip.FragOffset, IPv4MaximumFragmentOffset)
- }
- fragOffset := ip.FragOffset * 8
-
- // don't allow fragment that would oversize an IP packet
- if fragOffset+ip.Length > IPv4MaximumSize {
- return false, fmt.Errorf("defrag: fragment will overrun "+
- "(handcrafted? %d > %d)", ip.FragOffset*8+ip.Length, IPv4MaximumSize)
- }
-
- return true, nil
-}
-
-// fragmentList holds a container/list used to contains IP
-// packets/fragments. It stores internal counters to track the
-// maximum total of byte, and the current length it has received.
-// It also stores a flag to know if he has seen the last packet.
-type fragmentList struct {
- List list.List
- Highest uint16
- Current uint16
- FinalReceived bool
- LastSeen time.Time
-}
-
-// insert insert an IPv4 fragment/packet into the Fragment List
-// It use the following strategy : we are inserting fragment based
-// on their offset, latest first. This is sometimes called BSD-Right.
-// See: http://www.sans.org/reading-room/whitepapers/detection/ip-fragment-reassembly-scapy-33969
-func (f *fragmentList) insert(in *layers.IPv4, t time.Time) (*layers.IPv4, error) {
- // TODO: should keep a copy of *in in the list
- // or not (ie the packet source is reliable) ? -> depends on Lazy / last packet
- fragOffset := in.FragOffset * 8
- if fragOffset >= f.Highest {
- f.List.PushBack(in)
- } else {
- for e := f.List.Front(); e != nil; e = e.Next() {
- frag, _ := e.Value.(*layers.IPv4)
- if in.FragOffset == frag.FragOffset {
- // TODO: what if we receive a fragment
- // that begins with duplicate data but
- // *also* has new data? For example:
- //
- // AAAA
- // BB
- // BBCC
- // DDDD
- //
- // In this situation we completely
- // ignore CC and the complete packet can
- // never be reassembled.
- debug.Printf("defrag: ignoring frag %d as we already have it (duplicate?)\n",
- fragOffset)
- return nil, nil
- }
- if in.FragOffset < frag.FragOffset {
- debug.Printf("defrag: inserting frag %d before existing frag %d\n",
- fragOffset, frag.FragOffset*8)
- f.List.InsertBefore(in, e)
- break
- }
- }
- }
-
- f.LastSeen = t
-
- fragLength := in.Length - 20
- // After inserting the Fragment, we update the counters
- if f.Highest < fragOffset+fragLength {
- f.Highest = fragOffset + fragLength
- }
- f.Current = f.Current + fragLength
-
- debug.Printf("defrag: insert ListLen: %d Highest:%d Current:%d\n",
- f.List.Len(),
- f.Highest, f.Current)
-
- // Final Fragment ?
- if in.Flags&layers.IPv4MoreFragments == 0 {
- f.FinalReceived = true
- }
- // Ready to try defrag ?
- if f.FinalReceived && f.Highest == f.Current {
- return f.build(in)
- }
- return nil, nil
-}
-
-// Build builds the final datagram, modifying ip in place.
-// It puts priority to packet in the early position of the list.
-// See Insert for more details.
-func (f *fragmentList) build(in *layers.IPv4) (*layers.IPv4, error) {
- var final []byte
- var currentOffset uint16
-
- debug.Printf("defrag: building the datagram \n")
- for e := f.List.Front(); e != nil; e = e.Next() {
- frag, _ := e.Value.(*layers.IPv4)
- if frag.FragOffset*8 == currentOffset {
- debug.Printf("defrag: building - adding %d\n", frag.FragOffset*8)
- final = append(final, frag.Payload...)
- currentOffset = currentOffset + frag.Length - 20
- } else if frag.FragOffset*8 < currentOffset {
- // overlapping fragment - let's take only what we need
- startAt := currentOffset - frag.FragOffset*8
- debug.Printf("defrag: building - overlapping, starting at %d\n",
- startAt)
- if startAt > frag.Length-20 {
- return nil, errors.New("defrag: building - invalid fragment")
- }
- final = append(final, frag.Payload[startAt:]...)
- currentOffset = currentOffset + frag.FragOffset*8
- } else {
- // Houston - we have an hole !
- debug.Printf("defrag: hole found while building, " +
- "stopping the defrag process\n")
- return nil, errors.New("defrag: building - hole found")
- }
- debug.Printf("defrag: building - next is %d\n", currentOffset)
- }
-
- // TODO recompute IP Checksum
- out := &layers.IPv4{
- Version: in.Version,
- IHL: in.IHL,
- TOS: in.TOS,
- Length: f.Highest,
- Id: 0,
- Flags: 0,
- FragOffset: 0,
- TTL: in.TTL,
- Protocol: in.Protocol,
- Checksum: 0,
- SrcIP: in.SrcIP,
- DstIP: in.DstIP,
- Options: in.Options,
- Padding: in.Padding,
- }
- out.Payload = final
-
- return out, nil
-}
-
-// ipv4 is a struct to be used as a key.
-type ipv4 struct {
- ip4 gopacket.Flow
- id uint16
-}
-
-// newIPv4 returns a new initialized IPv4 Flow
-func newIPv4(ip *layers.IPv4) ipv4 {
- return ipv4{
- ip4: ip.NetworkFlow(),
- id: ip.Id,
- }
-}
-
-// IPv4Defragmenter is a struct which embedded a map of
-// all fragment/packet.
-type IPv4Defragmenter struct {
- sync.RWMutex
- ipFlows map[ipv4]*fragmentList
-}
-
-// NewIPv4Defragmenter returns a new IPv4Defragmenter
-// with an initialized map.
-func NewIPv4Defragmenter() *IPv4Defragmenter {
- return &IPv4Defragmenter{
- ipFlows: make(map[ipv4]*fragmentList),
- }
-}
diff --git a/vendor/github.com/google/gopacket/ip4defrag/defrag_test.go b/vendor/github.com/google/gopacket/ip4defrag/defrag_test.go
deleted file mode 100644
index 1eb66d2..0000000
--- a/vendor/github.com/google/gopacket/ip4defrag/defrag_test.go
+++ /dev/null
@@ -1,1396 +0,0 @@
-// Copyright 2013 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package ip4defrag
-
-import (
- "bytes"
- "fmt"
- "net"
- "testing"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/bytediff"
- "github.com/google/gopacket/layers"
-)
-
-func TestNotFrag(t *testing.T) {
- ip := layers.IPv4{
- Version: 4,
- TTL: 220,
- SrcIP: net.IPv4(1, 1, 1, 1),
- DstIP: net.IPv4(2, 2, 2, 2),
- Flags: layers.IPv4DontFragment,
- }
- defrag := NewIPv4Defragmenter()
-
- out, err := defrag.DefragIPv4(&ip)
- if out == nil || err != nil {
- t.Errorf("defrag: this packet do not need to be defrag ['%s']", err)
- }
-}
-
-func TestDefragPingMultipleFrags(t *testing.T) {
- defrag := NewIPv4Defragmenter()
-
- // We inject the 4 fragments and test the DefragIPv4 interface
- gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
- gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
- gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
- gentestDefrag(t, defrag, testPing1Frag3, false, "Ping1Frag3")
- gentestDefrag(t, defrag, testPing1Frag2, false, "Ping1Frag2")
- ip := gentestDefrag(t, defrag, testPing1Frag4, true, "Ping1Frag4")
-
- if len(ip.Payload) != 4508 {
- t.Fatalf("defrag: expecting a packet of 4508 bytes, got %d", len(ip.Payload))
- }
-
- validPayload := append(testPing1Frag1[34:], testPing1Frag2[34:]...)
- validPayload = append(validPayload, testPing1Frag3[34:]...)
- validPayload = append(validPayload, testPing1Frag4[34:]...)
-
- if bytes.Compare(validPayload, ip.Payload) != 0 {
- fmt.Println(bytediff.BashOutput.String(
- bytediff.Diff(validPayload, ip.Payload)))
- t.Errorf("defrag: payload is not correctly defragmented")
- }
-}
-
-func TestDefragPing1(t *testing.T) {
- defrag := NewIPv4Defragmenter()
-
- // We inject the 4 fragments and test the DefragIPv4 interface
- gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
- gentestDefrag(t, defrag, testPing1Frag3, false, "Ping1Frag3")
- gentestDefrag(t, defrag, testPing1Frag2, false, "Ping1Frag2")
- ip := gentestDefrag(t, defrag, testPing1Frag4, true, "Ping1Frag4")
-
- if len(ip.Payload) != 4508 {
- t.Fatalf("defrag: expecting a packet of 4508 bytes, got %d", len(ip.Payload))
- }
-
- validPayload := append(testPing1Frag1[34:], testPing1Frag2[34:]...)
- validPayload = append(validPayload, testPing1Frag3[34:]...)
- validPayload = append(validPayload, testPing1Frag4[34:]...)
-
- if bytes.Compare(validPayload, ip.Payload) != 0 {
- fmt.Println(bytediff.BashOutput.String(
- bytediff.Diff(validPayload, ip.Payload)))
- t.Errorf("defrag: payload is not correctly defragmented")
- }
-
- // We redo the same test to handle duplication, and be sure
- // that the internal list is correctly cleaned up.
- gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
- gentestDefrag(t, defrag, testPing1Frag3, false, "Ping1Frag3")
- gentestDefrag(t, defrag, testPing1Frag2, false, "Ping1Frag2")
- ip2 := gentestDefrag(t, defrag, testPing1Frag4, true, "Ping1Frag4")
-
- if bytes.Compare(ip2.Payload, ip.Payload) != 0 {
- fmt.Println(bytediff.BashOutput.String(
- bytediff.Diff(validPayload, ip.Payload)))
- t.Errorf("defrag: ip and ip2 payload are different")
- }
-}
-
-func TestDefragPing1and2(t *testing.T) {
- debug = false
- defrag := NewIPv4Defragmenter()
-
- // We inject the 8 mixed fragments from two "flows"
- // and test the DefragIPv4 interface
- gentestDefrag(t, defrag, testPing1Frag1, false, "Ping1Frag1")
- gentestDefrag(t, defrag, testPing1Frag3, false, "Ping1Frag3")
- gentestDefrag(t, defrag, testPing2Frag3, false, "Ping2Frag3")
- gentestDefrag(t, defrag, testPing2Frag4, false, "Ping2Frag4")
- gentestDefrag(t, defrag, testPing1Frag2, false, "Ping1Frag2")
- gentestDefrag(t, defrag, testPing2Frag1, false, "Ping2Frag1")
- ip := gentestDefrag(t, defrag, testPing1Frag4, true, "Ping1Frag4")
-
- if len(ip.Payload) != 4508 {
- t.Fatalf("defrag: expecting a packet Ping1 of 4508 bytes, got %d",
- len(ip.Payload))
- }
-
- validPayload := append(testPing1Frag1[34:], testPing1Frag2[34:]...)
- validPayload = append(validPayload, testPing1Frag3[34:]...)
- validPayload = append(validPayload, testPing1Frag4[34:]...)
-
- if bytes.Compare(validPayload, ip.Payload) != 0 {
- fmt.Println(bytediff.BashOutput.String(
- bytediff.Diff(validPayload, ip.Payload)))
- t.Errorf("defrag: payload Ping1 is not correctly defragmented")
- }
-
- ip = gentestDefrag(t, defrag, testPing2Frag2, true, "Ping2Frag2")
- if len(ip.Payload) != 4508 {
- t.Fatalf("defrag: expecting a packet Ping2 of 4508 bytes, got %d",
- len(ip.Payload))
- }
-
- validPayload2 := append(testPing2Frag1[34:], testPing2Frag2[34:]...)
- validPayload2 = append(validPayload2, testPing2Frag3[34:]...)
- validPayload2 = append(validPayload2, testPing2Frag4[34:]...)
-
- if bytes.Compare(validPayload2, ip.Payload) != 0 {
- fmt.Println(bytediff.BashOutput.String(
- bytediff.Diff(validPayload2, ip.Payload)))
- t.Errorf("defrag: payload Ping2 is not correctly defragmented")
- }
- debug = false
-}
-
-func TestDefragPingTooMuch(t *testing.T) {
- defrag := NewIPv4Defragmenter()
-
- ip1 := layers.IPv4{
- Version: 4,
- TTL: 15,
- SrcIP: net.IPv4(1, 1, 1, 1),
- DstIP: net.IPv4(2, 2, 2, 2),
- Id: 0xcc,
- FragOffset: 0,
- Length: 500,
- Flags: layers.IPv4MoreFragments,
- }
- defrag.DefragIPv4(&ip1)
- for i := 2; i < 8; i = i + 1 {
- nip := ip1
- nip.FragOffset = ip1.Length * uint16(i)
- out, err := defrag.DefragIPv4(&nip)
- if err != nil || out != nil {
- t.Fatalf("defrag: %s", err)
- }
-
- }
- ip8 := ip1
- ip8.FragOffset = 666
-
- _, err := defrag.DefragIPv4(&ip8)
- if err == nil {
- t.Fatalf("defrag: Maximum number of fragments are supposed to be 8")
- }
-}
-
-func gentestDefrag(t *testing.T, defrag *IPv4Defragmenter, buf []byte, expect bool, label string) *layers.IPv4 {
- p := gopacket.NewPacket(buf, layers.LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- ipL := p.Layer(layers.LayerTypeIPv4)
- in, _ := ipL.(*layers.IPv4)
-
- out, err := defrag.DefragIPv4(in)
- if err != nil {
- t.Fatalf("defrag: %s", err)
- }
- status := false
- if out != nil {
- status = true
- }
- if status != expect {
- t.Fatalf("defrag: a fragment was not detected (%s)", label)
- }
- return out
-}
-
-/* Frame 1-1 (1514 bytes) */
-var testPing1Frag1 = []byte{
- 0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
- 0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
- 0x05, 0xdc, 0xb3, 0xe1, 0x20, 0x00, 0x40, 0x01, /* .... .@. */
- 0xcf, 0x70, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* .p...... */
- 0x08, 0x08, 0x08, 0x00, 0x45, 0xa6, 0x14, 0xbf, /* ....E... */
- 0x00, 0x01, 0x9e, 0x3e, 0x20, 0x55, 0x00, 0x00, /* ...> U.. */
- 0x00, 0x00, 0x16, 0x91, 0x0d, 0x00, 0x00, 0x00, /* ........ */
- 0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, /* .. */
-}
-
-/* Frame (1514 bytes) */
-var testPing1Frag2 = []byte{
- 0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
- 0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
- 0x05, 0xdc, 0xb3, 0xe1, 0x20, 0xb9, 0x40, 0x01, /* .... .@. */
- 0xce, 0xb7, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
- 0x08, 0x08, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, /* .. */
-}
-
-/* Frame (1514 bytes) */
-var testPing1Frag3 = []byte{
- 0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
- 0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
- 0x05, 0xdc, 0xb3, 0xe1, 0x21, 0x72, 0x40, 0x01, /* ....!r@. */
- 0xcd, 0xfe, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
- 0x08, 0x08, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, /* NO */
-}
-
-/* Frame (102 bytes) */
-var testPing1Frag4 = []byte{
- 0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
- 0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
- 0x00, 0x58, 0xb3, 0xe1, 0x02, 0x2b, 0x40, 0x01, /* .X...+@. */
- 0xf2, 0xc9, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
- 0x08, 0x08, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* ..PQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, /* ...... */
-}
-
-/* Frame (1514 bytes) */
-var testPing2Frag1 = []byte{
- 0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
- 0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
- 0x05, 0xdc, 0xb4, 0x9e, 0x20, 0x00, 0x40, 0x01, /* .... .@. */
- 0xce, 0xb3, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
- 0x08, 0x08, 0x08, 0x00, 0x9e, 0xa0, 0x14, 0xbf, /* ........ */
- 0x00, 0x02, 0x9f, 0x3e, 0x20, 0x55, 0x00, 0x00, /* ...> U.. */
- 0x00, 0x00, 0xbc, 0x95, 0x0d, 0x00, 0x00, 0x00, /* ........ */
- 0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, /* .. */
-}
-
-/* Frame (1514 bytes) */
-var testPing2Frag2 = []byte{
- 0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
- 0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
- 0x05, 0xdc, 0xb4, 0x9e, 0x20, 0xb9, 0x40, 0x01, /* .... .@. */
- 0xcd, 0xfa, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
- 0x08, 0x08, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, /* .. */
-}
-
-/* Frame (1514 bytes) */
-var testPing2Frag3 = []byte{
- 0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
- 0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
- 0x05, 0xdc, 0xb4, 0x9e, 0x21, 0x72, 0x40, 0x01, /* ....!r@. */
- 0xcd, 0x41, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* .A...... */
- 0x08, 0x08, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* NOPQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, /* ........ */
- 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, /* ........ */
- 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, /* ........ */
- 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, /* ........ */
- 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, /* ........ */
- 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, /* ........ */
- 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, /* ........ */
- 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, /* ........ */
- 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, /* ........ */
- 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, /* ........ */
- 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, /* ........ */
- 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, /* ........ */
- 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, /* ........ */
- 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, /* ........ */
- 0xfe, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, /* ........ */
- 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, /* ........ */
- 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, /* ........ */
- 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, /* ........ */
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, /* .. !"#$% */
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* &'()*+,- */
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* ./012345 */
- 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, /* 6789:;<= */
- 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, /* >?@ABCDE */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, /* FGHIJKLM */
- 0x4e, 0x4f, /* NO */
-}
-
-/* Frame (102 bytes) */
-var testPing2Frag4 = []byte{
- 0xf4, 0xca, 0xe5, 0x4e, 0xe1, 0x46, 0x7c, 0x7a, /* ...N.F|z */
- 0x91, 0x7d, 0x7c, 0x74, 0x08, 0x00, 0x45, 0x00, /* .}|t..E. */
- 0x00, 0x58, 0xb4, 0x9e, 0x02, 0x2b, 0x40, 0x01, /* .X...+@. */
- 0xf2, 0x0c, 0xc0, 0xa8, 0x01, 0x17, 0x08, 0x08, /* ........ */
- 0x08, 0x08, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, /* ..PQRSTU */
- 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, /* VWXYZ[\] */
- 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* ^_`abcde */
- 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, /* fghijklm */
- 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, /* nopqrstu */
- 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, /* vwxyz{|} */
- 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, /* ~....... */
- 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, /* ........ */
- 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, /* ...... */
-}
diff --git a/vendor/github.com/google/gopacket/layers/base_test.go b/vendor/github.com/google/gopacket/layers/base_test.go
deleted file mode 100644
index 4be7480..0000000
--- a/vendor/github.com/google/gopacket/layers/base_test.go
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This file contains some test helper functions.
-
-package layers
-
-import (
- "github.com/google/gopacket"
- "testing"
-)
-
-func min(a, b int) int {
- if a < b {
- return a
- }
- return b
-}
-
-func checkLayers(p gopacket.Packet, want []gopacket.LayerType, t *testing.T) {
- layers := p.Layers()
- t.Log("Checking packet layers, want", want)
- for _, l := range layers {
- t.Logf(" Got layer %v, %d bytes, payload of %d bytes", l.LayerType(),
- len(l.LayerContents()), len(l.LayerPayload()))
- }
- t.Log(p)
- if len(layers) != len(want) {
- t.Errorf(" Number of layers mismatch: got %d want %d", len(layers),
- len(want))
- return
- }
- for i, l := range layers {
- if l.LayerType() != want[i] {
- t.Errorf(" Layer %d mismatch: got %v want %v", i, l.LayerType(),
- want[i])
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/bfd_test.go b/vendor/github.com/google/gopacket/layers/bfd_test.go
deleted file mode 100644
index 1ac84cb..0000000
--- a/vendor/github.com/google/gopacket/layers/bfd_test.go
+++ /dev/null
@@ -1,289 +0,0 @@
-// Copyright 2017 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-//
-//******************************************************************************
-
-package layers
-
-import (
- "github.com/google/gopacket"
- "reflect"
- "testing"
-)
-
-//******************************************************************************
-
-// checkBFD() uses the bfd.go code to analyse the packet bytes as an BFD Control
-// packet and generate an BFD object. It then compares the generated BFD object
-// with the one provided and throws an error if there is any difference.
-// The desc argument is output with any failure message to identify the test.
-func checkBFD(desc string, t *testing.T, packetBytes []byte, pExpectedBFD *BFD) {
-
- // Analyse the packet bytes, yielding a new packet object p.
- p := gopacket.NewPacket(packetBytes, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Errorf("Failed to decode packet %s: %v", desc, p.ErrorLayer().Error())
- }
-
- // Ensure that the packet analysis yielded the correct set of layers:
- // Link Layer = Ethernet.
- // Network Layer = IPv4.
- // Transport Layer = UDP.
- // Application Layer = BFD.
- checkLayers(p, []gopacket.LayerType{
- LayerTypeEthernet,
- LayerTypeIPv4,
- LayerTypeUDP,
- LayerTypeBFD}, t)
-
- // Select the Application (BFD) layer.
- pResultBFD, ok := p.ApplicationLayer().(*BFD)
- if !ok {
- t.Error("No BFD layer type found in packet in " + desc + ".")
- }
-
- // Compare the generated BFD object with the expected BFD object.
- if !reflect.DeepEqual(pResultBFD, pExpectedBFD) {
- t.Errorf("BFD packet processing failed for packet "+desc+
- ":\ngot :\n%#v\n\nwant :\n%#v\n\n", pResultBFD, pExpectedBFD)
- }
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{}
- err := pResultBFD.SerializeTo(buf, opts)
- if err != nil {
- t.Error(err)
- }
- if !reflect.DeepEqual(pResultBFD.Contents, buf.Bytes()) {
- t.Errorf("BFD packet serialization failed for packet "+desc+
- ":\ngot :\n%+v\n\nwant :\n%+v\n\n", buf.Bytes(), pResultBFD.Contents)
- }
-
-}
-
-func TestBFDNoAuth(t *testing.T) {
- // This test packet is based off of the first BFD packet in the BFD sample capture
- // pcap file bfd-raw-auth-simple.pcap on the Wireshark sample captures page:
- //
- // https://wiki.wireshark.org/SampleCaptures
- // https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=bfd-raw-auth-simple.pcap
- //
- // Changed to remove the authentication header, and adjust all of the lengths
- var testPacketBFD = []byte{
- 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x10, 0x94, 0x00, 0x00, 0x02, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x11, 0x2f, 0x58, 0xc0, 0x55, 0x01, 0x02, 0xc0, 0x00,
- 0x00, 0x01, 0xc0, 0x00, 0x0e, 0xc8, 0x00, 0x20, 0x72, 0x31, 0x20, 0x40, 0x05, 0x18, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x4e, 0x0a, 0x90, 0x40,
- }
-
- // Assemble the BFD object that we expect to emerge from this test.
- pExpectedBFD := &BFD{
- BaseLayer: BaseLayer{
- Contents: []byte{
- 0x20, 0x40, 0x05, 0x18, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
- 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00,
- },
- Payload: nil,
- },
- Version: 1,
- Diagnostic: BFDDiagnosticNone,
- State: BFDStateDown,
- Poll: false,
- Final: false,
- ControlPlaneIndependent: false,
- AuthPresent: false,
- Demand: false,
- Multipoint: false,
- DetectMultiplier: 5,
- MyDiscriminator: 1,
- YourDiscriminator: 0,
- DesiredMinTxInterval: 1000000,
- RequiredMinRxInterval: 1000000,
- RequiredMinEchoRxInterval: 0,
- AuthHeader: nil,
- }
-
- checkBFD("testNoAuth", t, testPacketBFD, pExpectedBFD)
-}
-
-//******************************************************************************
-
-func TestBFDAuthTypePassword(t *testing.T) {
-
- // This test packet is the first BFD packet in the BFD sample capture
- // pcap file bfd-raw-auth-simple.pcap on the Wireshark sample captures page:
- //
- // https://wiki.wireshark.org/SampleCaptures
- // https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=bfd-raw-auth-simple.pcap
- var testPacketBFD = []byte{
- 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x10, 0x94, 0x00, 0x00, 0x02, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x11, 0x2f, 0x58, 0xc0, 0x55, 0x01, 0x02, 0xc0, 0x00,
- 0x00, 0x01, 0xc0, 0x00, 0x0e, 0xc8, 0x00, 0x29, 0x72, 0x31, 0x20, 0x44, 0x05, 0x21, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x09, 0x02, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x0a, 0x90, 0x40,
- }
-
- // Assemble the BFD object that we expect to emerge from this test.
- pExpectedBFD := &BFD{
- BaseLayer: BaseLayer{
- Contents: []byte{
- 0x20, 0x44, 0x05, 0x21, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
- 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x09, 0x02, 0x73, 0x65, 0x63, 0x72, 0x65,
- 0x74,
- },
- Payload: nil,
- },
- Version: 1,
- Diagnostic: BFDDiagnosticNone,
- State: BFDStateDown,
- Poll: false,
- Final: false,
- ControlPlaneIndependent: false,
- AuthPresent: true,
- Demand: false,
- Multipoint: false,
- DetectMultiplier: 5,
- MyDiscriminator: 1,
- YourDiscriminator: 0,
- DesiredMinTxInterval: 1000000,
- RequiredMinRxInterval: 1000000,
- RequiredMinEchoRxInterval: 0,
- AuthHeader: &BFDAuthHeader{
- AuthType: BFDAuthTypePassword,
- KeyID: 2,
- SequenceNumber: 0,
- Data: []byte{'s', 'e', 'c', 'r', 'e', 't'},
- },
- }
-
- checkBFD("testBFDAuthTypePassword", t, testPacketBFD, pExpectedBFD)
-}
-
-//******************************************************************************
-
-func TestBFDAuthTypeKeyedMD5(t *testing.T) {
-
- // This test packet is the first BFD packet in the BFD sample capture
- // pcap file bfd-raw-auth-md5.pcap on the Wireshark sample captures page:
- //
- // https://wiki.wireshark.org/SampleCaptures
- // https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=bfd-raw-auth-md5.pcap
- var testPacketBFD = []byte{
- 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x10, 0x94, 0x00, 0x00, 0x02, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x11, 0x2f, 0x48, 0xc0, 0x55, 0x01, 0x02, 0xc0, 0x00,
- 0x00, 0x01, 0x04, 0x00, 0x0e, 0xc8, 0x00, 0x38, 0x6a, 0xcc, 0x20, 0x44, 0x05, 0x30, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00,
- 0x00, 0x00, 0x02, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
- 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x3c, 0xc3, 0xf8, 0x21,
- }
-
- // Assemble the BFD object that we expect to emerge from this test.
- pExpectedBFD := &BFD{
- BaseLayer: BaseLayer{
- Contents: []byte{
- 0x20, 0x44, 0x05, 0x30, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
- 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05,
- 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
- 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
- },
- Payload: nil,
- },
- Version: 1,
- Diagnostic: BFDDiagnosticNone,
- State: BFDStateDown,
- Poll: false,
- Final: false,
- ControlPlaneIndependent: false,
- AuthPresent: true,
- Demand: false,
- Multipoint: false,
- DetectMultiplier: 5,
- MyDiscriminator: 1,
- YourDiscriminator: 0,
- DesiredMinTxInterval: 1000000,
- RequiredMinRxInterval: 1000000,
- RequiredMinEchoRxInterval: 0,
- AuthHeader: &BFDAuthHeader{
- AuthType: BFDAuthTypeKeyedMD5,
- KeyID: 2,
- SequenceNumber: 5,
- Data: []byte{
- 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
- 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
- },
- },
- }
-
- checkBFD("testBFDAuthTypeKeyedMD5", t, testPacketBFD, pExpectedBFD)
-}
-
-//******************************************************************************
-
-func TestBFDAuthTypeMeticulousKeyedSHA1(t *testing.T) {
-
- // This test packet is the first BFD packet in the BFD sample capture
- // pcap file bfd-raw-auth-sha1.pcap on the Wireshark sample captures page:
- //
- // https://wiki.wireshark.org/SampleCaptures
- // https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=bfd-raw-auth-sha1.pcap
- var testPacketBFD = []byte{
- 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x10, 0x94, 0x00, 0x00, 0x02, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x11, 0x2f, 0x45, 0xc0, 0x55, 0x01, 0x02, 0xc0, 0x00,
- 0x00, 0x01, 0x04, 0x00, 0x0e, 0xc8, 0x00, 0x3c, 0x37, 0x8a, 0x20, 0x44, 0x05, 0x34, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00,
- 0x00, 0x00, 0x05, 0x1c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
- 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0xea, 0x6d,
- 0x1f, 0x21,
- }
-
- // Assemble the BFD object that we expect to emerge from this test.
- pExpectedBFD := &BFD{
- BaseLayer: BaseLayer{
- Contents: []byte{
- 0x20, 0x44, 0x05, 0x34, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40,
- 0x00, 0x0f, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00,
- 0x05, 0x1c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05,
- 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
- 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
- 0x17, 0x18, 0x19, 0x1a,
- },
- Payload: nil,
- },
- Version: 1,
- Diagnostic: BFDDiagnosticNone,
- State: BFDStateDown,
- Poll: false,
- Final: false,
- ControlPlaneIndependent: false,
- AuthPresent: true,
- Demand: false,
- Multipoint: false,
- DetectMultiplier: 5,
- MyDiscriminator: 1,
- YourDiscriminator: 0,
- DesiredMinTxInterval: 1000000,
- RequiredMinRxInterval: 1000000,
- RequiredMinEchoRxInterval: 0,
- AuthHeader: &BFDAuthHeader{
- AuthType: BFDAuthTypeMeticulousKeyedSHA1,
- KeyID: 2,
- SequenceNumber: 5,
- Data: []byte{
- 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
- 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
- 0x17, 0x18, 0x19, 0x1a,
- },
- },
- }
-
- checkBFD("TestBFDAuthTypeMeticulousKeyedSHA1", t, testPacketBFD, pExpectedBFD)
-}
diff --git a/vendor/github.com/google/gopacket/layers/decode_test.go b/vendor/github.com/google/gopacket/layers/decode_test.go
deleted file mode 100644
index ecfbff7..0000000
--- a/vendor/github.com/google/gopacket/layers/decode_test.go
+++ /dev/null
@@ -1,1234 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "bytes"
- "encoding/hex"
- "fmt"
- "net"
- "reflect"
- "strings"
- "testing"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/bytediff"
-)
-
-var testSimpleTCPPacket = []byte{
- 0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x20, 0xbc, 0x30, 0x5b, 0xe8, 0xd3, 0x49,
- 0x08, 0x00, 0x45, 0x00, 0x01, 0xa4, 0x39, 0xdf, 0x40, 0x00, 0x40, 0x06,
- 0x55, 0x5a, 0xac, 0x11, 0x51, 0x49, 0xad, 0xde, 0xfe, 0xe1, 0xc5, 0xf7,
- 0x00, 0x50, 0xc5, 0x7e, 0x0e, 0x48, 0x49, 0x07, 0x42, 0x32, 0x80, 0x18,
- 0x00, 0x73, 0x9a, 0x8f, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x03, 0x77,
- 0x37, 0x9c, 0x42, 0x77, 0x5e, 0x3a, 0x47, 0x45, 0x54, 0x20, 0x2f, 0x20,
- 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x48, 0x6f,
- 0x73, 0x74, 0x3a, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x69, 0x73, 0x68,
- 0x2e, 0x63, 0x6f, 0x6d, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x6b, 0x65, 0x65, 0x70, 0x2d, 0x61,
- 0x6c, 0x69, 0x76, 0x65, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41,
- 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69, 0x6c, 0x6c,
- 0x61, 0x2f, 0x35, 0x2e, 0x30, 0x20, 0x28, 0x58, 0x31, 0x31, 0x3b, 0x20,
- 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x20, 0x78, 0x38, 0x36, 0x5f, 0x36, 0x34,
- 0x29, 0x20, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x57, 0x65, 0x62, 0x4b, 0x69,
- 0x74, 0x2f, 0x35, 0x33, 0x35, 0x2e, 0x32, 0x20, 0x28, 0x4b, 0x48, 0x54,
- 0x4d, 0x4c, 0x2c, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x47, 0x65, 0x63,
- 0x6b, 0x6f, 0x29, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x2f, 0x31,
- 0x35, 0x2e, 0x30, 0x2e, 0x38, 0x37, 0x34, 0x2e, 0x31, 0x32, 0x31, 0x20,
- 0x53, 0x61, 0x66, 0x61, 0x72, 0x69, 0x2f, 0x35, 0x33, 0x35, 0x2e, 0x32,
- 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x74, 0x65,
- 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c,
- 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x68, 0x74, 0x6d,
- 0x6c, 0x2b, 0x78, 0x6d, 0x6c, 0x2c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x6d, 0x6c, 0x3b, 0x71, 0x3d,
- 0x30, 0x2e, 0x39, 0x2c, 0x2a, 0x2f, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e,
- 0x38, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x45, 0x6e,
- 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x67, 0x7a, 0x69, 0x70,
- 0x2c, 0x64, 0x65, 0x66, 0x6c, 0x61, 0x74, 0x65, 0x2c, 0x73, 0x64, 0x63,
- 0x68, 0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x4c, 0x61,
- 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a, 0x20, 0x65, 0x6e, 0x2d, 0x55,
- 0x53, 0x2c, 0x65, 0x6e, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x38, 0x0d, 0x0a,
- 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x43, 0x68, 0x61, 0x72, 0x73,
- 0x65, 0x74, 0x3a, 0x20, 0x49, 0x53, 0x4f, 0x2d, 0x38, 0x38, 0x35, 0x39,
- 0x2d, 0x31, 0x2c, 0x75, 0x74, 0x66, 0x2d, 0x38, 0x3b, 0x71, 0x3d, 0x30,
- 0x2e, 0x37, 0x2c, 0x2a, 0x3b, 0x71, 0x3d, 0x30, 0x2e, 0x33, 0x0d, 0x0a,
- 0x0d, 0x0a,
-}
-
-var testDecodeOptions = gopacket.DecodeOptions{
- SkipDecodeRecovery: true,
-}
-
-// Benchmarks for actual gopacket code
-
-func BenchmarkLayerClassSliceContains(b *testing.B) {
- lc := gopacket.NewLayerClassSlice([]gopacket.LayerType{LayerTypeTCP, LayerTypeEthernet})
- for i := 0; i < b.N; i++ {
- _ = lc.Contains(LayerTypeTCP)
- }
-}
-
-func BenchmarkLayerClassMapContains(b *testing.B) {
- lc := gopacket.NewLayerClassMap([]gopacket.LayerType{LayerTypeTCP, LayerTypeEthernet})
- for i := 0; i < b.N; i++ {
- _ = lc.Contains(LayerTypeTCP)
- }
-}
-
-func BenchmarkLazyNoCopyEthLayer(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true}).Layer(LayerTypeEthernet)
- }
-}
-
-func BenchmarkLazyNoCopyIPLayer(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true}).Layer(LayerTypeIPv4)
- }
-}
-
-func BenchmarkLazyNoCopyTCPLayer(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true}).Layer(LayerTypeTCP)
- }
-}
-
-func BenchmarkLazyNoCopyAllLayers(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true}).Layers()
- }
-}
-
-func BenchmarkDefault(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.Default)
- }
-}
-
-func getSerializeLayers() []gopacket.SerializableLayer {
- p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
- slayers := []gopacket.SerializableLayer{}
- for _, l := range p.Layers() {
- slayers = append(slayers, l.(gopacket.SerializableLayer))
- }
- p.Layer(LayerTypeTCP).(*TCP).SetNetworkLayerForChecksum(
- p.NetworkLayer())
- return slayers
-}
-
-func BenchmarkSerializeTcpNoOptions(b *testing.B) {
- slayers := getSerializeLayers()
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{}
- for i := 0; i < b.N; i++ {
- gopacket.SerializeLayers(buf, opts, slayers...)
- }
-}
-
-func BenchmarkSerializeTcpFixLengths(b *testing.B) {
- slayers := getSerializeLayers()
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true}
- for i := 0; i < b.N; i++ {
- gopacket.SerializeLayers(buf, opts, slayers...)
- }
-}
-
-func BenchmarkSerializeTcpComputeChecksums(b *testing.B) {
- slayers := getSerializeLayers()
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{ComputeChecksums: true}
- for i := 0; i < b.N; i++ {
- gopacket.SerializeLayers(buf, opts, slayers...)
- }
-}
-
-func BenchmarkSerializeTcpFixLengthsComputeChecksums(b *testing.B) {
- slayers := getSerializeLayers()
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true}
- for i := 0; i < b.N; i++ {
- gopacket.SerializeLayers(buf, opts, slayers...)
- }
-}
-
-func BenchmarkLazy(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.Lazy)
- }
-}
-
-func BenchmarkNoCopy(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-func BenchmarkLazyNoCopy(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true})
- }
-}
-
-func BenchmarkKnownStack(b *testing.B) {
- stack := []gopacket.DecodingLayer{&Ethernet{}, &IPv4{}, &TCP{}, &gopacket.Payload{}}
- nf := gopacket.NilDecodeFeedback
- for i := 0; i < b.N; i++ {
- data := testSimpleTCPPacket[:]
- for _, d := range stack {
- _ = d.DecodeFromBytes(data, nf)
- data = d.LayerPayload()
- }
- }
-}
-
-func BenchmarkDecodingLayerParserIgnorePanic(b *testing.B) {
- decoded := make([]gopacket.LayerType, 0, 20)
- dlp := gopacket.NewDecodingLayerParser(LayerTypeEthernet, &Ethernet{}, &IPv4{}, &TCP{}, &gopacket.Payload{})
- dlp.IgnorePanic = true
- for i := 0; i < b.N; i++ {
- dlp.DecodeLayers(testSimpleTCPPacket, &decoded)
- }
-}
-
-func BenchmarkDecodingLayerParserHandlePanic(b *testing.B) {
- decoded := make([]gopacket.LayerType, 0, 20)
- dlp := gopacket.NewDecodingLayerParser(LayerTypeEthernet, &Ethernet{}, &IPv4{}, &TCP{}, &gopacket.Payload{})
- dlp.IgnorePanic = false
- for i := 0; i < b.N; i++ {
- dlp.DecodeLayers(testSimpleTCPPacket, &decoded)
- }
-}
-
-func BenchmarkAlloc(b *testing.B) {
- for i := 0; i < b.N; i++ {
- _ = &TCP{}
- }
-}
-
-func BenchmarkFlow(b *testing.B) {
- p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true})
- net := p.NetworkLayer()
- for i := 0; i < b.N; i++ {
- net.NetworkFlow()
- }
-}
-
-func BenchmarkEndpoints(b *testing.B) {
- p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true})
- flow := p.NetworkLayer().NetworkFlow()
- for i := 0; i < b.N; i++ {
- flow.Endpoints()
- }
-}
-
-func BenchmarkTCPLayerFromDecodedPacket(b *testing.B) {
- b.StopTimer()
- p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
- b.StartTimer()
- for i := 0; i < b.N; i++ {
- _ = p.Layer(LayerTypeTCP)
- }
-}
-
-func BenchmarkTCPLayerClassFromDecodedPacket(b *testing.B) {
- b.StopTimer()
- p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
- lc := gopacket.NewLayerClass([]gopacket.LayerType{LayerTypeTCP})
- b.StartTimer()
- for i := 0; i < b.N; i++ {
- _ = p.LayerClass(lc)
- }
-}
-
-func BenchmarkTCPTransportLayerFromDecodedPacket(b *testing.B) {
- b.StopTimer()
- p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
- b.StartTimer()
- for i := 0; i < b.N; i++ {
- _ = p.TransportLayer()
- }
-}
-
-func testDecoder([]byte, gopacket.PacketBuilder) error {
- return nil
-}
-
-func BenchmarkDecodeFuncCallOverheadDirectCall(b *testing.B) {
- var data []byte
- var pb gopacket.PacketBuilder
- for i := 0; i < b.N; i++ {
- _ = testDecoder(data, pb)
- }
-}
-
-func BenchmarkDecodeFuncCallOverheadDecoderCall(b *testing.B) {
- d := gopacket.DecodeFunc(testDecoder)
- var data []byte
- var pb gopacket.PacketBuilder
- for i := 0; i < b.N; i++ {
- _ = d.Decode(data, pb)
- }
-}
-
-func BenchmarkDecodeFuncCallOverheadArrayCall(b *testing.B) {
- EthernetTypeMetadata[1] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(testDecoder)}
- d := EthernetType(1)
- var data []byte
- var pb gopacket.PacketBuilder
- for i := 0; i < b.N; i++ {
- _ = d.Decode(data, pb)
- }
-}
-
-func BenchmarkFmtVerboseString(b *testing.B) {
- b.StopTimer()
- p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
- b.StartTimer()
- for i := 0; i < b.N; i++ {
- _ = fmt.Sprintf("%#v", p)
- }
-}
-
-func BenchmarkPacketString(b *testing.B) {
- b.StopTimer()
- p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
- b.StartTimer()
- for i := 0; i < b.N; i++ {
- _ = p.String()
- }
-}
-
-func BenchmarkPacketDumpString(b *testing.B) {
- b.StopTimer()
- p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, testDecodeOptions)
- b.StartTimer()
- for i := 0; i < b.N; i++ {
- _ = p.String()
- }
-}
-
-// TestFlowMapKey makes sure a flow and an endpoint can be used as map keys.
-func TestFlowMapKey(t *testing.T) {
- _ = map[gopacket.Flow]bool{}
- _ = map[gopacket.Endpoint]bool{}
- _ = map[[2]gopacket.Flow]bool{}
-}
-
-func TestDecodeSimpleTCPPacket(t *testing.T) {
- equal := func(desc, want string, got fmt.Stringer) {
- if want != got.String() {
- t.Errorf("%s: got %q want %q", desc, got.String(), want)
- }
- }
- p := gopacket.NewPacket(testSimpleTCPPacket, LinkTypeEthernet, gopacket.DecodeOptions{Lazy: true, NoCopy: true})
- if eth := p.LinkLayer(); eth == nil {
- t.Error("No ethernet layer found")
- } else {
- equal("Eth Src", "bc:30:5b:e8:d3:49", eth.LinkFlow().Src())
- equal("Eth Dst", "00:00:0c:9f:f0:20", eth.LinkFlow().Dst())
- }
- if net := p.NetworkLayer(); net == nil {
- t.Error("No net layer found")
- } else if ip, ok := net.(*IPv4); !ok {
- t.Error("Net layer is not IP layer")
- } else {
- equal("IP Src", "172.17.81.73", net.NetworkFlow().Src())
- equal("IP Dst", "173.222.254.225", net.NetworkFlow().Dst())
- want := &IPv4{
- BaseLayer: BaseLayer{testSimpleTCPPacket[14:34], testSimpleTCPPacket[34:]},
- Version: 4,
- IHL: 5,
- TOS: 0,
- Length: 420,
- Id: 14815,
- Flags: 0x02,
- FragOffset: 0,
- TTL: 64,
- Protocol: 6,
- Checksum: 0x555A,
- SrcIP: []byte{172, 17, 81, 73},
- DstIP: []byte{173, 222, 254, 225},
- }
- if !reflect.DeepEqual(ip, want) {
- t.Errorf("IP layer mismatch, \ngot %#v\nwant %#v\n", ip, want)
- }
- }
- if trans := p.TransportLayer(); trans == nil {
- t.Error("No transport layer found")
- } else if tcp, ok := trans.(*TCP); !ok {
- t.Error("Transport layer is not TCP layer")
- } else {
- equal("TCP Src", "50679", trans.TransportFlow().Src())
- equal("TCP Dst", "80", trans.TransportFlow().Dst())
- want := &TCP{
- BaseLayer: BaseLayer{testSimpleTCPPacket[34:66], testSimpleTCPPacket[66:]},
- SrcPort: 50679,
- DstPort: 80,
- Seq: 0xc57e0e48,
- Ack: 0x49074232,
- DataOffset: 8,
- ACK: true,
- PSH: true,
- Window: 0x73,
- Checksum: 0x9a8f,
- Urgent: 0,
- sPort: []byte{0xc5, 0xf7},
- dPort: []byte{0x0, 0x50},
- Options: []TCPOption{
- TCPOption{
- OptionType: 0x1,
- OptionLength: 0x1,
- },
- TCPOption{
- OptionType: 0x1,
- OptionLength: 0x1,
- },
- TCPOption{
- OptionType: 0x8,
- OptionLength: 0xa,
- OptionData: []byte{0x3, 0x77, 0x37, 0x9c, 0x42, 0x77, 0x5e, 0x3a},
- },
- },
- opts: [4]TCPOption{
- TCPOption{
- OptionType: 0x1,
- OptionLength: 0x1,
- },
- TCPOption{
- OptionType: 0x1,
- OptionLength: 0x1,
- },
- TCPOption{
- OptionType: 0x8,
- OptionLength: 0xa,
- OptionData: []byte{0x3, 0x77, 0x37, 0x9c, 0x42, 0x77, 0x5e, 0x3a},
- },
- TCPOption{},
- },
- }
- if !reflect.DeepEqual(tcp, want) {
- t.Errorf("TCP layer mismatch\ngot %#v\nwant %#v", tcp, want)
- }
- }
- if payload, ok := p.Layer(gopacket.LayerTypePayload).(*gopacket.Payload); payload == nil || !ok {
- t.Error("No payload layer found")
- } else {
- if string(payload.Payload()) != "GET / HTTP/1.1\r\nHost: www.fish.com\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: en-US,en;q=0.8\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n\r\n" {
- t.Error("--- Payload STRING ---\n", string(payload.Payload()), "\n--- Payload BYTES ---\n", payload.Payload())
- }
- }
-
- // Test re-serialization.
- testSerialization(t, p, testSimpleTCPPacket)
-}
-
-type canSetNetLayer interface {
- SetNetworkLayerForChecksum(gopacket.NetworkLayer) error
-}
-
-func testSerialization(t *testing.T, p gopacket.Packet, data []byte) {
- for _, opts := range []gopacket.SerializeOptions{
- gopacket.SerializeOptions{},
- gopacket.SerializeOptions{FixLengths: true},
- gopacket.SerializeOptions{ComputeChecksums: true},
- gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true},
- } {
- testSerializationWithOpts(t, p, data, opts)
- }
-}
-
-func testSerializationWithOpts(t *testing.T, p gopacket.Packet, data []byte, opts gopacket.SerializeOptions) {
- // Test re-serialization.
- slayers := []gopacket.SerializableLayer{}
- for _, l := range p.Layers() {
- slayers = append(slayers, l.(gopacket.SerializableLayer))
- if h, ok := l.(canSetNetLayer); ok {
- if err := h.SetNetworkLayerForChecksum(p.NetworkLayer()); err != nil {
- t.Fatal("can't set network layer:", err)
- }
- }
- }
- buf := gopacket.NewSerializeBuffer()
- err := gopacket.SerializeLayers(buf, opts, slayers...)
- if err != nil {
- t.Errorf("unable to reserialize layers with opts %#v: %v", opts, err)
- } else if !bytes.Equal(buf.Bytes(), data) {
- t.Errorf("serialization failure with opts %#v:\n---want---\n%v\n---got---\n%v\nBASH-colorized diff, want->got:\n%v\n\n---PACKET---\n%v",
- opts, hex.Dump(data), hex.Dump(buf.Bytes()), bytediff.BashOutput.String(bytediff.Diff(data, buf.Bytes())), p)
- }
-}
-
-// Makes sure packet payload doesn't display the 6 trailing null of this packet
-// as part of the payload. They're actually the ethernet trailer.
-func TestDecodeSmallTCPPacketHasEmptyPayload(t *testing.T) {
- smallPacket := []byte{
- 0xbc, 0x30, 0x5b, 0xe8, 0xd3, 0x49, 0xb8, 0xac, 0x6f, 0x92, 0xd5, 0xbf,
- 0x08, 0x00, 0x45, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40, 0x00, 0x40, 0x06,
- 0x3f, 0x9f, 0xac, 0x11, 0x51, 0xc5, 0xac, 0x11, 0x51, 0x49, 0x00, 0x63,
- 0x9a, 0xef, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xc1, 0x27, 0x83, 0x50, 0x14,
- 0x00, 0x00, 0xc3, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- }
- p := gopacket.NewPacket(smallPacket, LinkTypeEthernet, testDecodeOptions)
-
- if payload := p.Layer(gopacket.LayerTypePayload); payload != nil {
- t.Error("Payload found for empty TCP packet")
- }
-
- testSerialization(t, p, smallPacket)
-}
-
-func TestDecodeVLANPacket(t *testing.T) {
- p := gopacket.NewPacket(
- []byte{
- 0x00, 0x10, 0xdb, 0xff, 0x10, 0x00, 0x00, 0x15, 0x2c, 0x9d, 0xcc, 0x00,
- 0x81, 0x00, 0x01, 0xf7, 0x08, 0x00, 0x45, 0x00, 0x00, 0x28, 0x29, 0x8d,
- 0x40, 0x00, 0x7d, 0x06, 0x83, 0xa0, 0xac, 0x1b, 0xca, 0x8e, 0x45, 0x16,
- 0x94, 0xe2, 0xd4, 0x0a, 0x00, 0x50, 0xdf, 0xab, 0x9c, 0xc6, 0xcd, 0x1e,
- 0xe5, 0xd1, 0x50, 0x10, 0x01, 0x00, 0x5a, 0x74, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- }, LinkTypeEthernet, testDecodeOptions)
- if err := p.ErrorLayer(); err != nil {
- t.Error("Error while parsing vlan packet:", err)
- }
- if vlan := p.Layer(LayerTypeDot1Q); vlan == nil {
- t.Error("Didn't detect vlan")
- } else if _, ok := vlan.(*Dot1Q); !ok {
- t.Error("LayerTypeDot1Q layer is not a Dot1Q object")
- }
- for i, l := range p.Layers() {
- t.Logf("Layer %d: %#v", i, l)
- }
- want := []gopacket.LayerType{LayerTypeEthernet, LayerTypeDot1Q, LayerTypeIPv4, LayerTypeTCP}
- checkLayers(p, want, t)
-}
-
-func TestDecodeSCTPPackets(t *testing.T) {
- sctpPackets := [][]byte{
- []byte{ // INIT
- 0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x1f, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x08, 0x00, 0x45, 0x02,
- 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84, 0xc4, 0x22, 0xac, 0x1d, 0x14, 0x0f, 0xac, 0x19,
- 0x09, 0xcc, 0x27, 0x0f, 0x22, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x19, 0x6b, 0x0b, 0x40, 0x01, 0x00,
- 0x00, 0x24, 0xb6, 0x96, 0xb0, 0x9e, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xdb, 0x85,
- 0x60, 0x23, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x00,
- 0x00, 0x04,
- }, []byte{ // INIT ACK
- 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x76, 0x40, 0x08, 0x00, 0x45, 0x20,
- 0x01, 0x24, 0x00, 0x00, 0x40, 0x00, 0x36, 0x84, 0xcd, 0x24, 0xac, 0x19, 0x09, 0xcc, 0xac, 0x1d,
- 0x14, 0x0f, 0x22, 0xb8, 0x27, 0x0f, 0xb6, 0x96, 0xb0, 0x9e, 0x4b, 0xab, 0x40, 0x9a, 0x02, 0x00,
- 0x01, 0x04, 0x32, 0x80, 0xfb, 0x42, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x85, 0x98,
- 0xb1, 0x26, 0x00, 0x07, 0x00, 0xe8, 0xd3, 0x08, 0xce, 0xe2, 0x52, 0x95, 0xcc, 0x09, 0xa1, 0x4c,
- 0x6f, 0xa7, 0x9e, 0xba, 0x03, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xfb, 0x80, 0x32, 0x9e, 0xb0,
- 0x96, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x46, 0xc2, 0x50, 0x00, 0x00,
- 0x00, 0x00, 0x5e, 0x25, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x26, 0xb1,
- 0x98, 0x85, 0x02, 0x00, 0x27, 0x0f, 0xac, 0x1d, 0x14, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x22,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x24, 0x6a, 0x72, 0x5c, 0x1c, 0x3c, 0xaa,
- 0x7a, 0xcd, 0xd3, 0x8f, 0x52, 0x78, 0x7c, 0x77, 0xfd, 0x46, 0xbd, 0x72, 0x82, 0xc1, 0x1f, 0x70,
- 0x44, 0xcc, 0xc7, 0x9b, 0x9b, 0x7b, 0x13, 0x54, 0x3f, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x24, 0xb6, 0x96,
- 0xb0, 0x9e, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xdb, 0x85, 0x60, 0x23, 0x00, 0x0c,
- 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x00,
- 0x00, 0x04,
- }, []byte{ // COOKIE ECHO, DATA
- 0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x1f, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x08, 0x00, 0x45, 0x02,
- 0x01, 0x20, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84, 0xc3, 0x46, 0xac, 0x1d, 0x14, 0x0f, 0xac, 0x19,
- 0x09, 0xcc, 0x27, 0x0f, 0x22, 0xb8, 0x32, 0x80, 0xfb, 0x42, 0x01, 0xf9, 0xf3, 0xa9, 0x0a, 0x00,
- 0x00, 0xe8, 0xd3, 0x08, 0xce, 0xe2, 0x52, 0x95, 0xcc, 0x09, 0xa1, 0x4c, 0x6f, 0xa7, 0x9e, 0xba,
- 0x03, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xfb, 0x80, 0x32, 0x9e, 0xb0, 0x96, 0xb6, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x46, 0xc2, 0x50, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x25,
- 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x26, 0xb1, 0x98, 0x85, 0x02, 0x00,
- 0x27, 0x0f, 0xac, 0x1d, 0x14, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x22, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x02, 0x00, 0x24, 0x6a, 0x72, 0x5c, 0x1c, 0x3c, 0xaa, 0x7a, 0xcd, 0xd3, 0x8f,
- 0x52, 0x78, 0x7c, 0x77, 0xfd, 0x46, 0xbd, 0x72, 0x82, 0xc1, 0x1f, 0x70, 0x44, 0xcc, 0xc7, 0x9b,
- 0x9b, 0x7b, 0x13, 0x54, 0x3f, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x24, 0xb6, 0x96, 0xb0, 0x9e, 0x00, 0x01,
- 0xc0, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xdb, 0x85, 0x60, 0x23, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x05,
- 0x00, 0x00, 0x80, 0x00, 0x00, 0x04, 0xc0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x16, 0xdb, 0x85, 0x60, 0x23, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x6f, 0x6f, 0x21, 0x0a, 0x00, 0x00, 0x00,
- }, []byte{ // COOKIE ACK, SACK
- 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x76, 0x40, 0x08, 0x00, 0x45, 0x20,
- 0x00, 0x34, 0x00, 0x00, 0x40, 0x00, 0x36, 0x84, 0xce, 0x14, 0xac, 0x19, 0x09, 0xcc, 0xac, 0x1d,
- 0x14, 0x0f, 0x22, 0xb8, 0x27, 0x0f, 0xb6, 0x96, 0xb0, 0x9e, 0xed, 0x64, 0x30, 0x98, 0x0b, 0x00,
- 0x00, 0x04, 0x03, 0x00, 0x00, 0x10, 0xdb, 0x85, 0x60, 0x23, 0x00, 0x00, 0xf3, 0xfa, 0x00, 0x00,
- 0x00, 0x00,
- }, []byte{ // DATA
- 0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x1f, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x08, 0x00, 0x45, 0x02,
- 0x00, 0x3c, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84, 0xc4, 0x2a, 0xac, 0x1d, 0x14, 0x0f, 0xac, 0x19,
- 0x09, 0xcc, 0x27, 0x0f, 0x22, 0xb8, 0x32, 0x80, 0xfb, 0x42, 0xa1, 0xe3, 0xb2, 0x31, 0x00, 0x03,
- 0x00, 0x19, 0xdb, 0x85, 0x60, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x62, 0x69,
- 0x7a, 0x7a, 0x6c, 0x65, 0x21, 0x0a, 0x00, 0x00, 0x00, 0x00,
- }, []byte{ // SACK
- 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x76, 0x40, 0x08, 0x00, 0x45, 0x20,
- 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x36, 0x84, 0xce, 0x18, 0xac, 0x19, 0x09, 0xcc, 0xac, 0x1d,
- 0x14, 0x0f, 0x22, 0xb8, 0x27, 0x0f, 0xb6, 0x96, 0xb0, 0x9e, 0xfa, 0x49, 0x94, 0x3a, 0x03, 0x00,
- 0x00, 0x10, 0xdb, 0x85, 0x60, 0x24, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00,
- }, []byte{ // SHUTDOWN
- 0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x1f, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x08, 0x00, 0x45, 0x02,
- 0x00, 0x28, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84, 0xc4, 0x3e, 0xac, 0x1d, 0x14, 0x0f, 0xac, 0x19,
- 0x09, 0xcc, 0x27, 0x0f, 0x22, 0xb8, 0x32, 0x80, 0xfb, 0x42, 0x3f, 0x29, 0x59, 0x23, 0x07, 0x00,
- 0x00, 0x08, 0x85, 0x98, 0xb1, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- }, []byte{ // SHUTDOWN ACK
- 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x76, 0x40, 0x08, 0x00, 0x45, 0x20,
- 0x00, 0x24, 0x00, 0x00, 0x40, 0x00, 0x36, 0x84, 0xce, 0x24, 0xac, 0x19, 0x09, 0xcc, 0xac, 0x1d,
- 0x14, 0x0f, 0x22, 0xb8, 0x27, 0x0f, 0xb6, 0x96, 0xb0, 0x9e, 0xb2, 0xc8, 0x99, 0x24, 0x08, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- }, []byte{ // SHUTDOWN COMPLETE
- 0x00, 0x00, 0x0c, 0x9f, 0xf0, 0x1f, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x08, 0x00, 0x45, 0x02,
- 0x00, 0x24, 0x00, 0x00, 0x40, 0x00, 0x40, 0x84, 0xc4, 0x42, 0xac, 0x1d, 0x14, 0x0f, 0xac, 0x19,
- 0x09, 0xcc, 0x27, 0x0f, 0x22, 0xb8, 0x32, 0x80, 0xfb, 0x42, 0xa8, 0xd1, 0x86, 0x85, 0x0e, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- }}
- wantLayers := [][]gopacket.LayerType{
- []gopacket.LayerType{LayerTypeSCTPInit},
- []gopacket.LayerType{LayerTypeSCTPInitAck},
- []gopacket.LayerType{LayerTypeSCTPCookieEcho, LayerTypeSCTPData, gopacket.LayerTypePayload},
- []gopacket.LayerType{LayerTypeSCTPCookieAck, LayerTypeSCTPSack},
- []gopacket.LayerType{LayerTypeSCTPData, gopacket.LayerTypePayload},
- []gopacket.LayerType{LayerTypeSCTPSack},
- []gopacket.LayerType{LayerTypeSCTPShutdown},
- []gopacket.LayerType{LayerTypeSCTPShutdownAck},
- []gopacket.LayerType{LayerTypeSCTPShutdownComplete},
- }
- for i, data := range sctpPackets {
- p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
- for _, typ := range wantLayers[i] {
- if p.Layer(typ) == nil {
- t.Errorf("Packet %d missing layer type %v, got:", i, typ)
- for _, layer := range p.Layers() {
- t.Errorf("\t%v", layer.LayerType())
- }
- if p.ErrorLayer() != nil {
- t.Error("\tPacket layer error:", p.ErrorLayer().Error())
- }
- }
- }
- // Test re-serialization.
- testSerializationWithOpts(t, p, data, gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true})
- }
-}
-
-func TestDecodeCiscoDiscovery(t *testing.T) {
- // http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=cdp_v2.pcap
- data := []byte{
- 0x01, 0x00, 0x0c, 0xcc, 0xcc, 0xcc, 0x00, 0x0b, 0xbe, 0x18, 0x9a, 0x41, 0x01, 0xc3, 0xaa, 0xaa,
- 0x03, 0x00, 0x00, 0x0c, 0x20, 0x00, 0x02, 0xb4, 0x09, 0xa0, 0x00, 0x01, 0x00, 0x0c, 0x6d, 0x79,
- 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
- 0xcc, 0x00, 0x04, 0xc0, 0xa8, 0x00, 0xfd, 0x00, 0x03, 0x00, 0x13, 0x46, 0x61, 0x73, 0x74, 0x45,
- 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x30, 0x2f, 0x31, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00,
- 0x00, 0x28, 0x00, 0x05, 0x01, 0x14, 0x43, 0x69, 0x73, 0x63, 0x6f, 0x20, 0x49, 0x6e, 0x74, 0x65,
- 0x72, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
- 0x6e, 0x67, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
- 0x72, 0x65, 0x20, 0x0a, 0x49, 0x4f, 0x53, 0x20, 0x28, 0x74, 0x6d, 0x29, 0x20, 0x43, 0x32, 0x39,
- 0x35, 0x30, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x28, 0x43, 0x32, 0x39,
- 0x35, 0x30, 0x2d, 0x49, 0x36, 0x4b, 0x32, 0x4c, 0x32, 0x51, 0x34, 0x2d, 0x4d, 0x29, 0x2c, 0x20,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x32, 0x2e, 0x31, 0x28, 0x32, 0x32, 0x29,
- 0x45, 0x41, 0x31, 0x34, 0x2c, 0x20, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x20, 0x53, 0x4f,
- 0x46, 0x54, 0x57, 0x41, 0x52, 0x45, 0x20, 0x28, 0x66, 0x63, 0x31, 0x29, 0x0a, 0x54, 0x65, 0x63,
- 0x68, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x20,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x63, 0x69, 0x73, 0x63, 0x6f,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x63, 0x68, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
- 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x31,
- 0x39, 0x38, 0x36, 0x2d, 0x32, 0x30, 0x31, 0x30, 0x20, 0x62, 0x79, 0x20, 0x63, 0x69, 0x73, 0x63,
- 0x6f, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x0a,
- 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x54, 0x75, 0x65, 0x20, 0x32, 0x36, 0x2d,
- 0x4f, 0x63, 0x74, 0x2d, 0x31, 0x30, 0x20, 0x31, 0x30, 0x3a, 0x33, 0x35, 0x20, 0x62, 0x79, 0x20,
- 0x6e, 0x62, 0x75, 0x72, 0x72, 0x61, 0x00, 0x06, 0x00, 0x15, 0x63, 0x69, 0x73, 0x63, 0x6f, 0x20,
- 0x57, 0x53, 0x2d, 0x43, 0x32, 0x39, 0x35, 0x30, 0x2d, 0x31, 0x32, 0x00, 0x08, 0x00, 0x24, 0x00,
- 0x00, 0x0c, 0x01, 0x12, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x02, 0x20, 0xff,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xbe, 0x18, 0x9a, 0x40, 0xff, 0x00, 0x00, 0x00,
- 0x09, 0x00, 0x0c, 0x4d, 0x59, 0x44, 0x4f, 0x4d, 0x41, 0x49, 0x4e, 0x00, 0x0a, 0x00, 0x06, 0x00,
- 0x01, 0x00, 0x0b, 0x00, 0x05, 0x01, 0x00, 0x12, 0x00, 0x05, 0x00, 0x00, 0x13, 0x00, 0x05, 0x00,
- 0x00, 0x16, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0xcc, 0x00, 0x04, 0xc0, 0xa8, 0x00,
- 0xfd,
- }
- p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
- wantLayers := []gopacket.LayerType{LayerTypeEthernet, LayerTypeLLC, LayerTypeSNAP, LayerTypeCiscoDiscovery, LayerTypeCiscoDiscoveryInfo}
- checkLayers(p, wantLayers, t)
-
- want := &CiscoDiscoveryInfo{
- CDPHello: CDPHello{
- OUI: []byte{0, 0, 12},
- ProtocolID: 274,
- ClusterMaster: []byte{0, 0, 0, 0},
- Unknown1: []byte{255, 255, 255, 255},
- Version: 1,
- SubVersion: 2,
- Status: 32,
- Unknown2: 255,
- ClusterCommander: net.HardwareAddr{0, 0, 0, 0, 0, 0},
- SwitchMAC: net.HardwareAddr{0, 0x0b, 0xbe, 0x18, 0x9a, 0x40},
- Unknown3: 255,
- ManagementVLAN: 0,
- },
- DeviceID: "myswitch",
- Addresses: []net.IP{net.IPv4(192, 168, 0, 253)},
- PortID: "FastEthernet0/1",
- Capabilities: CDPCapabilities{false, false, false, true, false, true, false, false, false},
- Version: "Cisco Internetwork Operating System Software \nIOS (tm) C2950 Software (C2950-I6K2L2Q4-M), Version 12.1(22)EA14, RELEASE SOFTWARE (fc1)\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2010 by cisco Systems, Inc.\nCompiled Tue 26-Oct-10 10:35 by nburra",
- Platform: "cisco WS-C2950-12",
- VTPDomain: "MYDOMAIN",
- NativeVLAN: 1,
- FullDuplex: true,
- MgmtAddresses: []net.IP{net.IPv4(192, 168, 0, 253)},
- BaseLayer: BaseLayer{Contents: data[26:]},
- }
- cdpL := p.Layer(LayerTypeCiscoDiscoveryInfo)
- info, _ := cdpL.(*CiscoDiscoveryInfo)
- if !reflect.DeepEqual(info, want) {
- t.Errorf("Values mismatch, \ngot %#v\nwant %#v\n", info, want)
- }
-}
-
-func TestDecodeLinkLayerDiscovery(t *testing.T) {
- // http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=lldp.detailed.pcap
- data := []byte{
- 0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0,
- 0x88, 0xcc, 0x02, 0x07, 0x04, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, 0x04,
- 0x04, 0x05, 0x31, 0x2f, 0x31, 0x06, 0x02, 0x00, 0x78, 0x08, 0x17, 0x53,
- 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30, 0x2d, 0x34, 0x38, 0x2d,
- 0x50, 0x6f, 0x72, 0x74, 0x20, 0x31, 0x30, 0x30, 0x31, 0x00, 0x0a, 0x0d,
- 0x53, 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30, 0x2d, 0x34, 0x38,
- 0x00, 0x0c, 0x4c, 0x53, 0x75, 0x6d, 0x6d, 0x69, 0x74, 0x33, 0x30, 0x30,
- 0x2d, 0x34, 0x38, 0x20, 0x2d, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
- 0x6e, 0x20, 0x37, 0x2e, 0x34, 0x65, 0x2e, 0x31, 0x20, 0x28, 0x42, 0x75,
- 0x69, 0x6c, 0x64, 0x20, 0x35, 0x29, 0x20, 0x62, 0x79, 0x20, 0x52, 0x65,
- 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72,
- 0x20, 0x30, 0x35, 0x2f, 0x32, 0x37, 0x2f, 0x30, 0x35, 0x20, 0x30, 0x34,
- 0x3a, 0x35, 0x33, 0x3a, 0x31, 0x31, 0x00, 0x0e, 0x04, 0x00, 0x14, 0x00,
- 0x14, 0x10, 0x0e, 0x07, 0x06, 0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0, 0x02,
- 0x00, 0x00, 0x03, 0xe9, 0x00, 0xfe, 0x07, 0x00, 0x12, 0x0f, 0x02, 0x07,
- 0x01, 0x00, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x01, 0x03, 0x6c, 0x00, 0x00,
- 0x10, 0xfe, 0x09, 0x00, 0x12, 0x0f, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0xfe, 0x06, 0x00, 0x12, 0x0f, 0x04, 0x05, 0xf2, 0xfe, 0x06, 0x00, 0x80,
- 0xc2, 0x01, 0x01, 0xe8, 0xfe, 0x07, 0x00, 0x80, 0xc2, 0x02, 0x01, 0x00,
- 0x00, 0xfe, 0x17, 0x00, 0x80, 0xc2, 0x03, 0x01, 0xe8, 0x10, 0x76, 0x32,
- 0x2d, 0x30, 0x34, 0x38, 0x38, 0x2d, 0x30, 0x33, 0x2d, 0x30, 0x35, 0x30,
- 0x35, 0x00, 0xfe, 0x05, 0x00, 0x80, 0xc2, 0x04, 0x00, 0x00, 0x00,
- }
-
- p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
- wantLayers := []gopacket.LayerType{LayerTypeEthernet, LayerTypeLinkLayerDiscovery, LayerTypeLinkLayerDiscoveryInfo}
- checkLayers(p, wantLayers, t)
- lldpL := p.Layer(LayerTypeLinkLayerDiscovery)
- lldp := lldpL.(*LinkLayerDiscovery)
- want := &LinkLayerDiscovery{
- ChassisID: LLDPChassisID{LLDPChassisIDSubTypeMACAddr, []byte{0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0}},
- PortID: LLDPPortID{LLDPPortIDSubtypeIfaceName, []byte("1/1")},
- TTL: 120,
- BaseLayer: BaseLayer{Contents: data[14:]},
- }
- lldp.Values = nil // test these in next stage
- if !reflect.DeepEqual(lldp, want) {
- t.Errorf("Values mismatch, \ngot %#v\nwant %#v\n", lldp, want)
- }
-
- infoL := p.Layer(LayerTypeLinkLayerDiscoveryInfo)
- info := infoL.(*LinkLayerDiscoveryInfo)
- wantinfo := &LinkLayerDiscoveryInfo{
- PortDescription: "Summit300-48-Port 1001\x00",
- SysName: "Summit300-48\x00",
- SysDescription: "Summit300-48 - Version 7.4e.1 (Build 5) by Release_Master 05/27/05 04:53:11\x00",
- SysCapabilities: LLDPSysCapabilities{
- SystemCap: LLDPCapabilities{Bridge: true, Router: true},
- EnabledCap: LLDPCapabilities{Bridge: true, Router: true},
- },
- MgmtAddress: LLDPMgmtAddress{IANAAddressFamily802, []byte{0x00, 0x01, 0x30, 0xf9, 0xad, 0xa0}, LLDPInterfaceSubtypeifIndex, 1001, ""},
- OrgTLVs: []LLDPOrgSpecificTLV{
- LLDPOrgSpecificTLV{OUI: 0x120f, SubType: 0x2, Info: []uint8{0x7, 0x1, 0x0}},
- LLDPOrgSpecificTLV{OUI: 0x120f, SubType: 0x1, Info: []uint8{0x3, 0x6c, 0x0, 0x0, 0x10}},
- LLDPOrgSpecificTLV{OUI: 0x120f, SubType: 0x3, Info: []uint8{0x1, 0x0, 0x0, 0x0, 0x0}},
- LLDPOrgSpecificTLV{OUI: 0x120f, SubType: 0x4, Info: []uint8{0x5, 0xf2}},
- LLDPOrgSpecificTLV{OUI: 0x80c2, SubType: 0x1, Info: []uint8{0x1, 0xe8}},
- LLDPOrgSpecificTLV{OUI: 0x80c2, SubType: 0x2, Info: []uint8{0x1, 0x0, 0x0}},
- LLDPOrgSpecificTLV{OUI: 0x80c2, SubType: 0x3, Info: []uint8{0x1, 0xe8, 0x10, 0x76, 0x32, 0x2d, 0x30, 0x34, 0x38, 0x38, 0x2d, 0x30, 0x33, 0x2d, 0x30, 0x35, 0x30, 0x35, 0x0}},
- LLDPOrgSpecificTLV{OUI: 0x80c2, SubType: 0x4, Info: []uint8{0x0}},
- },
- Unknown: nil,
- }
- if !reflect.DeepEqual(info, wantinfo) {
- t.Errorf("Values mismatch, \ngot %#v\nwant %#v\n", info, wantinfo)
- }
- info8021, err := info.Decode8021()
- if err != nil {
- t.Errorf("8021 Values decode error: %v", err)
- }
- want8021 := LLDPInfo8021{
- PVID: 488,
- PPVIDs: []PortProtocolVLANID{PortProtocolVLANID{false, false, 0}},
- VLANNames: []VLANName{VLANName{488, "v2-0488-03-0505\x00"}},
- ProtocolIdentities: nil,
- VIDUsageDigest: 0,
- ManagementVID: 0,
- LinkAggregation: LLDPLinkAggregation{false, false, 0},
- }
- if !reflect.DeepEqual(info8021, want8021) {
- t.Errorf("Values mismatch, \ngot %#v\nwant %#v\n", info8021, want8021)
- }
- info8023, err := info.Decode8023()
- if err != nil {
- t.Errorf("8023 Values decode error: %v", err)
- }
- want8023 := LLDPInfo8023{
- LinkAggregation: LLDPLinkAggregation{true, false, 0},
- MACPHYConfigStatus: LLDPMACPHYConfigStatus{true, true, 0x6c00, 0x0010},
- PowerViaMDI: LLDPPowerViaMDI8023{true, true, true, false, 1, 0, 0, 0, 0, 0, 0},
- MTU: 1522,
- }
-
- if !reflect.DeepEqual(info8023, want8023) {
- t.Errorf("Values mismatch, \ngot %#v\nwant %#v\n", info8023, want8023)
- }
-
- // http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=lldpmed_civicloc.pcap
- data = []byte{
- 0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e, 0x00, 0x13, 0x21, 0x57, 0xca, 0x7f,
- 0x88, 0xcc, 0x02, 0x07, 0x04, 0x00, 0x13, 0x21, 0x57, 0xca, 0x40, 0x04,
- 0x02, 0x07, 0x31, 0x06, 0x02, 0x00, 0x78, 0x08, 0x01, 0x31, 0x0a, 0x1a,
- 0x50, 0x72, 0x6f, 0x43, 0x75, 0x72, 0x76, 0x65, 0x20, 0x53, 0x77, 0x69,
- 0x74, 0x63, 0x68, 0x20, 0x32, 0x36, 0x30, 0x30, 0x2d, 0x38, 0x2d, 0x50,
- 0x57, 0x52, 0x0c, 0x5f, 0x50, 0x72, 0x6f, 0x43, 0x75, 0x72, 0x76, 0x65,
- 0x20, 0x4a, 0x38, 0x37, 0x36, 0x32, 0x41, 0x20, 0x53, 0x77, 0x69, 0x74,
- 0x63, 0x68, 0x20, 0x32, 0x36, 0x30, 0x30, 0x2d, 0x38, 0x2d, 0x50, 0x57,
- 0x52, 0x2c, 0x20, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20,
- 0x48, 0x2e, 0x30, 0x38, 0x2e, 0x38, 0x39, 0x2c, 0x20, 0x52, 0x4f, 0x4d,
- 0x20, 0x48, 0x2e, 0x30, 0x38, 0x2e, 0x35, 0x58, 0x20, 0x28, 0x2f, 0x73,
- 0x77, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64,
- 0x2f, 0x66, 0x69, 0x73, 0x68, 0x28, 0x74, 0x73, 0x5f, 0x30, 0x38, 0x5f,
- 0x35, 0x29, 0x29, 0x0e, 0x04, 0x00, 0x14, 0x00, 0x04, 0x10, 0x0c, 0x05,
- 0x01, 0x0f, 0xff, 0x7a, 0x94, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
- 0x09, 0x00, 0x12, 0x0f, 0x01, 0x03, 0x6c, 0x00, 0x00, 0x10, 0xfe, 0x07,
- 0x00, 0x12, 0xbb, 0x01, 0x00, 0x0f, 0x04, 0xfe, 0x08, 0x00, 0x12, 0xbb,
- 0x02, 0x01, 0x40, 0x65, 0xae, 0xfe, 0x2e, 0x00, 0x12, 0xbb, 0x03, 0x02,
- 0x28, 0x02, 0x55, 0x53, 0x01, 0x02, 0x43, 0x41, 0x03, 0x09, 0x52, 0x6f,
- 0x73, 0x65, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x06, 0x09, 0x46, 0x6f, 0x6f,
- 0x74, 0x68, 0x69, 0x6c, 0x6c, 0x73, 0x13, 0x04, 0x38, 0x30, 0x30, 0x30,
- 0x1a, 0x03, 0x52, 0x33, 0x4c, 0xfe, 0x07, 0x00, 0x12, 0xbb, 0x04, 0x03,
- 0x00, 0x41, 0x00, 0x00,
- }
-
- p = gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
- wantLayers = []gopacket.LayerType{LayerTypeEthernet, LayerTypeLinkLayerDiscovery, LayerTypeLinkLayerDiscoveryInfo}
- checkLayers(p, wantLayers, t)
- lldpL = p.Layer(LayerTypeLinkLayerDiscovery)
- lldp = lldpL.(*LinkLayerDiscovery)
- want = &LinkLayerDiscovery{
- ChassisID: LLDPChassisID{LLDPChassisIDSubTypeMACAddr, []byte{0x00, 0x13, 0x21, 0x57, 0xca, 0x40}},
- PortID: LLDPPortID{LLDPPortIDSubtypeLocal, []byte("1")},
- TTL: 120,
- BaseLayer: BaseLayer{Contents: data[14:]},
- }
- lldp.Values = nil // test these in next stage
- if !reflect.DeepEqual(lldp, want) {
- t.Errorf("Values mismatch, \ngot %#v\nwant %#v\n", lldp, want)
- }
-
- infoL = p.Layer(LayerTypeLinkLayerDiscoveryInfo)
- info = infoL.(*LinkLayerDiscoveryInfo)
- wantinfo = &LinkLayerDiscoveryInfo{
- PortDescription: "1",
- SysName: "ProCurve Switch 2600-8-PWR",
- SysDescription: "ProCurve J8762A Switch 2600-8-PWR, revision H.08.89, ROM H.08.5X (/sw/code/build/fish(ts_08_5))",
- SysCapabilities: LLDPSysCapabilities{
- SystemCap: LLDPCapabilities{Bridge: true, Router: true},
- EnabledCap: LLDPCapabilities{Bridge: true},
- },
- MgmtAddress: LLDPMgmtAddress{IANAAddressFamilyIPV4, []byte{0x0f, 0xff, 0x7a, 0x94}, LLDPInterfaceSubtypeifIndex, 0, ""},
- OrgTLVs: []LLDPOrgSpecificTLV{
- LLDPOrgSpecificTLV{OUI: 0x120f, SubType: 0x1, Info: []uint8{0x3, 0x6c, 0x0, 0x0, 0x10}},
- LLDPOrgSpecificTLV{OUI: 0x12bb, SubType: 0x1, Info: []uint8{0x0, 0xf, 0x4}},
- LLDPOrgSpecificTLV{OUI: 0x12bb, SubType: 0x2, Info: []uint8{0x1, 0x40, 0x65, 0xae}},
- LLDPOrgSpecificTLV{OUI: 0x12bb, SubType: 0x3, Info: []uint8{0x2, 0x28, 0x2, 0x55, 0x53, 0x1, 0x2, 0x43, 0x41, 0x3, 0x9, 0x52, 0x6f, 0x73, 0x65, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x6, 0x9, 0x46, 0x6f, 0x6f, 0x74, 0x68, 0x69, 0x6c, 0x6c, 0x73, 0x13, 0x4, 0x38, 0x30, 0x30, 0x30, 0x1a, 0x3, 0x52, 0x33, 0x4c}},
- LLDPOrgSpecificTLV{OUI: 0x12bb, SubType: 0x4, Info: []uint8{0x3, 0x0, 0x41}},
- },
- Unknown: nil,
- }
- if !reflect.DeepEqual(info, wantinfo) {
- t.Errorf("Values mismatch, \ngot %#v\nwant %#v\n", info, wantinfo)
- }
- info8023, err = info.Decode8023()
- if err != nil {
- t.Errorf("8023 Values decode error: %v", err)
- }
- want8023 = LLDPInfo8023{
- MACPHYConfigStatus: LLDPMACPHYConfigStatus{true, true, 0x6c00, 0x0010},
- }
-
- if !reflect.DeepEqual(info8023, want8023) {
- t.Errorf("Values mismatch, \ngot %#v\nwant %#v\n", info8023, want8023)
- }
-
- infoMedia, err := info.DecodeMedia()
- if err != nil {
- t.Errorf("8023 Values decode error: %v", err)
- }
- wantMedia := LLDPInfoMedia{
- MediaCapabilities: LLDPMediaCapabilities{true, true, true, true, false, false, LLDPMediaClassNetwork},
- NetworkPolicy: LLDPNetworkPolicy{LLDPAppTypeVoice, true, true, 50, 6, 46},
- Location: LLDPLocation{Format: LLDPLocationFormatAddress, Address: LLDPLocationAddress{
- What: LLDPLocationAddressWhatClient,
- CountryCode: "US",
- AddressLines: []LLDPLocationAddressLine{
- LLDPLocationAddressLine{LLDPLocationAddressTypeNational, "CA"},
- LLDPLocationAddressLine{LLDPLocationAddressTypeCity, "Roseville"},
- LLDPLocationAddressLine{LLDPLocationAddressTypeStreet, "Foothills"},
- LLDPLocationAddressLine{LLDPLocationAddressTypeHouseNum, "8000"},
- LLDPLocationAddressLine{LLDPLocationAddressTypeUnit, "R3L"},
- },
- }},
- PowerViaMDI: LLDPPowerViaMDI{0, 0, LLDPPowerPriorityLow, 6500},
- }
-
- if !reflect.DeepEqual(infoMedia, wantMedia) {
- t.Errorf("Values mismatch, \ngot %#v\nwant %#v\n", infoMedia, wantMedia)
- }
-
-}
-
-func TestDecodeNortelDiscovery(t *testing.T) {
- // http://www.thetechfirm.com/packets/nortel_btdp/btdp_nai.enc
- data := []byte{
- 0x01, 0x00, 0x81, 0x00, 0x01, 0x00, 0x00, 0x04, 0x38, 0xe0, 0xcc, 0xde,
- 0x00, 0x13, 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x81, 0x01, 0xa2, 0xac, 0x13,
- 0x58, 0x03, 0x00, 0x04, 0x15, 0x30, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x38, 0xe0, 0xcc, 0xde, 0x80, 0x6a, 0x00, 0x01, 0x14, 0x00,
- 0x02, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- }
- p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
- wantLayers := []gopacket.LayerType{LayerTypeEthernet, LayerTypeLLC, LayerTypeSNAP, LayerTypeNortelDiscovery}
- checkLayers(p, wantLayers, t)
-
- want := &NortelDiscovery{
- IPAddress: []byte{172, 19, 88, 3},
- SegmentID: []byte{0x00, 0x04, 0x15},
- Chassis: NDPChassisBayStack450101001000Switches,
- Backplane: NDPBackplaneEthernetFastEthernetGigabitEthernet,
- State: NDPStateHeartbeat,
- NumLinks: 0,
- }
- ndpL := p.Layer(LayerTypeNortelDiscovery)
- info, _ := ndpL.(*NortelDiscovery)
- if !reflect.DeepEqual(info, want) {
- t.Errorf("Values mismatch, \ngot %#v\nwant %#v\n", info, want)
- }
-}
-
-func TestDecodeIPv6Jumbogram(t *testing.T) {
- // Haven't found any of these in the wild or on example pcaps online, so had
- // to generate one myself via scapy. Unfortunately, scapy can only
- // str(packet) for packets with length < 65536, due to limitations in python's
- // struct library, so I generated the header with:
- // Ether() / IPv6(src='::1', dst='::2') / IPv6ExtHdrHopByHop(options=[Jumbo(jumboplen=70000)]) / TCP(sport=8888, dport=80)
- // then added the payload manually ("payload" * 9996). The checksums here are
- // not correct, but we don't check, so who cares ;)
- dataStr := "\x00\x1f\xca\xb3v@$\xbe\x05'\x0b\x17\x86\xdd`\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x06\x00\xc2\x04\x00\x01\x11p\"\xb8\x00P\x00\x00\x00\x00\x00\x00\x00\x00P\x02 \x00l\xd8\x00\x00"
- payload := strings.Repeat("payload", 9996)
- data := []byte(dataStr + payload)
- p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeIPv6HopByHop, LayerTypeTCP, gopacket.LayerTypePayload}, t)
- if p.ApplicationLayer() == nil {
- t.Error("Packet has no application layer")
- } else if string(p.ApplicationLayer().Payload()) != payload {
- t.Errorf("Jumbogram payload wrong")
- }
- // Check truncated for jumbograms
- data = data[:len(data)-1]
- p = gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeIPv6HopByHop, LayerTypeTCP, gopacket.LayerTypePayload}, t)
- if !p.Metadata().Truncated {
- t.Error("Jumbogram should be truncated")
- }
-}
-
-func TestDecodeUDPPacketTooSmall(t *testing.T) {
- data := []byte{
- 0x00, 0x15, 0x2c, 0x9d, 0xcc, 0x00, 0x00, 0x10, 0xdb, 0xff, 0x10, 0x00, 0x81, 0x00, 0x01, 0xf7,
- 0x08, 0x00, 0x45, 0x60, 0x00, 0x3c, 0x0f, 0xa9, 0x00, 0x00, 0x6e, 0x11, 0x01, 0x0a, 0x47, 0xe6,
- 0xee, 0x2e, 0xac, 0x16, 0x59, 0x73, 0x00, 0x50, 0x00, 0x50, 0x00, 0x28, 0x4d, 0xad, 0x00, 0x67,
- 0x00, 0x01, 0x00, 0x72, 0xd5, 0xc7, 0xf1, 0x07, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0d, 0x00, 0x00,
- 0x00, 0x14, 0x00, 0x00, 0x19, 0xba,
- }
- p := gopacket.NewPacket(data, LinkTypeEthernet, testDecodeOptions)
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeDot1Q, LayerTypeIPv4, LayerTypeUDP, gopacket.LayerTypePayload}, t)
- if !p.Metadata().Truncated {
- t.Error("UDP short packet should be truncated")
- }
-}
-
-func TestDecodingLayerParserFullTCPPacket(t *testing.T) {
- dlp := gopacket.NewDecodingLayerParser(LayerTypeEthernet, &Ethernet{}, &IPv4{}, &TCP{}, &gopacket.Payload{})
- decoded := make([]gopacket.LayerType, 1)
- err := dlp.DecodeLayers(testSimpleTCPPacket, &decoded)
- if err != nil {
- t.Error("Error from dlp parser: ", err)
- }
- if len(decoded) != 4 {
- t.Error("Expected 4 layers parsed, instead got ", len(decoded))
- }
-}
-
-// testICMP is the packet:
-// 15:49:15.773265 IP 72.14.222.226 > 172.29.20.15: ICMP host 10.66.73.201 unreachable - admin prohibited filter, length 36
-// 0x0000: 24be 0527 0b17 001f cab3 75c0 0800 4500 $..'......u...E.
-// 0x0010: 0038 0000 0000 fc01 d7a7 480e dee2 ac1d .8........H.....
-// 0x0020: 140f 030d 946e 0000 0000 4520 004d 0000 .....n....E..M..
-// 0x0030: 4000 3e11 2849 ac1d 140f 0a42 49c9 8ecc @.>.(I.....BI...
-// 0x0040: 62e1 0039 769d b..9v.
-var testICMP = []byte{
- 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x75, 0xc0, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0xd7, 0xa7, 0x48, 0x0e, 0xde, 0xe2, 0xac, 0x1d,
- 0x14, 0x0f, 0x03, 0x0d, 0x94, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x45, 0x20, 0x00, 0x4d, 0x00, 0x00,
- 0x40, 0x00, 0x3e, 0x11, 0x28, 0x49, 0xac, 0x1d, 0x14, 0x0f, 0x0a, 0x42, 0x49, 0xc9, 0x8e, 0xcc,
- 0x62, 0xe1, 0x00, 0x39, 0x76, 0x9d,
-}
-
-func TestICMP(t *testing.T) {
- p := gopacket.NewPacket(testICMP, LinkTypeEthernet, testDecodeOptions)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
- testSerialization(t, p, testICMP)
-}
-func BenchmarkDecodeICMP(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testICMP, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// testICMP6 is the packet:
-// 16:17:37.758937 IP6 fe80::21f:caff:feb3:75c0 > 2620:0:1005:0:26be:5ff:fe27:b17: ICMP6, neighbor solicitation, who has 2620:0:1005:0:26be:5ff:fe27:b17, length 32
-// 0x0000: 24be 0527 0b17 001f cab3 75c0 86dd 6e00 $..'......u...n.
-// 0x0010: 0000 0020 3aff fe80 0000 0000 0000 021f ....:...........
-// 0x0020: caff feb3 75c0 2620 0000 1005 0000 26be ....u.&.......&.
-// 0x0030: 05ff fe27 0b17 8700 1eba 0000 0000 2620 ...'..........&.
-// 0x0040: 0000 1005 0000 26be 05ff fe27 0b17 0101 ......&....'....
-// 0x0050: 001f cab3 75c0 ....u.
-var testICMP6 = []byte{
- 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x75, 0xc0, 0x86, 0xdd, 0x6e, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x3a, 0xff, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f,
- 0xca, 0xff, 0xfe, 0xb3, 0x75, 0xc0, 0x26, 0x20, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x26, 0xbe,
- 0x05, 0xff, 0xfe, 0x27, 0x0b, 0x17, 0x87, 0x00, 0x1e, 0xba, 0x00, 0x00, 0x00, 0x00, 0x26, 0x20,
- 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x26, 0xbe, 0x05, 0xff, 0xfe, 0x27, 0x0b, 0x17, 0x01, 0x01,
- 0x00, 0x1f, 0xca, 0xb3, 0x75, 0xc0,
-}
-
-func TestICMP6(t *testing.T) {
- p := gopacket.NewPacket(testICMP6, LinkTypeEthernet, testDecodeOptions)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeICMPv6, gopacket.LayerTypePayload}, t)
- testSerialization(t, p, testICMP6)
-}
-func BenchmarkDecodeICMP6(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testICMP6, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// testMPLS is the packet:
-// 12:48:57.201014 MPLS (label 29, exp 0, [S], ttl 255) IP 10.1.2.1 > 10.34.0.1: ICMP echo request, id 2618, seq 1579, length 80
-// 0x0000: 0030 96e6 fc39 0030 9605 2838 8847 0001 .0...9.0..(8.G..
-// 0x0010: d1ff 4500 0064 000b 0000 ff01 a569 0a01 ..E..d.......i..
-// 0x0020: 0201 0a22 0001 0800 3a76 0a3a 062b 0000 ..."....:v.:.+..
-// 0x0030: 0000 001f 3350 abcd abcd abcd abcd abcd ....3P..........
-// 0x0040: abcd abcd abcd abcd abcd abcd abcd abcd ................
-// 0x0050: abcd abcd abcd abcd abcd abcd abcd abcd ................
-// 0x0060: abcd abcd abcd abcd abcd abcd abcd abcd ................
-// 0x0070: abcd abcd abcd ......
-var testMPLS = []byte{
- 0x00, 0x30, 0x96, 0xe6, 0xfc, 0x39, 0x00, 0x30, 0x96, 0x05, 0x28, 0x38, 0x88, 0x47, 0x00, 0x01,
- 0xd1, 0xff, 0x45, 0x00, 0x00, 0x64, 0x00, 0x0b, 0x00, 0x00, 0xff, 0x01, 0xa5, 0x69, 0x0a, 0x01,
- 0x02, 0x01, 0x0a, 0x22, 0x00, 0x01, 0x08, 0x00, 0x3a, 0x76, 0x0a, 0x3a, 0x06, 0x2b, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x1f, 0x33, 0x50, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-}
-
-func TestMPLS(t *testing.T) {
- p := gopacket.NewPacket(testMPLS, LinkTypeEthernet, testDecodeOptions)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeMPLS, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
- testSerialization(t, p, testMPLS)
-}
-func BenchmarkDecodeMPLS(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testMPLS, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// testPPPoEICMPv6 is the packet:
-// 07:43:31.091560 PPPoE [ses 0x11] IP6 fe80::c801:eff:fe88:8 > ff02::1: ICMP6, neighbor advertisement, tgt is fe80::c801:eff:fe88:8, length 24
-// 0x0000: cc05 0e88 0000 ca01 0e88 0006 8864 1100 .............d..
-// 0x0010: 0011 0042 0057 6e00 0000 0018 3aff fe80 ...B.Wn.....:...
-// 0x0020: 0000 0000 0000 c801 0eff fe88 0008 ff02 ................
-// 0x0030: 0000 0000 0000 0000 0000 0000 0001 8800 ................
-// 0x0040: 5083 8000 0000 fe80 0000 0000 0000 c801 P...............
-// 0x0050: 0eff fe88 0008 ......
-var testPPPoEICMPv6 = []byte{
- 0xcc, 0x05, 0x0e, 0x88, 0x00, 0x00, 0xca, 0x01, 0x0e, 0x88, 0x00, 0x06, 0x88, 0x64, 0x11, 0x00,
- 0x00, 0x11, 0x00, 0x42, 0x00, 0x57, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3a, 0xff, 0xfe, 0x80,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x0e, 0xff, 0xfe, 0x88, 0x00, 0x08, 0xff, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x00,
- 0x50, 0x83, 0x80, 0x00, 0x00, 0x00, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01,
- 0x0e, 0xff, 0xfe, 0x88, 0x00, 0x08,
-}
-
-func TestPPPoEICMPv6(t *testing.T) {
- p := gopacket.NewPacket(testPPPoEICMPv6, LinkTypeEthernet, testDecodeOptions)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{
- LayerTypeEthernet,
- LayerTypePPPoE,
- LayerTypePPP,
- LayerTypeIPv6,
- LayerTypeICMPv6,
- gopacket.LayerTypePayload,
- }, t)
- testSerialization(t, p, testPPPoEICMPv6)
-}
-func BenchmarkDecodePPPoEICMPv6(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPPPoEICMPv6, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-var testPFLogUDP = []byte{
- 0x3d, 0x02, 0x00, 0x00, 0x65, 0x6e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xff, 0xff, 0xff, 0x7f,
- 0xa0, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xb8, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
- 0x45, 0x00, 0x00, 0x2c, 0x02, 0x16, 0x00, 0x00, 0x40, 0x11, 0x4e, 0xb0, 0xac, 0x17, 0xe8, 0xcc,
- 0xac, 0x17, 0xe8, 0xff, 0xf0, 0xff, 0x21, 0xa4, 0x00, 0x18, 0x2a, 0x25, 0x50, 0x4e, 0x4a, 0x50,
- 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPFLogUDP(t *testing.T) {
- p := gopacket.NewPacket(testPFLogUDP, LinkTypePFLog, testDecodeOptions)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{
- LayerTypePFLog,
- LayerTypeIPv4,
- LayerTypeUDP,
- gopacket.LayerTypePayload,
- }, t)
-}
-
-func TestRegressionDot1QPriority(t *testing.T) {
- d := &Dot1Q{
- Priority: 2,
- }
- out := gopacket.NewSerializeBuffer()
- gopacket.SerializeLayers(out, gopacket.SerializeOptions{}, d)
- if err := d.DecodeFromBytes(out.Bytes(), gopacket.NilDecodeFeedback); err != nil {
- t.Errorf("could not decode encoded dot1q")
- } else if d.Priority != 2 {
- t.Errorf("priority mismatch, want 2 got %d", d.Priority)
- }
-}
-
-// testPacketMPLSInMPLS is the packet:
-// 15:27:44.753678 MPLS (label 18, exp 0, ttl 255) (label 16, exp 0, [S], ttl
-// 255) IP 10.31.0.1 > 10.34.0.1: ICMP echo request, id 3941, seq 4768, length
-// 80
-// 0x0000: 0030 96e6 fc39 0030 9605 2838 8847 0001 .0...9.0..(8.G..
-// 0x0010: 20ff 0001 01ff 4500 0064 0050 0000 ff01 ......E..d.P....
-// 0x0020: a706 0a1f 0001 0a22 0001 0800 bd11 0f65 .......".......e
-// 0x0030: 12a0 0000 0000 0053 9ee0 abcd abcd abcd .......S........
-// 0x0040: abcd abcd abcd abcd abcd abcd abcd abcd ................
-// 0x0050: abcd abcd abcd abcd abcd abcd abcd abcd ................
-// 0x0060: abcd abcd abcd abcd abcd abcd abcd abcd ................
-// 0x0070: abcd abcd abcd abcd abcd ..........
-var testPacketMPLSInMPLS = []byte{
- 0x00, 0x30, 0x96, 0xe6, 0xfc, 0x39, 0x00, 0x30, 0x96, 0x05, 0x28, 0x38, 0x88, 0x47, 0x00, 0x01,
- 0x20, 0xff, 0x00, 0x01, 0x01, 0xff, 0x45, 0x00, 0x00, 0x64, 0x00, 0x50, 0x00, 0x00, 0xff, 0x01,
- 0xa7, 0x06, 0x0a, 0x1f, 0x00, 0x01, 0x0a, 0x22, 0x00, 0x01, 0x08, 0x00, 0xbd, 0x11, 0x0f, 0x65,
- 0x12, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x9e, 0xe0, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-}
-
-func TestPacketMPLSInMPLS(t *testing.T) {
- p := gopacket.NewPacket(testPacketMPLSInMPLS, LinkTypeEthernet, testDecodeOptions)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{
- LayerTypeEthernet,
- LayerTypeMPLS,
- LayerTypeMPLS,
- LayerTypeIPv4,
- LayerTypeICMPv4,
- gopacket.LayerTypePayload}, t)
-}
-
-// testPacketIPv4Fragmented is the packet:
-// 22:11:26.616090 IP 10.1.1.1.31915 > 129.111.30.27.20197: UDP, length 28
-// 0x0000: 0000 39cf d9cd 0040 33d9 7cfd 0800 4500 ..9....@3.|...E.
-// 0x0010: 0038 00f2 2000 4011 af37 0a01 0101 816f .8....@..7.....o
-// 0x0020: 1e1b 7cab 4ee5 0024 0000 0000 0000 0000 ..|.N..$........
-// 0x0030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x0040: 0000 0000 0000 ......
-var testPacketIPv4Fragmented = []byte{
- 0x00, 0x00, 0x39, 0xcf, 0xd9, 0xcd, 0x00, 0x40, 0x33, 0xd9, 0x7c, 0xfd, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x38, 0x00, 0xf2, 0x20, 0x00, 0x40, 0x11, 0xaf, 0x37, 0x0a, 0x01, 0x01, 0x01, 0x81, 0x6f,
- 0x1e, 0x1b, 0x7c, 0xab, 0x4e, 0xe5, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketIPv4Fragmented(t *testing.T) {
- p := gopacket.NewPacket(testPacketIPv4Fragmented, LinkTypeEthernet, testDecodeOptions)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, gopacket.LayerTypeFragment}, t)
- testSerializationWithOpts(t, p, testPacketIPv4Fragmented, gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true})
-}
-
-// TestSCTPChunkBadLength tests for issue #146
-func TestSCTPChunkBadLength(t *testing.T) {
- data := []byte(
- "0000\xad9$e\x11\xe4\xaeo\b\x00E\x00\x018\xb4\xa3" +
- "\x00\x00Y\x84\xc4@\x11gz\xc0\xa8\xee\x01\xc0\xa8" +
- "\xeeD\x007le\x03\x01\xc0\f\xdf\b\x01\x00\x00")
-
- // this panic'd previously due to a zero length chunk getting
- // repeatedly read
- gopacket.NewPacket(data, LinkTypeEthernet, gopacket.Default)
-}
-
-// TestSTP
-func TestSTP(t *testing.T) {
- testSTPpacket := []byte{
- 0x01, 0x80, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0E, 0x87, 0x85, 0x04, 0x00, 0x26, 0x42, 0x42,
- 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x64, 0x00, 0x1C, 0x0E, 0x87, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x80, 0x64, 0x00, 0x1C, 0x0E, 0x87, 0x85, 0x00, 0x80, 0x04, 0x01, 0x00, 0x14, 0x00,
- 0x02, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- }
- p := gopacket.NewPacket(testSTPpacket, LinkTypeEthernet, testDecodeOptions)
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeLLC, LayerTypeSTP}, t)
-}
diff --git a/vendor/github.com/google/gopacket/layers/dhcp_test.go b/vendor/github.com/google/gopacket/layers/dhcp_test.go
deleted file mode 100644
index c4975dc..0000000
--- a/vendor/github.com/google/gopacket/layers/dhcp_test.go
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2016, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "bytes"
- "net"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-func TestDHCPv4EncodeRequest(t *testing.T) {
- dhcp := &DHCPv4{Operation: DHCPOpRequest, HardwareType: LinkTypeEthernet, Xid: 0x12345678,
- ClientIP: net.IP{0, 0, 0, 0}, YourClientIP: net.IP{0, 0, 0, 0}, NextServerIP: net.IP{0, 0, 0, 0}, RelayAgentIP: net.IP{0, 0, 0, 0},
- ClientHWAddr: net.HardwareAddr{0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc},
- ServerName: make([]byte, 64), File: make([]byte, 128)}
-
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptMessageType, []byte{byte(DHCPMsgTypeDiscover)}))
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptHostname, []byte{'e', 'x', 'a', 'm', 'p', 'l', 'e', '.', 'c', 'o', 'm'}))
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptPad, nil))
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptParamsRequest,
- []byte{byte(DHCPOptSubnetMask), byte(DHCPOptBroadcastAddr), byte(DHCPOptTimeOffset),
- byte(DHCPOptRouter), byte(DHCPOptDomainName), byte(DHCPOptDNS), byte(DHCPOptDomainSearch),
- byte(DHCPOptHostname), byte(DHCPOptNetBIOSTCPNS), byte(DHCPOptInterfaceMTU), byte(DHCPOptClasslessStaticRoute),
- byte(DHCPOptNTPServers)}))
-
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true}
- err := gopacket.SerializeLayers(buf, opts, dhcp)
- if err != nil {
- t.Fatal(err)
- }
-
- p2 := gopacket.NewPacket(buf.Bytes(), LayerTypeDHCPv4, testDecodeOptions)
- dhcp2 := p2.Layer(LayerTypeDHCPv4).(*DHCPv4)
- testDHCPEqual(t, dhcp, dhcp2)
-}
-
-func TestDHCPv4EncodeResponse(t *testing.T) {
- dhcp := &DHCPv4{Operation: DHCPOpReply, HardwareType: LinkTypeEthernet, Xid: 0x12345678,
- ClientIP: net.IP{0, 0, 0, 0}, YourClientIP: net.IP{192, 168, 0, 123}, NextServerIP: net.IP{192, 168, 0, 1}, RelayAgentIP: net.IP{0, 0, 0, 0},
- ClientHWAddr: net.HardwareAddr{0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc},
- ServerName: make([]byte, 64), File: make([]byte, 128)}
-
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptMessageType, []byte{byte(DHCPMsgTypeOffer)}))
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptSubnetMask, []byte{255, 255, 255, 0}))
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptPad, nil))
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptT1, []byte{0x00, 0x00, 0x0e, 0x10}))
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptT2, []byte{0x00, 0x00, 0x0e, 0x10}))
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptLeaseTime, []byte{0x00, 0x00, 0x0e, 0x10}))
- dhcp.Options = append(dhcp.Options, NewDHCPOption(DHCPOptServerID, []byte{192, 168, 0, 1}))
-
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true}
- err := gopacket.SerializeLayers(buf, opts, dhcp)
- if err != nil {
- t.Fatal(err)
- }
-
- p2 := gopacket.NewPacket(buf.Bytes(), LayerTypeDHCPv4, testDecodeOptions)
- dhcp2 := p2.Layer(LayerTypeDHCPv4).(*DHCPv4)
- testDHCPEqual(t, dhcp, dhcp2)
-}
-
-func testDHCPEqual(t *testing.T, d1, d2 *DHCPv4) {
- if d1.Operation != d2.Operation {
- t.Errorf("expected Operation=%s, got %s", d1.Operation, d2.Operation)
- }
- if d1.HardwareType != d2.HardwareType {
- t.Errorf("expected HardwareType=%s, got %s", d1.HardwareType, d2.HardwareType)
- }
- if d1.HardwareLen != d2.HardwareLen {
- t.Errorf("expected HardwareLen=%v, got %v", d1.HardwareLen, d2.HardwareLen)
- }
- if d1.HardwareOpts != d2.HardwareOpts {
- t.Errorf("expected HardwareOpts=%v, got %v", d1.HardwareOpts, d2.HardwareOpts)
- }
- if d1.Xid != d2.Xid {
- t.Errorf("expected Xid=%v, got %v", d1.Xid, d2.Xid)
- }
- if d1.Secs != d2.Secs {
- t.Errorf("expected Secs=%v, got %v", d1.Secs, d2.Secs)
- }
- if d1.Flags != d2.Flags {
- t.Errorf("expected Flags=%v, got %v", d1.Flags, d2.Flags)
- }
- if !d1.ClientIP.Equal(d2.ClientIP) {
- t.Errorf("expected ClientIP=%v, got %v", d1.ClientIP, d2.ClientIP)
- }
- if !d1.YourClientIP.Equal(d2.YourClientIP) {
- t.Errorf("expected YourClientIP=%v, got %v", d1.YourClientIP, d2.YourClientIP)
- }
- if !d1.NextServerIP.Equal(d2.NextServerIP) {
- t.Errorf("expected NextServerIP=%v, got %v", d1.NextServerIP, d2.NextServerIP)
- }
- if !d1.RelayAgentIP.Equal(d2.RelayAgentIP) {
- t.Errorf("expected RelayAgentIP=%v, got %v", d1.RelayAgentIP, d2.RelayAgentIP)
- }
- if !bytes.Equal(d1.ClientHWAddr, d2.ClientHWAddr) {
- t.Errorf("expected ClientHWAddr=%v, got %v", d1.ClientHWAddr, d2.ClientHWAddr)
- }
- if !bytes.Equal(d1.ServerName, d2.ServerName) {
- t.Errorf("expected ServerName=%v, got %v", d1.ServerName, d2.ServerName)
- }
- if !bytes.Equal(d1.File, d2.File) {
- t.Errorf("expected File=%v, got %v", d1.File, d2.File)
- }
- if len(d1.Options) != len(d2.Options) {
- t.Errorf("expected %d options, got %d", len(d1.Options), len(d2.Options))
- }
-
- for i, o := range d1.Options {
- testDHCPOptionEqual(t, i, o, d2.Options[i])
- }
-}
-
-func testDHCPOptionEqual(t *testing.T, idx int, d1, d2 DHCPOption) {
- if d1.Type != d2.Type {
- t.Errorf("expection Options[%d].Type = %s, got %s", idx, d1.Type, d2.Type)
- }
- if !bytes.Equal(d1.Data, d2.Data) {
- t.Errorf("expection Options[%d].Data to be = %v, got %v", idx, d1.Data, d2.Data)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/dns_test.go b/vendor/github.com/google/gopacket/layers/dns_test.go
deleted file mode 100644
index 264513b..0000000
--- a/vendor/github.com/google/gopacket/layers/dns_test.go
+++ /dev/null
@@ -1,833 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "bytes"
- "net"
- "strings"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-// testPacketDNSRegression is the packet:
-// 11:08:05.708342 IP 109.194.160.4.57766 > 95.211.92.14.53: 63000% [1au] A? picslife.ru. (40)
-// 0x0000: 0022 19b6 7e22 000f 35bb 0b40 0800 4500 ."..~"..5..@..E.
-// 0x0010: 0044 89c4 0000 3811 2f3d 6dc2 a004 5fd3 .D....8./=m..._.
-// 0x0020: 5c0e e1a6 0035 0030 a597 f618 0010 0001 \....5.0........
-// 0x0030: 0000 0000 0001 0870 6963 736c 6966 6502 .......picslife.
-// 0x0040: 7275 0000 0100 0100 0029 1000 0000 8000 ru.......)......
-// 0x0050: 0000 ..
-var testPacketDNSRegression = []byte{
- 0x00, 0x22, 0x19, 0xb6, 0x7e, 0x22, 0x00, 0x0f, 0x35, 0xbb, 0x0b, 0x40, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x44, 0x89, 0xc4, 0x00, 0x00, 0x38, 0x11, 0x2f, 0x3d, 0x6d, 0xc2, 0xa0, 0x04, 0x5f, 0xd3,
- 0x5c, 0x0e, 0xe1, 0xa6, 0x00, 0x35, 0x00, 0x30, 0xa5, 0x97, 0xf6, 0x18, 0x00, 0x10, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x70, 0x69, 0x63, 0x73, 0x6c, 0x69, 0x66, 0x65, 0x02,
- 0x72, 0x75, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x29, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00,
- 0x00, 0x00,
-}
-
-func TestPacketDNSRegression(t *testing.T) {
- p := gopacket.NewPacket(testPacketDNSRegression, LinkTypeEthernet, testDecodeOptions)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeDNS}, t)
-}
-func BenchmarkDecodePacketDNSRegression(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketDNSRegression, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// response to `dig TXT google.com` over IPv4 link:
-var testParseDNSTypeTXTValue = `v=spf1 include:_spf.google.com ~all`
-var testParseDNSTypeTXT = []byte{
- 0x02, 0x00, 0x00, 0x00, // PF_INET
- 0x45, 0x00, 0x00, 0x73, 0x00, 0x00, 0x40, 0x00, 0x39, 0x11, 0x64, 0x98, 0xd0, 0x43, 0xde, 0xde,
- 0x0a, 0xba, 0x23, 0x06, 0x00, 0x35, 0x81, 0xb2, 0x00, 0x5f, 0xdc, 0xb5, 0x98, 0x71, 0x81, 0x80,
- 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x03,
- 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x0c, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00,
- 0x0e, 0x10, 0x00, 0x24, 0x23, 0x76, 0x3d, 0x73, 0x70, 0x66, 0x31, 0x20, 0x69, 0x6e, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x3a, 0x5f, 0x73, 0x70, 0x66, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x63, 0x6f, 0x6d, 0x20, 0x7e, 0x61, 0x6c, 0x6c, 0x00, 0x00, 0x29, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
-}
-
-func TestParseDNSTypeTXT(t *testing.T) {
- p := gopacket.NewPacket(testParseDNSTypeTXT, LinkTypeNull, testDecodeOptions)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeLoopback, LayerTypeIPv4, LayerTypeUDP, LayerTypeDNS}, t)
- answers := p.Layer(LayerTypeDNS).(*DNS).Answers
- if len(answers) != 1 {
- t.Error("Failed to parse 1 DNS answer")
- }
- if len(answers[0].TXTs) != 1 {
- t.Error("Failed to parse 1 TXT record")
- }
- txt := string(answers[0].TXTs[0])
- if txt != testParseDNSTypeTXTValue {
- t.Errorf("Incorrect TXT value, expected %q, got %q", testParseDNSTypeTXTValue, txt)
- }
-}
-
-func testQuestionEqual(t *testing.T, i int, exp, got DNSQuestion) {
- if !bytes.Equal(exp.Name, got.Name) {
- t.Errorf("expected Questions[%d].Name = %v, got %v", i, string(exp.Name), string(got.Name))
- }
- if exp.Type != got.Type {
- t.Errorf("expected Questions[%d].Type = %v, got %v", i, exp.Type, got.Type)
- }
- if exp.Class != got.Class {
- t.Errorf("expected Questions[%d].Class = %v, got %v", i, exp.Class, got.Class)
- }
-}
-
-func testResourceEqual(t *testing.T, i int, name string, exp, got DNSResourceRecord) {
- if !bytes.Equal(exp.Name, got.Name) {
- t.Errorf("expected %s[%d].Name = %v, got %v", name, i, string(exp.Name), string(got.Name))
- }
-
- if exp.Type != got.Type {
- t.Errorf("expected %s[%d].Type = %v, got %v", name, i, exp.Type, got.Type)
- }
-
- if exp.Class != got.Class {
- t.Errorf("expected %s[%d].Class = %v, got %v", name, i, exp.Class, got.Class)
- }
-
- if exp.TTL != got.TTL {
- t.Errorf("expected %s[%d].TTL = %v, got %v", name, i, exp.TTL, got.TTL)
- }
- if exp.DataLength != got.DataLength {
- t.Errorf("expected %s[%d].DataLength = %v, got %v", name, i, exp.DataLength, got.DataLength)
- }
-
- // we don't check .Data
-
- if !exp.IP.Equal(got.IP) {
- t.Errorf("expected %s[%d].IP = %v, got %v", name, i, exp.IP, got.IP)
- }
- if !bytes.Equal(exp.NS, got.NS) {
- t.Errorf("expected %s[%d].NS = %v, got %v", name, i, exp.NS, got.NS)
- }
- if !bytes.Equal(exp.CNAME, got.CNAME) {
- t.Errorf("expected %s[%d].CNAME = %v, got %v", name, i, exp.CNAME, got.CNAME)
- }
- if !bytes.Equal(exp.PTR, got.PTR) {
- t.Errorf("expected %s[%d].PTR = %v, got %v", name, i, exp.PTR, got.PTR)
- }
- if len(exp.TXTs) != len(got.TXTs) {
- t.Errorf("expected %s[%d].TXTs = %v, got %v", name, i, exp.TXTs, got.TXTs)
- }
- for j := range exp.TXTs {
- if !bytes.Equal(exp.TXTs[j], got.TXTs[j]) {
- t.Errorf("expected %s[%d].TXTs[%d] = %v, got %v", name, i, j, exp.TXTs[j], got.TXTs[j])
- }
- }
-
- // SOA
- if !bytes.Equal(exp.SOA.MName, got.SOA.MName) {
- t.Errorf("expected %s[%d].SOA.MName = %v, got %v", name, i, exp.SOA.MName, got.SOA.MName)
- }
- if !bytes.Equal(exp.SOA.RName, got.SOA.RName) {
- t.Errorf("expected %s[%d].SOA.RName = %v, got %v", name, i, exp.SOA.RName, got.SOA.RName)
- }
- if exp.SOA.Serial != got.SOA.Serial {
- t.Errorf("expected %s[%d].SOA.Serial = %v, got %v", name, i, exp.SOA.Serial, got.SOA.Serial)
- }
- if exp.SOA.Refresh != got.SOA.Refresh {
- t.Errorf("expected %s[%d].SOA.Refresh = %v, got %v", name, i, exp.SOA.Refresh, got.SOA.Refresh)
- }
- if exp.SOA.Retry != got.SOA.Retry {
- t.Errorf("expected %s[%d].SOA.Retry = %v, got %v", name, i, exp.SOA.Retry, got.SOA.Retry)
- }
- if exp.SOA.Expire != got.SOA.Expire {
- t.Errorf("expected %s[%d].SOA.Expire = %v, got %v", name, i, exp.SOA.Expire, got.SOA.Expire)
- }
- if exp.SOA.Minimum != got.SOA.Minimum {
- t.Errorf("expected %s[%d].SOA.Minimum = %v, got %v", name, i, exp.SOA.Minimum, got.SOA.Minimum)
- }
-
- // SRV
- if !bytes.Equal(exp.SRV.Name, got.SRV.Name) {
- t.Errorf("expected %s[%d].SRV.Name = %v, got %v", name, i, exp.SRV.Name, got.SRV.Name)
- }
- if exp.SRV.Weight != got.SRV.Weight {
- t.Errorf("expected %s[%d].SRV.Weight = %v, got %v", name, i, exp.SRV.Weight, got.SRV.Weight)
- }
- if exp.SRV.Port != got.SRV.Port {
- t.Errorf("expected %s[%d].SRV.Port = %v, got %v", name, i, exp.SRV.Port, got.SRV.Port)
- }
- // MX
- if !bytes.Equal(exp.MX.Name, got.MX.Name) {
- t.Errorf("expected %s[%d].MX.Name = %v, got %v", name, i, exp.MX.Name, got.MX.Name)
- }
- if exp.MX.Preference != got.MX.Preference {
- t.Errorf("expected %s[%d].MX.Preference = %v, got %v", name, i, exp.MX.Preference, got.MX.Preference)
- }
-}
-
-func testDNSEqual(t *testing.T, exp, got *DNS) {
- if exp.ID != got.ID {
- t.Errorf("expected ID = %v, got %v", exp.ID, got.ID)
- }
- if exp.AA != got.AA {
- t.Errorf("expected AA = %v, got %v", exp.AA, got.AA)
- }
- if exp.OpCode != got.OpCode {
- t.Errorf("expected OpCode = %v, got %v", exp.OpCode, got.OpCode)
- }
- if exp.AA != got.AA {
- t.Errorf("expected AA = %v, got %v", exp.AA, got.AA)
- }
- if exp.TC != got.TC {
- t.Errorf("expected TC = %v, got %v", exp.TC, got.TC)
- }
- if exp.RD != got.RD {
- t.Errorf("expected RD = %v, got %v", exp.RD, got.RD)
- }
- if exp.RA != got.RA {
- t.Errorf("expected RA = %v, got %v", exp.RA, got.RA)
- }
- if exp.Z != got.Z {
- t.Errorf("expected Z = %v, got %v", exp.Z, got.Z)
- }
- if exp.ResponseCode != got.ResponseCode {
- t.Errorf("expected ResponseCode = %v, got %v", exp.ResponseCode, got.ResponseCode)
- }
- if exp.QDCount != got.QDCount {
- t.Errorf("expected QDCount = %v, got %v", exp.QDCount, got.QDCount)
- }
- if exp.ANCount != got.ANCount {
- t.Errorf("expected ANCount = %v, got %v", exp.ANCount, got.ANCount)
- }
- if exp.ANCount != got.ANCount {
- t.Errorf("expected ANCount = %v, got %v", exp.ANCount, got.ANCount)
- }
- if exp.NSCount != got.NSCount {
- t.Errorf("expected NSCount = %v, got %v", exp.NSCount, got.NSCount)
- }
- if exp.ARCount != got.ARCount {
- t.Errorf("expected ARCount = %v, got %v", exp.ARCount, got.ARCount)
- }
-
- if len(exp.Questions) != len(got.Questions) {
- t.Errorf("expected %d Questions, got %d", len(exp.Questions), len(got.Questions))
- }
- for i := range exp.Questions {
- testQuestionEqual(t, i, exp.Questions[i], got.Questions[i])
- }
-
- if len(exp.Answers) != len(got.Answers) {
- t.Errorf("expected %d Answers, got %d", len(exp.Answers), len(got.Answers))
- }
- for i := range exp.Answers {
- testResourceEqual(t, i, "Answers", exp.Answers[i], got.Answers[i])
- }
-
- if len(exp.Authorities) != len(got.Authorities) {
- t.Errorf("expected %d Answers, got %d", len(exp.Authorities), len(got.Authorities))
- }
- for i := range exp.Authorities {
- testResourceEqual(t, i, "Authorities", exp.Authorities[i], got.Authorities[i])
- }
-
- if len(exp.Additionals) != len(got.Additionals) {
- t.Errorf("expected %d Additionals, got %d", len(exp.Additionals), len(got.Additionals))
- }
- for i := range exp.Additionals {
- testResourceEqual(t, i, "Additionals", exp.Additionals[i], got.Additionals[i])
- }
-}
-
-func TestDNSEncodeQuery(t *testing.T) {
- dns := &DNS{ID: 1234, OpCode: DNSOpCodeQuery, RD: true}
- dns.Questions = append(dns.Questions,
- DNSQuestion{
- Name: []byte("example1.com"),
- Type: DNSTypeA,
- Class: DNSClassIN,
- })
-
- dns.Questions = append(dns.Questions,
- DNSQuestion{
- Name: []byte("example2.com"),
- Type: DNSTypeA,
- Class: DNSClassIN,
- })
-
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true}
- err := gopacket.SerializeLayers(buf, opts, dns)
- if err != nil {
- t.Fatal(err)
- }
- if int(dns.QDCount) != len(dns.Questions) {
- t.Errorf("fix lengths did not adjust QDCount, expected %d got %d", len(dns.Questions), dns.QDCount)
- }
-
- p2 := gopacket.NewPacket(buf.Bytes(), LayerTypeDNS, testDecodeOptions)
- dns2 := p2.Layer(LayerTypeDNS).(*DNS)
- testDNSEqual(t, dns, dns2)
-}
-
-func TestDNSEncodeResponse(t *testing.T) {
- dns := &DNS{ID: 1234, QR: true, OpCode: DNSOpCodeQuery,
- AA: true, RD: true, RA: true}
- dns.Questions = append(dns.Questions,
- DNSQuestion{
- Name: []byte("example1.com"),
- Type: DNSTypeA,
- Class: DNSClassIN,
- })
- dns.Questions = append(dns.Questions,
- DNSQuestion{
- Name: []byte("www.example2.com"),
- Type: DNSTypeAAAA,
- Class: DNSClassIN,
- })
-
- dns.Answers = append(dns.Answers,
- DNSResourceRecord{
- Name: []byte("example1.com"),
- Type: DNSTypeA,
- Class: DNSClassIN,
- TTL: 1024,
- IP: net.IP([]byte{1, 2, 3, 4}),
- })
-
- dns.Answers = append(dns.Answers,
- DNSResourceRecord{
- Name: []byte("www.example2.com"),
- Type: DNSTypeAAAA,
- Class: DNSClassIN,
- TTL: 1024,
- IP: net.IP([]byte{5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4}),
- })
-
- dns.Answers = append(dns.Answers,
- DNSResourceRecord{
- Name: []byte("www.example2.com"),
- Type: DNSTypeCNAME,
- Class: DNSClassIN,
- TTL: 1024,
- CNAME: []byte("example2.com"),
- })
-
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true}
- err := gopacket.SerializeLayers(buf, opts, dns)
- if err != nil {
- t.Fatal(err)
- }
- if int(dns.ANCount) != len(dns.Answers) {
- t.Errorf("fix lengths did not adjust ANCount, expected %d got %d", len(dns.Answers), dns.ANCount)
- }
- for i, a := range dns.Answers {
- if a.DataLength == 0 {
- t.Errorf("fix lengths did not adjust Answers[%d].DataLength", i)
- }
- }
-
- p2 := gopacket.NewPacket(buf.Bytes(), LayerTypeDNS, testDecodeOptions)
- dns2 := p2.Layer(LayerTypeDNS).(*DNS)
- testDNSEqual(t, dns, dns2)
-}
-
-// testDNSMalformedPacket is the packet:
-// 10:30:00.389666 IP 10.77.43.131.60718 > 10.1.0.17.53: 18245 updateD [b2&3=0x5420] [18516a] [12064q] [21584n] [12081au][|domain]
-// 0x0000: 0000 0101 0000 4e96 1476 afa1 0800 4500 ......N..v....E.
-// 0x0010: 0039 d431 0000 f311 b3a0 0a4d 2b83 0a01 .9.1.......M+...
-// 0x0020: 0011 ed2e 0035 0025 0832 4745 5420 2f20 .....5.%.2GET./.
-// 0x0030: 4854 5450 2f31 2e31 0d0a 486f 7374 3a20 HTTP/1.1..Host:.
-// 0x0040: 7777 770d 0a0d 0a www....
-var testDNSMalformedPacket = []byte{
- 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x4e, 0x96, 0x14, 0x76, 0xaf, 0xa1, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x39, 0xd4, 0x31, 0x00, 0x00, 0xf3, 0x11, 0xb3, 0xa0, 0x0a, 0x4d, 0x2b, 0x83, 0x0a, 0x01,
- 0x00, 0x11, 0xed, 0x2e, 0x00, 0x35, 0x00, 0x25, 0x08, 0x32, 0x47, 0x45, 0x54, 0x20, 0x2f, 0x20,
- 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20,
- 0x77, 0x77, 0x77, 0x0d, 0x0a, 0x0d, 0x0a,
-}
-
-func TestDNSMalformedPacket(t *testing.T) {
- p := gopacket.NewPacket(testDNSMalformedPacket, LinkTypeEthernet, testDecodeOptions)
- if errLayer := p.ErrorLayer(); errLayer == nil {
- t.Error("No error layer on invalid DNS name")
- } else if err := errLayer.Error(); !strings.Contains(err.Error(), "invalid index") {
- t.Errorf("unexpected error message: %v", err)
- }
-}
-
-// testDNSMalformedPacket2 is the packet:
-// 15:14:42.056054 IP 10.77.0.245.53 > 10.1.0.45.38769: 12625 zoneInit YXRRSet- [49833q],[|domain]
-// 0x0000: 0055 22af c637 0022 55ac deac 0800 4500 .U"..7."U.....E.
-// 0x0010: 0079 3767 4000 3911 f49d 0a4d 00f5 0a01 .y7g@.9....M....
-// 0x0020: 002d 0035 9771 0065 6377 3151 f057 c2a9 .-.5.q.ecw1Q.W..
-// 0x0030: fc6e e86a beb0 f7d4 8599 373e b5f8 9db2 .n.j......7>....
-// 0x0040: a399 21a1 9762 def1 def4 f5ab 5675 023e ..!..b......Vu.>
-// 0x0050: c9ca 304f 178a c2ad f2fc 677a 0e4c b892 ..0O......gz.L..
-// 0x0060: ab71 09bb 1ea4 f7c4 fe47 7a39 868b 29a0 .q.......Gz9..).
-// 0x0070: 62c4 d184 5b4e 8817 4cc0 d1d0 d430 11d3 b...[N..L....0..
-// 0x0080: d147 543f afc7 1a .GT?...
-var testDNSMalformedPacket2 = []byte{
- 0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x79, 0x37, 0x67, 0x40, 0x00, 0x39, 0x11, 0xf4, 0x9d, 0x0a, 0x4d, 0x00, 0xf5, 0x0a, 0x01,
- 0x00, 0x2d, 0x00, 0x35, 0x97, 0x71, 0x00, 0x65, 0x63, 0x77, 0x31, 0x51, 0xf0, 0x57, 0xc2, 0xa9,
- 0xfc, 0x6e, 0xe8, 0x6a, 0xbe, 0xb0, 0xf7, 0xd4, 0x85, 0x99, 0x37, 0x3e, 0xb5, 0xf8, 0x9d, 0xb2,
- 0xa3, 0x99, 0x21, 0xa1, 0x97, 0x62, 0xde, 0xf1, 0xde, 0xf4, 0xf5, 0xab, 0x56, 0x75, 0x02, 0x3e,
- 0xc9, 0xca, 0x30, 0x4f, 0x17, 0x8a, 0xc2, 0xad, 0xf2, 0xfc, 0x67, 0x7a, 0x0e, 0x4c, 0xb8, 0x92,
- 0xab, 0x71, 0x09, 0xbb, 0x1e, 0xa4, 0xf7, 0xc4, 0xfe, 0x47, 0x7a, 0x39, 0x86, 0x8b, 0x29, 0xa0,
- 0x62, 0xc4, 0xd1, 0x84, 0x5b, 0x4e, 0x88, 0x17, 0x4c, 0xc0, 0xd1, 0xd0, 0xd4, 0x30, 0x11, 0xd3,
- 0xd1, 0x47, 0x54, 0x3f, 0xaf, 0xc7, 0x1a,
-}
-
-func TestDNSMalformedPacket2(t *testing.T) {
- p := gopacket.NewPacket(testDNSMalformedPacket2, LinkTypeEthernet, testDecodeOptions)
- if errLayer := p.ErrorLayer(); errLayer == nil {
- t.Error("No error layer on invalid DNS name")
- } else if err := errLayer.Error(); !strings.Contains(err.Error(), "offset pointer too high") {
- t.Errorf("unexpected error message: %v", err)
- }
-}
-
-// testMalformedRootQuery is the packet:
-// 08:31:18.143065 IP 10.77.0.26.53 > 10.1.0.233.65071: 59508- 0/13/3 (508)
-// 0x0000: 0055 22af c637 0022 55ac deac 0800 4500 .U"..7."U.....E.
-// 0x0010: 0218 76b2 4000 7211 7ad2 0a4d 001a 0a01 ..v.@.r.z..M....
-// 0x0020: 00e9 0035 fe2f 0204 b8f5 e874 8100 0001 ...5./.....t....
-// 0x0030: 0000 000d 0003 0c61 786b 7663 6863 7063 .......axkvchcpc
-// 0x0040: 7073 6c0a 7878 7878 7878 7878 7878 036e psl.xxxxxxxxxx.n
-// 0x0050: 6574 0000 0100 0100 0002 0001 0000 0e10 et..............
-// 0x0060: 0014 016d 0c72 6f6f 742d 7365 7276 6572 ...m.root-server
-// 0x0070: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x0080: 0014 0161 0c72 6f6f 742d 7365 7276 6572 ...a.root-server
-// 0x0090: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x00a0: 0014 0169 0c72 6f6f 742d 7365 7276 6572 ...i.root-server
-// 0x00b0: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x00c0: 0014 0162 0c72 6f6f 742d 7365 7276 6572 ...b.root-server
-// 0x00d0: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x00e0: 0014 016c 0c72 6f6f 742d 7365 7276 6572 ...l.root-server
-// 0x00f0: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x0100: 0014 0166 0c72 6f6f 742d 7365 7276 6572 ...f.root-server
-// 0x0110: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x0120: 0014 0167 0c72 6f6f 742d 7365 7276 6572 ...g.root-server
-// 0x0130: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x0140: 0014 0164 0c72 6f6f 742d 7365 7276 6572 ...d.root-server
-// 0x0150: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x0160: 0014 0168 0c72 6f6f 742d 7365 7276 6572 ...h.root-server
-// 0x0170: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x0180: 0014 0165 0c72 6f6f 742d 7365 7276 6572 ...e.root-server
-// 0x0190: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x01a0: 0014 016a 0c72 6f6f 742d 7365 7276 6572 ...j.root-server
-// 0x01b0: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x01c0: 0014 016b 0c72 6f6f 742d 7365 7276 6572 ...k.root-server
-// 0x01d0: 7303 6e65 7400 c02d 0002 0001 0000 0e10 s.net..-........
-// 0x01e0: 0014 0163 0c72 6f6f 742d 7365 7276 6572 ...c.root-server
-// 0x01f0: 7303 6e65 7400 c038 0001 0001 0000 0e10 s.net..8........
-// 0x0200: 0004 ca0c 1b21 c058 0001 0001 0000 0e10 .....!.X........
-// 0x0210: 0004 c629 0004 c078 0001 0001 0000 0e10 ...)...x........
-// 0x0220: 0004 c024 9411 ...$..
-var testMalformedRootQuery = []byte{
- 0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
- 0x02, 0x18, 0x76, 0xb2, 0x40, 0x00, 0x72, 0x11, 0x7a, 0xd2, 0x0a, 0x4d, 0x00, 0x1a, 0x0a, 0x01,
- 0x00, 0xe9, 0x00, 0x35, 0xfe, 0x2f, 0x02, 0x04, 0xb8, 0xf5, 0xe8, 0x74, 0x81, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x0c, 0x61, 0x78, 0x6b, 0x76, 0x63, 0x68, 0x63, 0x70, 0x63,
- 0x70, 0x73, 0x6c, 0x0a, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x03, 0x6e,
- 0x65, 0x74, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x6d, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x61, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x69, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x62, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x6c, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x66, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x67, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x64, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x68, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x65, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x6a, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x6b, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x2d, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x14, 0x01, 0x63, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x73, 0x03, 0x6e, 0x65, 0x74, 0x00, 0xc0, 0x38, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x04, 0xca, 0x0c, 0x1b, 0x21, 0xc0, 0x58, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x04, 0xc6, 0x29, 0x00, 0x04, 0xc0, 0x78, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10,
- 0x00, 0x04, 0xc0, 0x24, 0x94, 0x11,
-}
-
-func TestMalformedRootQuery(t *testing.T) {
- p := gopacket.NewPacket(testMalformedRootQuery, LinkTypeEthernet, testDecodeOptions)
- if errLayer := p.ErrorLayer(); errLayer == nil {
- t.Error("No error layer on invalid DNS name")
- } else if err := errLayer.Error(); !strings.Contains(err.Error(), "no dns data found") {
- t.Errorf("unexpected error message: %v", err)
- }
-}
-
-// testAnotherMalformedDNS is the packet:
-// 10:52:13.690904 IP 10.77.0.29.53 > 10.1.0.6.42280: 13491 op6+% [b2&3=0x3313] [11720a] [23583q] [29742n] [52087au] Type22277 (Class 43688)? M- M-<.VM-^KM-wQM-s"M-^E^]M-+^Wx^P^@M-^\^\M-oM-FM-U^F^E7M-tM-^VM-^[M-F^H>G^FM-uM-^KM-_6GM-[M-jM-bM-^H]hM-^J.[|domain]
-// 0x0000: 0055 22af c637 0022 55ac deac 0800 4500 .U"..7."U.....E.
-// 0x0010: 05c1 2eea 4000 3611 fbd1 0a4d 001d 0a01 ....@.6....M....
-// 0x0020: 0006 0035 a528 05ad 00a2 34b3 3313 5c1f ...5.(....4.3.\.
-// 0x0030: 2dc8 742e cb77 2da0 bc2e 568b f751 f322 -.t..w-...V..Q."
-// 0x0040: 851d ab17 7810 009c 1cef c6d5 0605 37f4 ....x.........7.
-// 0x0050: 969b c65e 483e 4706 f58b df36 47db eae2 ...^H>G....6G...
-// 0x0060: 885d 688a c5a5 5705 aaa8 95eb 93a4 d85a .]h...W........Z
-// 0x0070: c9af 261f 7816 a354 2d23 d84a 579c 4876 ..&.x..T-#.JW.Hv
-// 0x0080: a391 43db 5c41 191a 92b8 dcdd 6839 eef5 ..C.\A......h9..
-// 0x0090: 728e 13e0 0679 6f47 88a0 25b9 44d8 f8e7 r....yoG..%.D...
-// 0x00a0: 8afe 0bfa f811 8da5 f8a3 1f8e d23b fe12 .............;..
-// 0x00b0: d943 9327 92ad 4410 183e 688d b06d 5391 .C.'..D..>h..mS.
-// 0x00c0: 695b e49f 8f1e c075 d043 afe0 1174 9db0 i[.....u.C...t..
-// 0x00d0: 06b0 f01e b85b 3c84 945e 06d0 b20f 9eaa .....[<..^......
-// 0x00e0: 123d 0ab0 2a55 309c 0ee9 3e5e db2f f377 .=..*U0...>^./.w
-// 0x00f0: d7f1 9bae 373d 3316 0796 b80e dd18 5173 ....7=3.......Qs
-// 0x0100: b28d 84fd 1812 d87b 42c8 5f11 4db6 b269 .......{B._.M..i
-// 0x0110: 1c42 4aea d5a4 644b 6c00 f0c0 fcee 71a7 .BJ...dKl.....q.
-// 0x0120: e7f0 719c a207 dc5c a6fa f005 a338 7ff0 ..q....\.....8..
-// 0x0130: 5beb 3b4d 8952 2a46 d47b a5a2 e1fb 9e76 [.;M.R*F.{.....v
-// 0x0140: c815 6258 50f4 6997 bad5 b479 2d06 ebbb ..bXP.i....y-...
-// 0x0150: 2cac 2ecc e4f0 1f94 ce9f 186c 61da 9681 ,..........la...
-// 0x0160: 345c 4d88 efc7 037b fbe3 4402 ea06 2e5d 4\M....{..D....]
-// 0x0170: 2e6e 4860 e180 3ef7 c006 0ad1 ebb9 c4ff .nH`..>.........
-// 0x0180: dee2 f21c 02c2 751a ded8 ae2e 13a9 3fa2 ......u.......?.
-// 0x0190: 392a 8b54 11b2 2b4e 2bf1 4780 db9f 8c10 9*.T..+N+.G.....
-// 0x01a0: ac6f 61b0 7b19 423f 07e5 4628 b870 f75d .oa.{.B?..F(.p.]
-// 0x01b0: 09a3 63b2 77af 5985 a0ae 51d8 243f a7c8 ..c.w.Y...Q.$?..
-// 0x01c0: ab08 7fc6 0217 c09f c412 0c45 e6aa 96bf ...........E....
-// 0x01d0: 184c 4307 1f1f c4f4 7734 da31 2088 662b .LC.....w4.1..f+
-// 0x01e0: 44c5 096f 1d1d 2dc5 ffd6 867d 9fc5 7b45 D..o..-....}..{E
-// 0x01f0: f949 7dd9 38de 0d51 ac2a 32fc f50b 1bbe .I}.8..Q.*2.....
-// 0x0200: 1c4b 5441 fbf3 0821 6c28 4530 5676 1d27 .KTA...!l(E0Vv.'
-// 0x0210: 5087 466c 3d5b 45a6 af7f 917a 6d43 66c2 P.Fl=[E....zmCf.
-// 0x0220: 036a 8bef ca60 9b13 8d29 9fda 82fa 01b1 .j...`...)......
-// 0x0230: df8f 1f83 c71d 630f 349e 508c 9f7a e3da ......c.4.P..z..
-// 0x0240: a114 3622 9df8 9926 4dac 4150 d505 7b3a ..6"...&M.AP..{:
-// 0x0250: 6fed fc75 6b4f 2d60 8a89 767d 9af0 896e o..ukO-`..v}...n
-// 0x0260: 907d 1ada def3 345c 0d81 283c a24f fcbb .}....4\..(<.O..
-// 0x0270: bbdd b7b3 e3bb 9f1b d966 51b7 8217 7fa0 .........fQ.....
-// 0x0280: e828 d3ca a6f1 532f 164e e405 bb3b 0de3 .(....S/.N...;..
-// 0x0290: 985d 6e89 d825 ebc6 d8ba 5190 a114 c6a3 .]n..%....Q.....
-// 0x02a0: 18b4 8aa7 181a 01ac cdc0 8048 ea72 a5e3 ...........H.r..
-// 0x02b0: e37a dc57 65cd b787 39e6 c39e 317b 45d8 .z.We...9...1{E.
-// 0x02c0: 475c 05ba e8f8 8224 5a85 27b8 1584 8d78 G\.....$Z.'....x
-// 0x02d0: 62b6 6495 ac10 338f 1122 f2ff 043e 9e2a b.d...3.."...>.*
-// 0x02e0: 1058 a910 5792 6fcd 9a96 6183 6708 8f70 .X..W.o...a.g..p
-// 0x02f0: edc6 a67c 64ff 50fa 520b de94 c82c c4d6 ...|d.P.R....,..
-// 0x0300: 7d8f 0fd5 2f0d 9833 7c6c be10 a4e5 dc99 }.../..3|l......
-// 0x0310: a467 ef5f b35b c11c e23c 131a 48b2 9cef .g._.[...<..H...
-// 0x0320: 5a2f fece dd9e 2aea 0db9 faf3 a6ef b29d Z/....*.........
-// 0x0330: e85d a410 dd6a 6806 3fc6 1694 179f cb4b .]...jh.?......K
-// 0x0340: 08c4 86b2 0713 cddb b257 d56b fe82 7d82 .........W.k..}.
-// 0x0350: 0d1f 6dc9 67b2 d2a1 6791 4f38 edf9 491f ..m.g...g.O8..I.
-// 0x0360: 2c02 35f5 8165 ecc3 bc6a b631 3c7e 1ad4 ,.5..e...j.1<~..
-// 0x0370: 8e27 f962 f942 11b5 1b45 9bac b474 3c6e .'.b.B...E...t<n
-// 0x0380: 6832 3075 be6d ac0d a8a0 7d47 a6ef 4e43 h20u.m....}G..NC
-// 0x0390: 6b9a 3097 8a8b 82a3 9515 362c f7d6 a37f k.0.......6,....
-// 0x03a0: 7313 1199 a5f3 03dc bcc9 fb10 c23d eeb9 s............=..
-// 0x03b0: 78ff c8f3 0d38 9f74 ceec b7ae 63e3 3424 x....8.t....c.4$
-// 0x03c0: b783 f106 011f 666b bf2d abc8 ea10 57a1 ......fk.-....W.
-// 0x03d0: 7cf2 4a3f 57ca 1386 bfba 27e5 4662 81c8 |.J?W.....'.Fb..
-// 0x03e0: 041e 1820 b3d5 c399 cd4d 222f 29f0 b994 .........M"/)...
-// 0x03f0: 865a e6e2 1686 3261 b0cd caaf 07ec d0bc .Z....2a........
-// 0x0400: afb8 3cf0 51c1 6c7a 6383 6b3a ff47 9551 ..<.Q.lzc.k:.G.Q
-// 0x0410: 1099 525f 355e 4684 bd34 ec12 88c9 dcc2 ..R_5^F..4......
-// 0x0420: d11c 826d f1df 37e6 f08f 6ce8 817d bdc3 ...m..7...l..}..
-// 0x0430: 20b9 a274 c645 c67d f299 fef9 287f 09ee ...t.E.}....(...
-// 0x0440: ac67 6872 a126 b1d3 922c 4c2a 0ec9 b6d4 .ghr.&...,L*....
-// 0x0450: fb59 6163 d1c4 1708 8d94 bc3d be5e ae29 .Yac.......=.^.)
-// 0x0460: 51ff a765 9df6 ae35 ed6b 0555 933f 3ed6 Q..e...5.k.U.?>.
-// 0x0470: 259b d93e f86f 6088 0c4e 357b 5c67 7d93 %..>.o`..N5{\g}.
-// 0x0480: a695 1a42 e1e1 ef91 14d7 b7b7 0ca4 2dda ...B..........-.
-// 0x0490: 6ac1 771e 25c1 a578 4ca8 6fd8 de04 1c09 j.w.%..xL.o.....
-// 0x04a0: df49 f179 6a58 2b45 7231 307f bc67 e5e7 .I.yjX+Er10..g..
-// 0x04b0: c5cd fec0 b021 508e 4fc5 f821 f734 90bc .....!P.O..!.4..
-// 0x04c0: c87f 14f1 2e5c d17b 1818 5b4a 6b68 0212 .....\.{..[Jkh..
-// 0x04d0: 1791 4a30 8518 99a9 b516 67e7 ed56 d1d1 ..J0......g..V..
-// 0x04e0: 239d dfda 11c5 0afe e58a b6e0 fb66 ab5c #............f.\
-// 0x04f0: f590 dcd6 457d 01d1 83f5 a9f0 cdb2 9c14 ....E}..........
-// 0x0500: ff66 f10c d428 a07b 34e3 d600 91f2 aca7 .f...(.{4.......
-// 0x0510: 4e1f f3ac a96e 2aa3 ec9b 448c 748d f858 N....n*...D.t..X
-// 0x0520: 131c d496 af9b f5f0 d2f5 57ac 0b64 55a1 ..........W..dU.
-// 0x0530: 860e 5ad0 3e62 26b5 9e17 f51f 88c1 02e3 ..Z.>b&.........
-// 0x0540: 4a38 de70 3216 6f88 5d1e f429 ee19 4121 J8.p2.o.]..)..A!
-// 0x0550: f571 84ac 3789 141f 1798 90b1 8373 2499 .q..7........s$.
-// 0x0560: c131 b13f f3a3 9a07 aef1 bfe8 8cd7 8c2e .1.?............
-// 0x0570: ba35 dfc5 eb07 013c 7621 6481 bdfb 6233 .5.....<v!d...b3
-// 0x0580: 22e2 0f05 7e15 0417 67e4 2632 5207 28a6 "...~...g.&2R.(.
-// 0x0590: 8e88 9423 de54 5412 b53e fd8d d47a de58 ...#.TT..>...z.X
-// 0x05a0: a1b2 6e08 d06d dc21 1eda 14a0 a2f7 1701 ..n..m.!........
-// 0x05b0: a5e0 dfd7 871f 595d db43 70f5 bab3 b732 ......Y].Cp....2
-// 0x05c0: 6275 da15 b203 dac7 321f 8d61 11bd 30 bu......2..a..0
-var testAnotherMalformedDNS = []byte{
- 0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
- 0x05, 0xc1, 0x2e, 0xea, 0x40, 0x00, 0x36, 0x11, 0xfb, 0xd1, 0x0a, 0x4d, 0x00, 0x1d, 0x0a, 0x01,
- 0x00, 0x06, 0x00, 0x35, 0xa5, 0x28, 0x05, 0xad, 0x00, 0xa2, 0x34, 0xb3, 0x33, 0x13, 0x5c, 0x1f,
- 0x2d, 0xc8, 0x74, 0x2e, 0xcb, 0x77, 0x2d, 0xa0, 0xbc, 0x2e, 0x56, 0x8b, 0xf7, 0x51, 0xf3, 0x22,
- 0x85, 0x1d, 0xab, 0x17, 0x78, 0x10, 0x00, 0x9c, 0x1c, 0xef, 0xc6, 0xd5, 0x06, 0x05, 0x37, 0xf4,
- 0x96, 0x9b, 0xc6, 0x5e, 0x48, 0x3e, 0x47, 0x06, 0xf5, 0x8b, 0xdf, 0x36, 0x47, 0xdb, 0xea, 0xe2,
- 0x88, 0x5d, 0x68, 0x8a, 0xc5, 0xa5, 0x57, 0x05, 0xaa, 0xa8, 0x95, 0xeb, 0x93, 0xa4, 0xd8, 0x5a,
- 0xc9, 0xaf, 0x26, 0x1f, 0x78, 0x16, 0xa3, 0x54, 0x2d, 0x23, 0xd8, 0x4a, 0x57, 0x9c, 0x48, 0x76,
- 0xa3, 0x91, 0x43, 0xdb, 0x5c, 0x41, 0x19, 0x1a, 0x92, 0xb8, 0xdc, 0xdd, 0x68, 0x39, 0xee, 0xf5,
- 0x72, 0x8e, 0x13, 0xe0, 0x06, 0x79, 0x6f, 0x47, 0x88, 0xa0, 0x25, 0xb9, 0x44, 0xd8, 0xf8, 0xe7,
- 0x8a, 0xfe, 0x0b, 0xfa, 0xf8, 0x11, 0x8d, 0xa5, 0xf8, 0xa3, 0x1f, 0x8e, 0xd2, 0x3b, 0xfe, 0x12,
- 0xd9, 0x43, 0x93, 0x27, 0x92, 0xad, 0x44, 0x10, 0x18, 0x3e, 0x68, 0x8d, 0xb0, 0x6d, 0x53, 0x91,
- 0x69, 0x5b, 0xe4, 0x9f, 0x8f, 0x1e, 0xc0, 0x75, 0xd0, 0x43, 0xaf, 0xe0, 0x11, 0x74, 0x9d, 0xb0,
- 0x06, 0xb0, 0xf0, 0x1e, 0xb8, 0x5b, 0x3c, 0x84, 0x94, 0x5e, 0x06, 0xd0, 0xb2, 0x0f, 0x9e, 0xaa,
- 0x12, 0x3d, 0x0a, 0xb0, 0x2a, 0x55, 0x30, 0x9c, 0x0e, 0xe9, 0x3e, 0x5e, 0xdb, 0x2f, 0xf3, 0x77,
- 0xd7, 0xf1, 0x9b, 0xae, 0x37, 0x3d, 0x33, 0x16, 0x07, 0x96, 0xb8, 0x0e, 0xdd, 0x18, 0x51, 0x73,
- 0xb2, 0x8d, 0x84, 0xfd, 0x18, 0x12, 0xd8, 0x7b, 0x42, 0xc8, 0x5f, 0x11, 0x4d, 0xb6, 0xb2, 0x69,
- 0x1c, 0x42, 0x4a, 0xea, 0xd5, 0xa4, 0x64, 0x4b, 0x6c, 0x00, 0xf0, 0xc0, 0xfc, 0xee, 0x71, 0xa7,
- 0xe7, 0xf0, 0x71, 0x9c, 0xa2, 0x07, 0xdc, 0x5c, 0xa6, 0xfa, 0xf0, 0x05, 0xa3, 0x38, 0x7f, 0xf0,
- 0x5b, 0xeb, 0x3b, 0x4d, 0x89, 0x52, 0x2a, 0x46, 0xd4, 0x7b, 0xa5, 0xa2, 0xe1, 0xfb, 0x9e, 0x76,
- 0xc8, 0x15, 0x62, 0x58, 0x50, 0xf4, 0x69, 0x97, 0xba, 0xd5, 0xb4, 0x79, 0x2d, 0x06, 0xeb, 0xbb,
- 0x2c, 0xac, 0x2e, 0xcc, 0xe4, 0xf0, 0x1f, 0x94, 0xce, 0x9f, 0x18, 0x6c, 0x61, 0xda, 0x96, 0x81,
- 0x34, 0x5c, 0x4d, 0x88, 0xef, 0xc7, 0x03, 0x7b, 0xfb, 0xe3, 0x44, 0x02, 0xea, 0x06, 0x2e, 0x5d,
- 0x2e, 0x6e, 0x48, 0x60, 0xe1, 0x80, 0x3e, 0xf7, 0xc0, 0x06, 0x0a, 0xd1, 0xeb, 0xb9, 0xc4, 0xff,
- 0xde, 0xe2, 0xf2, 0x1c, 0x02, 0xc2, 0x75, 0x1a, 0xde, 0xd8, 0xae, 0x2e, 0x13, 0xa9, 0x3f, 0xa2,
- 0x39, 0x2a, 0x8b, 0x54, 0x11, 0xb2, 0x2b, 0x4e, 0x2b, 0xf1, 0x47, 0x80, 0xdb, 0x9f, 0x8c, 0x10,
- 0xac, 0x6f, 0x61, 0xb0, 0x7b, 0x19, 0x42, 0x3f, 0x07, 0xe5, 0x46, 0x28, 0xb8, 0x70, 0xf7, 0x5d,
- 0x09, 0xa3, 0x63, 0xb2, 0x77, 0xaf, 0x59, 0x85, 0xa0, 0xae, 0x51, 0xd8, 0x24, 0x3f, 0xa7, 0xc8,
- 0xab, 0x08, 0x7f, 0xc6, 0x02, 0x17, 0xc0, 0x9f, 0xc4, 0x12, 0x0c, 0x45, 0xe6, 0xaa, 0x96, 0xbf,
- 0x18, 0x4c, 0x43, 0x07, 0x1f, 0x1f, 0xc4, 0xf4, 0x77, 0x34, 0xda, 0x31, 0x20, 0x88, 0x66, 0x2b,
- 0x44, 0xc5, 0x09, 0x6f, 0x1d, 0x1d, 0x2d, 0xc5, 0xff, 0xd6, 0x86, 0x7d, 0x9f, 0xc5, 0x7b, 0x45,
- 0xf9, 0x49, 0x7d, 0xd9, 0x38, 0xde, 0x0d, 0x51, 0xac, 0x2a, 0x32, 0xfc, 0xf5, 0x0b, 0x1b, 0xbe,
- 0x1c, 0x4b, 0x54, 0x41, 0xfb, 0xf3, 0x08, 0x21, 0x6c, 0x28, 0x45, 0x30, 0x56, 0x76, 0x1d, 0x27,
- 0x50, 0x87, 0x46, 0x6c, 0x3d, 0x5b, 0x45, 0xa6, 0xaf, 0x7f, 0x91, 0x7a, 0x6d, 0x43, 0x66, 0xc2,
- 0x03, 0x6a, 0x8b, 0xef, 0xca, 0x60, 0x9b, 0x13, 0x8d, 0x29, 0x9f, 0xda, 0x82, 0xfa, 0x01, 0xb1,
- 0xdf, 0x8f, 0x1f, 0x83, 0xc7, 0x1d, 0x63, 0x0f, 0x34, 0x9e, 0x50, 0x8c, 0x9f, 0x7a, 0xe3, 0xda,
- 0xa1, 0x14, 0x36, 0x22, 0x9d, 0xf8, 0x99, 0x26, 0x4d, 0xac, 0x41, 0x50, 0xd5, 0x05, 0x7b, 0x3a,
- 0x6f, 0xed, 0xfc, 0x75, 0x6b, 0x4f, 0x2d, 0x60, 0x8a, 0x89, 0x76, 0x7d, 0x9a, 0xf0, 0x89, 0x6e,
- 0x90, 0x7d, 0x1a, 0xda, 0xde, 0xf3, 0x34, 0x5c, 0x0d, 0x81, 0x28, 0x3c, 0xa2, 0x4f, 0xfc, 0xbb,
- 0xbb, 0xdd, 0xb7, 0xb3, 0xe3, 0xbb, 0x9f, 0x1b, 0xd9, 0x66, 0x51, 0xb7, 0x82, 0x17, 0x7f, 0xa0,
- 0xe8, 0x28, 0xd3, 0xca, 0xa6, 0xf1, 0x53, 0x2f, 0x16, 0x4e, 0xe4, 0x05, 0xbb, 0x3b, 0x0d, 0xe3,
- 0x98, 0x5d, 0x6e, 0x89, 0xd8, 0x25, 0xeb, 0xc6, 0xd8, 0xba, 0x51, 0x90, 0xa1, 0x14, 0xc6, 0xa3,
- 0x18, 0xb4, 0x8a, 0xa7, 0x18, 0x1a, 0x01, 0xac, 0xcd, 0xc0, 0x80, 0x48, 0xea, 0x72, 0xa5, 0xe3,
- 0xe3, 0x7a, 0xdc, 0x57, 0x65, 0xcd, 0xb7, 0x87, 0x39, 0xe6, 0xc3, 0x9e, 0x31, 0x7b, 0x45, 0xd8,
- 0x47, 0x5c, 0x05, 0xba, 0xe8, 0xf8, 0x82, 0x24, 0x5a, 0x85, 0x27, 0xb8, 0x15, 0x84, 0x8d, 0x78,
- 0x62, 0xb6, 0x64, 0x95, 0xac, 0x10, 0x33, 0x8f, 0x11, 0x22, 0xf2, 0xff, 0x04, 0x3e, 0x9e, 0x2a,
- 0x10, 0x58, 0xa9, 0x10, 0x57, 0x92, 0x6f, 0xcd, 0x9a, 0x96, 0x61, 0x83, 0x67, 0x08, 0x8f, 0x70,
- 0xed, 0xc6, 0xa6, 0x7c, 0x64, 0xff, 0x50, 0xfa, 0x52, 0x0b, 0xde, 0x94, 0xc8, 0x2c, 0xc4, 0xd6,
- 0x7d, 0x8f, 0x0f, 0xd5, 0x2f, 0x0d, 0x98, 0x33, 0x7c, 0x6c, 0xbe, 0x10, 0xa4, 0xe5, 0xdc, 0x99,
- 0xa4, 0x67, 0xef, 0x5f, 0xb3, 0x5b, 0xc1, 0x1c, 0xe2, 0x3c, 0x13, 0x1a, 0x48, 0xb2, 0x9c, 0xef,
- 0x5a, 0x2f, 0xfe, 0xce, 0xdd, 0x9e, 0x2a, 0xea, 0x0d, 0xb9, 0xfa, 0xf3, 0xa6, 0xef, 0xb2, 0x9d,
- 0xe8, 0x5d, 0xa4, 0x10, 0xdd, 0x6a, 0x68, 0x06, 0x3f, 0xc6, 0x16, 0x94, 0x17, 0x9f, 0xcb, 0x4b,
- 0x08, 0xc4, 0x86, 0xb2, 0x07, 0x13, 0xcd, 0xdb, 0xb2, 0x57, 0xd5, 0x6b, 0xfe, 0x82, 0x7d, 0x82,
- 0x0d, 0x1f, 0x6d, 0xc9, 0x67, 0xb2, 0xd2, 0xa1, 0x67, 0x91, 0x4f, 0x38, 0xed, 0xf9, 0x49, 0x1f,
- 0x2c, 0x02, 0x35, 0xf5, 0x81, 0x65, 0xec, 0xc3, 0xbc, 0x6a, 0xb6, 0x31, 0x3c, 0x7e, 0x1a, 0xd4,
- 0x8e, 0x27, 0xf9, 0x62, 0xf9, 0x42, 0x11, 0xb5, 0x1b, 0x45, 0x9b, 0xac, 0xb4, 0x74, 0x3c, 0x6e,
- 0x68, 0x32, 0x30, 0x75, 0xbe, 0x6d, 0xac, 0x0d, 0xa8, 0xa0, 0x7d, 0x47, 0xa6, 0xef, 0x4e, 0x43,
- 0x6b, 0x9a, 0x30, 0x97, 0x8a, 0x8b, 0x82, 0xa3, 0x95, 0x15, 0x36, 0x2c, 0xf7, 0xd6, 0xa3, 0x7f,
- 0x73, 0x13, 0x11, 0x99, 0xa5, 0xf3, 0x03, 0xdc, 0xbc, 0xc9, 0xfb, 0x10, 0xc2, 0x3d, 0xee, 0xb9,
- 0x78, 0xff, 0xc8, 0xf3, 0x0d, 0x38, 0x9f, 0x74, 0xce, 0xec, 0xb7, 0xae, 0x63, 0xe3, 0x34, 0x24,
- 0xb7, 0x83, 0xf1, 0x06, 0x01, 0x1f, 0x66, 0x6b, 0xbf, 0x2d, 0xab, 0xc8, 0xea, 0x10, 0x57, 0xa1,
- 0x7c, 0xf2, 0x4a, 0x3f, 0x57, 0xca, 0x13, 0x86, 0xbf, 0xba, 0x27, 0xe5, 0x46, 0x62, 0x81, 0xc8,
- 0x04, 0x1e, 0x18, 0x20, 0xb3, 0xd5, 0xc3, 0x99, 0xcd, 0x4d, 0x22, 0x2f, 0x29, 0xf0, 0xb9, 0x94,
- 0x86, 0x5a, 0xe6, 0xe2, 0x16, 0x86, 0x32, 0x61, 0xb0, 0xcd, 0xca, 0xaf, 0x07, 0xec, 0xd0, 0xbc,
- 0xaf, 0xb8, 0x3c, 0xf0, 0x51, 0xc1, 0x6c, 0x7a, 0x63, 0x83, 0x6b, 0x3a, 0xff, 0x47, 0x95, 0x51,
- 0x10, 0x99, 0x52, 0x5f, 0x35, 0x5e, 0x46, 0x84, 0xbd, 0x34, 0xec, 0x12, 0x88, 0xc9, 0xdc, 0xc2,
- 0xd1, 0x1c, 0x82, 0x6d, 0xf1, 0xdf, 0x37, 0xe6, 0xf0, 0x8f, 0x6c, 0xe8, 0x81, 0x7d, 0xbd, 0xc3,
- 0x20, 0xb9, 0xa2, 0x74, 0xc6, 0x45, 0xc6, 0x7d, 0xf2, 0x99, 0xfe, 0xf9, 0x28, 0x7f, 0x09, 0xee,
- 0xac, 0x67, 0x68, 0x72, 0xa1, 0x26, 0xb1, 0xd3, 0x92, 0x2c, 0x4c, 0x2a, 0x0e, 0xc9, 0xb6, 0xd4,
- 0xfb, 0x59, 0x61, 0x63, 0xd1, 0xc4, 0x17, 0x08, 0x8d, 0x94, 0xbc, 0x3d, 0xbe, 0x5e, 0xae, 0x29,
- 0x51, 0xff, 0xa7, 0x65, 0x9d, 0xf6, 0xae, 0x35, 0xed, 0x6b, 0x05, 0x55, 0x93, 0x3f, 0x3e, 0xd6,
- 0x25, 0x9b, 0xd9, 0x3e, 0xf8, 0x6f, 0x60, 0x88, 0x0c, 0x4e, 0x35, 0x7b, 0x5c, 0x67, 0x7d, 0x93,
- 0xa6, 0x95, 0x1a, 0x42, 0xe1, 0xe1, 0xef, 0x91, 0x14, 0xd7, 0xb7, 0xb7, 0x0c, 0xa4, 0x2d, 0xda,
- 0x6a, 0xc1, 0x77, 0x1e, 0x25, 0xc1, 0xa5, 0x78, 0x4c, 0xa8, 0x6f, 0xd8, 0xde, 0x04, 0x1c, 0x09,
- 0xdf, 0x49, 0xf1, 0x79, 0x6a, 0x58, 0x2b, 0x45, 0x72, 0x31, 0x30, 0x7f, 0xbc, 0x67, 0xe5, 0xe7,
- 0xc5, 0xcd, 0xfe, 0xc0, 0xb0, 0x21, 0x50, 0x8e, 0x4f, 0xc5, 0xf8, 0x21, 0xf7, 0x34, 0x90, 0xbc,
- 0xc8, 0x7f, 0x14, 0xf1, 0x2e, 0x5c, 0xd1, 0x7b, 0x18, 0x18, 0x5b, 0x4a, 0x6b, 0x68, 0x02, 0x12,
- 0x17, 0x91, 0x4a, 0x30, 0x85, 0x18, 0x99, 0xa9, 0xb5, 0x16, 0x67, 0xe7, 0xed, 0x56, 0xd1, 0xd1,
- 0x23, 0x9d, 0xdf, 0xda, 0x11, 0xc5, 0x0a, 0xfe, 0xe5, 0x8a, 0xb6, 0xe0, 0xfb, 0x66, 0xab, 0x5c,
- 0xf5, 0x90, 0xdc, 0xd6, 0x45, 0x7d, 0x01, 0xd1, 0x83, 0xf5, 0xa9, 0xf0, 0xcd, 0xb2, 0x9c, 0x14,
- 0xff, 0x66, 0xf1, 0x0c, 0xd4, 0x28, 0xa0, 0x7b, 0x34, 0xe3, 0xd6, 0x00, 0x91, 0xf2, 0xac, 0xa7,
- 0x4e, 0x1f, 0xf3, 0xac, 0xa9, 0x6e, 0x2a, 0xa3, 0xec, 0x9b, 0x44, 0x8c, 0x74, 0x8d, 0xf8, 0x58,
- 0x13, 0x1c, 0xd4, 0x96, 0xaf, 0x9b, 0xf5, 0xf0, 0xd2, 0xf5, 0x57, 0xac, 0x0b, 0x64, 0x55, 0xa1,
- 0x86, 0x0e, 0x5a, 0xd0, 0x3e, 0x62, 0x26, 0xb5, 0x9e, 0x17, 0xf5, 0x1f, 0x88, 0xc1, 0x02, 0xe3,
- 0x4a, 0x38, 0xde, 0x70, 0x32, 0x16, 0x6f, 0x88, 0x5d, 0x1e, 0xf4, 0x29, 0xee, 0x19, 0x41, 0x21,
- 0xf5, 0x71, 0x84, 0xac, 0x37, 0x89, 0x14, 0x1f, 0x17, 0x98, 0x90, 0xb1, 0x83, 0x73, 0x24, 0x99,
- 0xc1, 0x31, 0xb1, 0x3f, 0xf3, 0xa3, 0x9a, 0x07, 0xae, 0xf1, 0xbf, 0xe8, 0x8c, 0xd7, 0x8c, 0x2e,
- 0xba, 0x35, 0xdf, 0xc5, 0xeb, 0x07, 0x01, 0x3c, 0x76, 0x21, 0x64, 0x81, 0xbd, 0xfb, 0x62, 0x33,
- 0x22, 0xe2, 0x0f, 0x05, 0x7e, 0x15, 0x04, 0x17, 0x67, 0xe4, 0x26, 0x32, 0x52, 0x07, 0x28, 0xa6,
- 0x8e, 0x88, 0x94, 0x23, 0xde, 0x54, 0x54, 0x12, 0xb5, 0x3e, 0xfd, 0x8d, 0xd4, 0x7a, 0xde, 0x58,
- 0xa1, 0xb2, 0x6e, 0x08, 0xd0, 0x6d, 0xdc, 0x21, 0x1e, 0xda, 0x14, 0xa0, 0xa2, 0xf7, 0x17, 0x01,
- 0xa5, 0xe0, 0xdf, 0xd7, 0x87, 0x1f, 0x59, 0x5d, 0xdb, 0x43, 0x70, 0xf5, 0xba, 0xb3, 0xb7, 0x32,
- 0x62, 0x75, 0xda, 0x15, 0xb2, 0x03, 0xda, 0xc7, 0x32, 0x1f, 0x8d, 0x61, 0x11, 0xbd, 0x30,
-}
-
-func TestAnotherMalformedDNS(t *testing.T) {
- p := gopacket.NewPacket(testAnotherMalformedDNS, LinkTypeEthernet, testDecodeOptions)
- if errLayer := p.ErrorLayer(); errLayer == nil {
- t.Error("No error layer on invalid DNS name")
- } else if err := errLayer.Error(); !strings.Contains(err.Error(), "offset too high") {
- t.Errorf("unexpected error message: %v", err)
- }
-}
-
-// testMalformedDNSAgain is the packet:
-// 12:14:52.702061 IP 10.77.0.4.53 > 10.1.0.41.61610: 12529 updateDA [b2&3=0x5cad] [38274a] [61303q] [1718n] [14913au][|domain]
-// 0x0000: 0055 22af c637 0022 55ac deac 0800 4500 .U"..7."U.....E.
-// 0x0010: 0091 2dff 0000 7811 ffe2 0a4d 0004 0a01 ..-...x....M....
-// 0x0020: 0029 0035 f0aa 007d 5b53 30f1 5cad ef77 .).5...}[S0.\..w
-// 0x0030: 9582 06b6 3a41 357a 8cef cdc0 a732 b800 ....:A5z.....2..
-// 0x0040: 466e 1c30 2e75 95ac c03d 1ed4 8635 2d09 Fn.0.u...=...5-.
-// 0x0050: 2fee 3a82 b4f0 427e 2b6b f870 cc7f c9a1 /.:...B~+k.p....
-// 0x0060: e6f1 a761 97ec 2ff7 d248 4d95 321c 6e4e ...a../..HM.2.nN
-// 0x0070: 57fa 6d3d 9ec0 fe3a 6f1e e634 4396 b494 W.m=...:o..4C...
-// 0x0080: 8b7a a929 d7e1 da7c c346 ca77 4890 6bf3 .z.)...|.F.wH.k.
-// 0x0090: 5ecb 7e97 c49d 3564 984f bf7c 8ac1 dd ^.~...5d.O.|...
-var testMalformedDNSAgain = []byte{
- 0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x91, 0x2d, 0xff, 0x00, 0x00, 0x78, 0x11, 0xff, 0xe2, 0x0a, 0x4d, 0x00, 0x04, 0x0a, 0x01,
- 0x00, 0x29, 0x00, 0x35, 0xf0, 0xaa, 0x00, 0x7d, 0x5b, 0x53, 0x30, 0xf1, 0x5c, 0xad, 0xef, 0x77,
- 0x95, 0x82, 0x06, 0xb6, 0x3a, 0x41, 0x35, 0x7a, 0x8c, 0xef, 0xcd, 0xc0, 0xa7, 0x32, 0xb8, 0x00,
- 0x46, 0x6e, 0x1c, 0x30, 0x2e, 0x75, 0x95, 0xac, 0xc0, 0x3d, 0x1e, 0xd4, 0x86, 0x35, 0x2d, 0x09,
- 0x2f, 0xee, 0x3a, 0x82, 0xb4, 0xf0, 0x42, 0x7e, 0x2b, 0x6b, 0xf8, 0x70, 0xcc, 0x7f, 0xc9, 0xa1,
- 0xe6, 0xf1, 0xa7, 0x61, 0x97, 0xec, 0x2f, 0xf7, 0xd2, 0x48, 0x4d, 0x95, 0x32, 0x1c, 0x6e, 0x4e,
- 0x57, 0xfa, 0x6d, 0x3d, 0x9e, 0xc0, 0xfe, 0x3a, 0x6f, 0x1e, 0xe6, 0x34, 0x43, 0x96, 0xb4, 0x94,
- 0x8b, 0x7a, 0xa9, 0x29, 0xd7, 0xe1, 0xda, 0x7c, 0xc3, 0x46, 0xca, 0x77, 0x48, 0x90, 0x6b, 0xf3,
- 0x5e, 0xcb, 0x7e, 0x97, 0xc4, 0x9d, 0x35, 0x64, 0x98, 0x4f, 0xbf, 0x7c, 0x8a, 0xc1, 0xdd,
-}
-
-func TestMalformedDNSAgain(t *testing.T) {
- p := gopacket.NewPacket(testMalformedDNSAgain, LinkTypeEthernet, testDecodeOptions)
- if errLayer := p.ErrorLayer(); errLayer == nil {
- t.Error("No error layer on invalid DNS name")
- } else if err := errLayer.Error(); !strings.Contains(err.Error(), "walked out of range") {
- t.Errorf("unexpected error message: %v", err)
- }
-}
-
-// testMalformedDNSOhGodMakeItStop is the packet:
-// 15:08:24.430906 IP 10.77.0.19.53 > 10.1.0.19.50635: 12397 zoneInit% [b2&3=0x7232] [47729a] [46283q] [60247n] [61718au][|domain]
-// 0x0000: 0055 22af c637 0022 55ac deac 0800 4500 .U"..7."U.....E.
-// 0x0010: 0079 c51c 4000 3511 6be4 0a4d 0013 0a01 .y..@.5.k..M....
-// 0x0020: 0013 0035 c5cb 0065 ef45 306d 7232 b4cb ...5...e.E0mr2..
-// 0x0030: ba71 eb57 f116 3994 e000 4626 0534 66cc .q.W..9...F&.4f.
-// 0x0040: 7b32 24f2 eece bca7 20e2 9a2a e1ce e737 {2$........*...7
-// 0x0050: ac39 5fae 72ec c3ec 284f ca4a 171f 466d .9_.r...(O.J..Fm
-// 0x0060: f6c6 84d7 e795 310f 26df 9b59 6db9 21cf ......1.&..Ym.!.
-// 0x0070: 15cb 30a3 c4cf df23 805a ed1a 0584 4fc3 ..0....#.Z....O.
-// 0x0080: 7fa3 3cb4 e04f e9 ..<..O.
-var testMalformedDNSOhGodMakeItStop = []byte{
- 0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x79, 0xc5, 0x1c, 0x40, 0x00, 0x35, 0x11, 0x6b, 0xe4, 0x0a, 0x4d, 0x00, 0x13, 0x0a, 0x01,
- 0x00, 0x13, 0x00, 0x35, 0xc5, 0xcb, 0x00, 0x65, 0xef, 0x45, 0x30, 0x6d, 0x72, 0x32, 0xb4, 0xcb,
- 0xba, 0x71, 0xeb, 0x57, 0xf1, 0x16, 0x39, 0x94, 0xe0, 0x00, 0x46, 0x26, 0x05, 0x34, 0x66, 0xcc,
- 0x7b, 0x32, 0x24, 0xf2, 0xee, 0xce, 0xbc, 0xa7, 0x20, 0xe2, 0x9a, 0x2a, 0xe1, 0xce, 0xe7, 0x37,
- 0xac, 0x39, 0x5f, 0xae, 0x72, 0xec, 0xc3, 0xec, 0x28, 0x4f, 0xca, 0x4a, 0x17, 0x1f, 0x46, 0x6d,
- 0xf6, 0xc6, 0x84, 0xd7, 0xe7, 0x95, 0x31, 0x0f, 0x26, 0xdf, 0x9b, 0x59, 0x6d, 0xb9, 0x21, 0xcf,
- 0x15, 0xcb, 0x30, 0xa3, 0xc4, 0xcf, 0xdf, 0x23, 0x80, 0x5a, 0xed, 0x1a, 0x05, 0x84, 0x4f, 0xc3,
- 0x7f, 0xa3, 0x3c, 0xb4, 0xe0, 0x4f, 0xe9,
-}
-
-func TestMalformedDNSOhGodMakeItStop(t *testing.T) {
- p := gopacket.NewPacket(testMalformedDNSOhGodMakeItStop, LinkTypeEthernet, testDecodeOptions)
- if errLayer := p.ErrorLayer(); errLayer == nil {
- t.Error("No error layer on invalid DNS name")
- } else if err := errLayer.Error(); !strings.Contains(err.Error(), "offset pointer too high") {
- t.Errorf("unexpected error message: %v", err)
- }
-}
-
-// testPacketDNSPanic7 is the packet:
-// 07:56:25.174747 IP 10.77.0.11.53 > 10.1.0.67.55777: 41808*-| 3/7/0 TXT "google-site-verification=DC2uC-T8kD33lINhNzfo0bNBrw-vrCXs5BPF5BXY56g", TXT "v=spf1 include:spf-a.outlook.com include:spf-b.outlook.com ip4:157.55.9.128/25 include:spf.protection.outlook.com include:spf-a.hotmail.com include:_spf-ssg-b.microsoft.com include:_spf-ssg-c.microsoft.com ~all", TXT "google-site-verification=0iLWhIMhXEkeWwWfFU4ursTn-_OvoOjaA0Lr7Pg1sEM" (512)
-// 0x0000: 0055 22af c637 0022 55ac deac 0800 4500 .U"..7."U.....E.
-// 0x0010: 021c b5ca 4000 fa11 b46a 0a4d 000b 0a01 ....@....j.M....
-// 0x0020: 0043 0035 d9e1 0208 afd6 a350 8600 0001 .C.5.......P....
-// 0x0030: 0003 0007 0000 076f 7574 6c6f 6f6b 0363 .......outlook.c
-// 0x0040: 6f6d 0000 1000 01c0 0c00 1000 0100 0001 om..............
-// 0x0050: 2c00 4544 676f 6f67 6c65 2d73 6974 652d ,.EDgoogle-site-
-// 0x0060: 7665 7269 6669 6361 7469 6f6e 3d44 4332 verification=DC2
-// 0x0070: 7543 2d54 386b 4433 336c 494e 684e 7a66 uC-T8kD33lINhNzf
-// 0x0080: 6f30 624e 4272 772d 7672 4358 7335 4250 o0bNBrw-vrCXs5BP
-// 0x0090: 4635 4258 5935 3667 c00c 0010 0001 0000 F5BXY56g........
-// 0x00a0: 012c 00d3 d276 3d73 7066 3120 696e 636c .,...v=spf1.incl
-// 0x00b0: 7564 653a 7370 662d 612e 6f75 746c 6f6f ude:spf-a.outloo
-// 0x00c0: 6b2e 636f 6d20 696e 636c 7564 653a 7370 k.com.include:sp
-// 0x00d0: 662d 622e 6f75 746c 6f6f 6b2e 636f 6d20 f-b.outlook.com.
-// 0x00e0: 6970 343a 3135 372e 3535 2e39 2e31 3238 ip4:157.55.9.128
-// 0x00f0: 2f32 3520 696e 636c 7564 653a 7370 662e /25.include:spf.
-// 0x0100: 7072 6f74 6563 7469 6f6e 2e6f 7574 6c6f protection.outlo
-// 0x0110: 6f6b 2e63 6f6d 2069 6e63 6c75 6465 3a73 ok.com.include:s
-// 0x0120: 7066 2d61 2e68 6f74 6d61 696c 2e63 6f6d pf-a.hotmail.com
-// 0x0130: 2069 6e63 6c75 6465 3a5f 7370 662d 7373 .include:_spf-ss
-// 0x0140: 672d 622e 6d69 6372 6f73 6f66 742e 636f g-b.microsoft.co
-// 0x0150: 6d20 696e 636c 7564 653a 5f73 7066 2d73 m.include:_spf-s
-// 0x0160: 7367 2d63 2e6d 6963 726f 736f 6674 2e63 sg-c.microsoft.c
-// 0x0170: 6f6d 207e 616c 6cc0 0c00 1000 0100 0001 om.~all.........
-// 0x0180: 2c00 4544 676f 6f67 6c65 2d73 6974 652d ,.EDgoogle-site-
-// 0x0190: 7665 7269 6669 6361 7469 6f6e 3d30 694c verification=0iL
-// 0x01a0: 5768 494d 6858 456b 6557 7757 6646 5534 WhIMhXEkeWwWfFU4
-// 0x01b0: 7572 7354 6e2d 5f4f 766f 4f6a 6141 304c ursTn-_OvoOjaA0L
-// 0x01c0: 7237 5067 3173 454d c00c 0002 0001 0002 r7Pg1sEM........
-// 0x01d0: a300 000e 036e 7332 046d 7366 7403 6e65 .....ns2.msft.ne
-// 0x01e0: 7400 c00c 0002 0001 0002 a300 0006 036e t..............n
-// 0x01f0: 7334 c1ae c00c 0002 0001 0002 a300 0006 s4..............
-// 0x0200: 036e 7331 c1ae c00c 0002 0001 0002 a300 .ns1............
-// 0x0210: 0006 036e 7333 c1ae c00c 0002 0001 0002 ...ns3..........
-// 0x0220: a300 0015 046e 7331 610d .....ns1a.
-var testPacketDNSPanic7 = []byte{
- 0x00, 0x55, 0x22, 0xaf, 0xc6, 0x37, 0x00, 0x22, 0x55, 0xac, 0xde, 0xac, 0x08, 0x00, 0x45, 0x00,
- 0x02, 0x1c, 0xb5, 0xca, 0x40, 0x00, 0xfa, 0x11, 0xb4, 0x6a, 0x0a, 0x4d, 0x00, 0x0b, 0x0a, 0x01,
- 0x00, 0x43, 0x00, 0x35, 0xd9, 0xe1, 0x02, 0x08, 0xaf, 0xd6, 0xa3, 0x50, 0x86, 0x00, 0x00, 0x01,
- 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x07, 0x6f, 0x75, 0x74, 0x6c, 0x6f, 0x6f, 0x6b, 0x03, 0x63,
- 0x6f, 0x6d, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x0c, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x01,
- 0x2c, 0x00, 0x45, 0x44, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2d, 0x73, 0x69, 0x74, 0x65, 0x2d,
- 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x44, 0x43, 0x32,
- 0x75, 0x43, 0x2d, 0x54, 0x38, 0x6b, 0x44, 0x33, 0x33, 0x6c, 0x49, 0x4e, 0x68, 0x4e, 0x7a, 0x66,
- 0x6f, 0x30, 0x62, 0x4e, 0x42, 0x72, 0x77, 0x2d, 0x76, 0x72, 0x43, 0x58, 0x73, 0x35, 0x42, 0x50,
- 0x46, 0x35, 0x42, 0x58, 0x59, 0x35, 0x36, 0x67, 0xc0, 0x0c, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00,
- 0x01, 0x2c, 0x00, 0xd3, 0xd2, 0x76, 0x3d, 0x73, 0x70, 0x66, 0x31, 0x20, 0x69, 0x6e, 0x63, 0x6c,
- 0x75, 0x64, 0x65, 0x3a, 0x73, 0x70, 0x66, 0x2d, 0x61, 0x2e, 0x6f, 0x75, 0x74, 0x6c, 0x6f, 0x6f,
- 0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x73, 0x70,
- 0x66, 0x2d, 0x62, 0x2e, 0x6f, 0x75, 0x74, 0x6c, 0x6f, 0x6f, 0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x20,
- 0x69, 0x70, 0x34, 0x3a, 0x31, 0x35, 0x37, 0x2e, 0x35, 0x35, 0x2e, 0x39, 0x2e, 0x31, 0x32, 0x38,
- 0x2f, 0x32, 0x35, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x73, 0x70, 0x66, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6f, 0x75, 0x74, 0x6c, 0x6f,
- 0x6f, 0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x73,
- 0x70, 0x66, 0x2d, 0x61, 0x2e, 0x68, 0x6f, 0x74, 0x6d, 0x61, 0x69, 0x6c, 0x2e, 0x63, 0x6f, 0x6d,
- 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x5f, 0x73, 0x70, 0x66, 0x2d, 0x73, 0x73,
- 0x67, 0x2d, 0x62, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x5f, 0x73, 0x70, 0x66, 0x2d, 0x73,
- 0x73, 0x67, 0x2d, 0x63, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x20, 0x7e, 0x61, 0x6c, 0x6c, 0xc0, 0x0c, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x01,
- 0x2c, 0x00, 0x45, 0x44, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2d, 0x73, 0x69, 0x74, 0x65, 0x2d,
- 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x30, 0x69, 0x4c,
- 0x57, 0x68, 0x49, 0x4d, 0x68, 0x58, 0x45, 0x6b, 0x65, 0x57, 0x77, 0x57, 0x66, 0x46, 0x55, 0x34,
- 0x75, 0x72, 0x73, 0x54, 0x6e, 0x2d, 0x5f, 0x4f, 0x76, 0x6f, 0x4f, 0x6a, 0x61, 0x41, 0x30, 0x4c,
- 0x72, 0x37, 0x50, 0x67, 0x31, 0x73, 0x45, 0x4d, 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02,
- 0xa3, 0x00, 0x00, 0x0e, 0x03, 0x6e, 0x73, 0x32, 0x04, 0x6d, 0x73, 0x66, 0x74, 0x03, 0x6e, 0x65,
- 0x74, 0x00, 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, 0x00, 0x06, 0x03, 0x6e,
- 0x73, 0x34, 0xc1, 0xae, 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, 0x00, 0x06,
- 0x03, 0x6e, 0x73, 0x31, 0xc1, 0xae, 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00,
- 0x00, 0x06, 0x03, 0x6e, 0x73, 0x33, 0xc1, 0xae, 0xc0, 0x0c, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02,
- 0xa3, 0x00, 0x00, 0x15, 0x04, 0x6e, 0x73, 0x31, 0x61, 0x0d,
-}
-
-func TestPacketDNSPanic7(t *testing.T) {
- p := gopacket.NewPacket(testPacketDNSPanic7, LinkTypeEthernet, testDecodeOptions)
- if errLayer := p.ErrorLayer(); errLayer == nil {
- t.Error("No error layer on invalid DNS name")
- } else if err := errLayer.Error(); !strings.Contains(err.Error(), "resource record length exceeds data") {
- t.Errorf("unexpected error message: %v", err)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/dot11_test.go b/vendor/github.com/google/gopacket/layers/dot11_test.go
deleted file mode 100644
index b0299fc..0000000
--- a/vendor/github.com/google/gopacket/layers/dot11_test.go
+++ /dev/null
@@ -1,495 +0,0 @@
-// Copyright 2014, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "bytes"
- "net"
- "reflect"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-// Generator: python layers/test_creator.py --layerType=LayerTypeRadioTap --linkType=LinkTypeIEEE80211Radio --name=Dot11%s ~/Downloads/mesh.pcap
-// http://wiki.wireshark.org/SampleCaptures#Sample_Captures
-
-// testPacketDot11CtrlCTS is the packet:
-// 09:28:41.830560 20604983us tsft short preamble 24.0 Mb/s 5240 MHz 11a -79dB signal -92dB noise antenna 1 Clear-To-Send RA:d8:a2:5e:97:61:c1
-// 0x0000: 0000 1900 6f08 0000 3768 3a01 0000 0000 ....o...7h:.....
-// 0x0010: 1230 7814 4001 b1a4 01c4 0094 00d8 a25e .0x.@..........^
-// 0x0020: 9761 c136 5095 8e .a.6P..
-
-var testPacketDot11CtrlCTS = []byte{
- 0x00, 0x00, 0x19, 0x00, 0x6f, 0x08, 0x00, 0x00, 0x37, 0x68, 0x3a, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x12, 0x30, 0x78, 0x14, 0x40, 0x01, 0xb1, 0xa4, 0x01, 0xc4, 0x00, 0x94, 0x00, 0xd8, 0xa2, 0x5e,
- 0x97, 0x61, 0xc1, 0x36, 0x50, 0x95, 0x8e,
-}
-
-func TestPacketDot11CtrlCTS(t *testing.T) {
- p := gopacket.NewPacket(testPacketDot11CtrlCTS, LinkTypeIEEE80211Radio, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11}, t)
-
- if got, ok := p.Layer(LayerTypeRadioTap).(*RadioTap); ok {
- want := &RadioTap{
- BaseLayer: BaseLayer{
- Contents: []uint8{0x0, 0x0, 0x19, 0x0, 0x6f, 0x8, 0x0, 0x0, 0x37, 0x68, 0x3a, 0x1, 0x0, 0x0, 0x0, 0x0, 0x12, 0x30, 0x78, 0x14, 0x40, 0x1, 0xb1, 0xa4, 0x1},
- Payload: []uint8{0xc4, 0x0, 0x94, 0x0, 0xd8, 0xa2, 0x5e, 0x97, 0x61, 0xc1, 0x36, 0x50, 0x95, 0x8e},
- },
- Version: 0x0,
- Length: 0x19,
- Present: 0x86f,
- TSFT: 0x13a6837,
- Flags: 0x12,
- Rate: 0x30,
- ChannelFrequency: 0x1478,
- ChannelFlags: 0x140,
- FHSS: 0x0,
- DBMAntennaSignal: -79,
- DBMAntennaNoise: -92,
- LockQuality: 0x0,
- TxAttenuation: 0x0,
- DBTxAttenuation: 0x0,
- DBMTxPower: 0,
- Antenna: 1,
- DBAntennaSignal: 0x0,
- DBAntennaNoise: 0x0,
- }
-
- if !reflect.DeepEqual(got, want) {
- t.Errorf("RadioTap packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- }
-
- if got, ok := p.Layer(LayerTypeDot11).(*Dot11); ok {
- if !got.ChecksumValid() {
- t.Errorf("Dot11 packet processing failed:\nchecksum failed. got :\n%#v\n\n", got)
- }
-
- want := &Dot11{
- BaseLayer: BaseLayer{
- Contents: []uint8{0xc4, 0x0, 0x94, 0x0, 0xd8, 0xa2, 0x5e, 0x97, 0x61, 0xc1},
- Payload: []uint8{},
- },
- Type: Dot11TypeCtrlCTS,
- Proto: 0x0,
- Flags: 0x0,
- DurationID: 0x94,
- Address1: net.HardwareAddr{0xd8, 0xa2, 0x5e, 0x97, 0x61, 0xc1}, // check
- Address2: net.HardwareAddr(nil),
- Address3: net.HardwareAddr(nil),
- Address4: net.HardwareAddr(nil),
- Checksum: 0x8e955036,
- }
-
- if !reflect.DeepEqual(got, want) {
- t.Errorf("Dot11 packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- }
-}
-
-func BenchmarkDecodePacketDot11CtrlCTS(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketDot11CtrlCTS, LinkTypeIEEE80211Radio, gopacket.NoCopy)
- }
-}
-
-// testPacketDot11MgmtBeacon is the packet:
-// 15:44:56.531833 6.0 Mb/s 2412 MHz 11g -81dB signal antenna 5 Beacon (Wi2) [6.0* 9.0 12.0* 18.0 24.0* 36.0 48.0 54.0 Mbit] ESS CH: 1
-// 0x0000: 0000 1200 2e48 0000 100c 6c09 c000 af05 .....H....l.....
-// 0x0010: 0000 8000 0000 ffff ffff ffff c08a de01 ................
-// 0x0020: 11b8 c08a de01 11b8 f097 80f1 30bc 1300 ............0...
-// 0x0030: 0000 6400 2104 0003 5769 3201 088c 1298 ..d.!...Wi2.....
-// 0x0040: 24b0 4860 6c03 0101 0504 0001 0000 2a01 $.H`l.........*.
-// 0x0050: 00dd 1800 50f2 0201 0181 0007 a400 0023 ....P..........#
-// 0x0060: a400 0042 435e 0062 322f 00dd 1e00 904c ...BC^.b2/.....L
-// 0x0070: 338c 011b ffff 0000 0000 0000 0000 0000 3...............
-// 0x0080: 1000 0000 0000 0000 0000 002d 1a8c 011b ...........-....
-// 0x0090: ffff 0000 0000 0000 0000 0000 1000 0000 ................
-// 0x00a0: 0000 0000 0000 00dd 1a00 904c 3401 0000 ...........L4...
-// 0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x00c0: 0000 003d 1601 0000 0000 0000 0000 0000 ...=............
-// 0x00d0: 0000 0000 0000 0000 0000 007f 0400 0000 ................
-// 0x00e0: 00dd 0800 1392 0100 0185 0094 0b90 15 ...............
-var testPacketDot11MgmtBeacon = []byte{
- 0x00, 0x00, 0x12, 0x00, 0x2e, 0x48, 0x00, 0x00, 0x10, 0x0c, 0x6c, 0x09, 0xc0, 0x00, 0xaf, 0x05,
- 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x8a, 0xde, 0x01,
- 0x11, 0xb8, 0xc0, 0x8a, 0xde, 0x01, 0x11, 0xb8, 0xf0, 0x97, 0x80, 0xf1, 0x30, 0xbc, 0x13, 0x00,
- 0x00, 0x00, 0x64, 0x00, 0x21, 0x04, 0x00, 0x03, 0x57, 0x69, 0x32, 0x01, 0x08, 0x8c, 0x12, 0x98,
- 0x24, 0xb0, 0x48, 0x60, 0x6c, 0x03, 0x01, 0x01, 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, 0x2a, 0x01,
- 0x00, 0xdd, 0x18, 0x00, 0x50, 0xf2, 0x02, 0x01, 0x01, 0x81, 0x00, 0x07, 0xa4, 0x00, 0x00, 0x23,
- 0xa4, 0x00, 0x00, 0x42, 0x43, 0x5e, 0x00, 0x62, 0x32, 0x2f, 0x00, 0xdd, 0x1e, 0x00, 0x90, 0x4c,
- 0x33, 0x8c, 0x01, 0x1b, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x1a, 0x8c, 0x01, 0x1b,
- 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0x1a, 0x00, 0x90, 0x4c, 0x34, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x3d, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x04, 0x00, 0x00, 0x00,
- 0x00, 0xdd, 0x08, 0x00, 0x13, 0x92, 0x01, 0x00, 0x01, 0x85, 0x00, 0x94, 0x0b, 0x90, 0x15,
-}
-
-func TestPacketDot11MgmtBeacon(t *testing.T) {
- p := gopacket.NewPacket(testPacketDot11MgmtBeacon, LinkTypeIEEE80211Radio, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- expectedLayers := []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11MgmtBeacon}
- for i := 0; i < 12; i++ {
- expectedLayers = append(expectedLayers, LayerTypeDot11InformationElement)
- }
- checkLayers(p, expectedLayers, t)
-
- if p.Layer(LayerTypeDot11).(*Dot11).SequenceNumber != 2431 {
- t.Error("dot11 invalid sequence number")
- }
- if p.Layer(LayerTypeDot11).(*Dot11).FragmentNumber != 0 {
- t.Error("dot11 invalid fragment number")
- }
- if _, ok := p.Layer(LayerTypeDot11MgmtBeacon).(*Dot11MgmtBeacon); !ok {
- t.Errorf("dot11 management beacon frame was expected")
- }
-}
-
-func BenchmarkDecodePacketDot11MgmtBeacon(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketDot11MgmtBeacon, LinkTypeIEEE80211Radio, gopacket.NoCopy)
- }
-}
-
-// testPacketDot11DataQOSData is the packet:
-// 06:14:27.838634 638790765us tsft short preamble 54.0 Mb/s -51dB signal -96dB noise antenna 2 5180 MHz 11a CF +QoS ARP, Request who-has 140.180.51.68 tell 169.254.247.0, length 28
-// 0x0000: 0000 2000 6708 0400 6d2c 1326 0000 0000 ....g...m,.&....
-// 0x0010: 226c cda0 0200 0000 4001 0000 3c14 2411 "l......@...<.$.
-// 0x0020: 8801 2c00 0603 7f07 a016 0019 e3d3 5352 ..,...........SR
-// 0x0030: ffff ffff ffff 5064 0000 50aa aaaa 0300 ......Pd..P.....
-// 0x0040: 0000 0806 0001 0800 0604 0001 0019 e3d3 ................
-// 0x0050: 5352 a9fe f700 0000 0000 0000 8cb4 3344 SR............3D
-var testPacketDot11DataQOSData = []byte{
- 0x00, 0x00, 0x20, 0x00, 0x67, 0x08, 0x04, 0x00, 0x6d, 0x2c, 0x13, 0x26, 0x00, 0x00, 0x00, 0x00,
- 0x22, 0x6c, 0xcd, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x3c, 0x14, 0x24, 0x11,
- 0x88, 0x01, 0x2c, 0x00, 0x06, 0x03, 0x7f, 0x07, 0xa0, 0x16, 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x50, 0x64, 0x00, 0x00, 0x50, 0xaa, 0xaa, 0xaa, 0x03, 0x00,
- 0x00, 0x00, 0x08, 0x06, 0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x01, 0x00, 0x19, 0xe3, 0xd3,
- 0x53, 0x52, 0xa9, 0xfe, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xb4, 0x33, 0x44,
-}
-
-func TestPacketDot11DataQOSData(t *testing.T) {
- p := gopacket.NewPacket(testPacketDot11DataQOSData, LinkTypeIEEE80211Radio, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11DataQOSData, LayerTypeDot11Data, LayerTypeLLC, LayerTypeSNAP, LayerTypeARP}, t)
-
- if got, ok := p.Layer(LayerTypeARP).(*ARP); ok {
- want := &ARP{BaseLayer: BaseLayer{
- Contents: []uint8{0x0, 0x1, 0x8, 0x0, 0x6, 0x4, 0x0, 0x1, 0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0xa9, 0xfe, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xb4, 0x33, 0x44},
- Payload: []uint8{},
- },
- AddrType: 0x1,
- Protocol: 0x800,
- HwAddressSize: 0x6,
- ProtAddressSize: 0x4,
- Operation: 0x1,
- SourceHwAddress: []uint8{0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52},
- SourceProtAddress: []uint8{0xa9, 0xfe, 0xf7, 0x0},
- DstHwAddress: []uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
- DstProtAddress: []uint8{0x8c, 0xb4, 0x33, 0x44},
- }
-
- if !reflect.DeepEqual(got, want) {
- t.Errorf("ARP packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- }
-}
-func BenchmarkDecodePacketDot11DataQOSData(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketDot11DataQOSData, LinkTypeIEEE80211Radio, gopacket.NoCopy)
- }
-}
-
-// testPacketDot11MgmtAction is the packet:
-// 15:54:43.236460 1.0 Mb/s 2412 MHz 11b -67dB signal antenna 5 Action (8e:3a:e3:44:ac:c6): Spectrum Management Act#4
-// 0x0000: 0000 1200 2e48 0000 1002 6c09 a000 bd05 .....H....l.....
-// 0x0010: 0000 d000 0000 ffff ffff ffff 8e3a e344 .............:.D
-// 0x0020: acc6 8e3a e344 acc6 001b 0004 2503 0001 ...:.D......%...
-// 0x0030: 0055 39f0 33 .U9.3
-var testPacketDot11MgmtAction = []byte{
- 0x00, 0x00, 0x12, 0x00, 0x2e, 0x48, 0x00, 0x00, 0x10, 0x02, 0x6c, 0x09, 0xa0, 0x00, 0xbd, 0x05,
- 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8e, 0x3a, 0xe3, 0x44,
- 0xac, 0xc6, 0x8e, 0x3a, 0xe3, 0x44, 0xac, 0xc6, 0x00, 0x1b, 0x00, 0x04, 0x25, 0x03, 0x00, 0x01,
- 0x00, 0x55, 0x39, 0xf0, 0x33,
-}
-
-func TestPacketDot11MgmtAction(t *testing.T) {
- p := gopacket.NewPacket(testPacketDot11MgmtAction, LinkTypeIEEE80211Radio, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11MgmtAction}, t)
- if got, ok := p.Layer(LayerTypeDot11).(*Dot11); !ok {
- t.Errorf("dot11 frame was not parsed")
- } else if !got.ChecksumValid() {
- t.Errorf("Dot11 packet processing failed: checksum failed")
- }
- if got, ok := p.Layer(LayerTypeDot11MgmtAction).(*Dot11MgmtAction); !ok {
- t.Errorf("management action frame was not parsed")
- } else if got.Contents[0] != 0 {
- t.Errorf("action category was not spectrum management")
- }
-}
-
-func BenchmarkDecodePacketDot11MgmtAction(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketDot11MgmtAction, LinkTypeIEEE80211Radio, gopacket.NoCopy)
- }
-}
-
-// testPacketDot11CtrlAck is the packet:
-// 06:14:27.838669 638758038us tsft short preamble 24.0 Mb/s -39dB signal -96dB noise antenna 2 5180 MHz 11a Acknowledgment RA:00:19:e3:d3:53:52
-// 0x0000: 0000 2000 6708 0400 96ac 1226 0000 0000 ....g......&....
-// 0x0010: 2230 d9a0 0200 0000 4001 0000 3c14 2411 "0......@...<.$.
-// 0x0020: d400 0000 0019 e3d3 5352 46e9 7687 ........SRF.v.
-var testPacketDot11CtrlAck = []byte{
- 0x00, 0x00, 0x20, 0x00, 0x67, 0x08, 0x04, 0x00, 0x96, 0xac, 0x12, 0x26, 0x00, 0x00, 0x00, 0x00,
- 0x32, 0x30, 0xd9, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x3c, 0x14, 0x24, 0x11,
- 0xd4, 0x00, 0x00, 0x00, 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0x46, 0xe9, 0x76, 0x87,
-}
-
-func TestPacketDot11CtrlAck(t *testing.T) {
- p := gopacket.NewPacket(testPacketDot11CtrlAck, LinkTypeIEEE80211Radio, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11}, t)
-
- if got, ok := p.Layer(LayerTypeDot11).(*Dot11); ok {
- if !got.ChecksumValid() {
- t.Errorf("Dot11 packet processing failed:\nchecksum failed. got :\n%#v\n\n", got)
- }
- }
-
- if got, ok := p.Layer(LayerTypeDot11).(*Dot11); ok {
- if !got.ChecksumValid() {
- t.Errorf("Dot11 packet processing failed:\nchecksum failed. got :\n%#v\n\n", got)
- }
- want := &Dot11{
- BaseLayer: BaseLayer{
- Contents: []uint8{0xd4, 0x0, 0x0, 0x0, 0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52},
- Payload: []uint8{},
- },
- Type: Dot11TypeCtrlAck,
- Proto: 0x0,
- Flags: 0x0,
- DurationID: 0x0,
- Address1: net.HardwareAddr{0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52},
- Address2: net.HardwareAddr(nil),
- Address3: net.HardwareAddr(nil),
- Address4: net.HardwareAddr(nil),
- Checksum: 0x8776e946,
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("Dot11 packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- }
-}
-func BenchmarkDecodePacketDot11CtrlAck(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketDot11CtrlAck, LinkTypeIEEE80211Radio, gopacket.NoCopy)
- }
-}
-
-// testPacketDot11DataARP is the packet:
-// 06:14:11.512316 622463798us tsft short preamble 6.0 Mb/s -39dB signal -96dB noise antenna 2 5180 MHz 11a ARP, Request who-has 67.8.14.54 tell 169.254.247.0, length 28
-// 0x0000: 0000 2000 6708 0400 360b 1a25 0000 0000 ....g...6..%....
-// 0x0010: 220c d9a0 0200 0000 4001 0000 3c14 2411 ".......@...<.$.
-// 0x0020: 0802 0000 ffff ffff ffff 0603 7f07 a016 ................
-// 0x0030: 0019 e3d3 5352 e07f aaaa 0300 0000 0806 ....SR..........
-// 0x0040: 0001 0800 0604 0001 0019 e3d3 5352 a9fe ............SR..
-// 0x0050: f700 0000 0000 0000 4308 0e36 ........C..6
-var testPacketDot11DataARP = []byte{
- 0x00, 0x00, 0x20, 0x00, 0x67, 0x08, 0x04, 0x00, 0x36, 0x0b, 0x1a, 0x25, 0x00, 0x00, 0x00, 0x00,
- 0x22, 0x0c, 0xd9, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x3c, 0x14, 0x24, 0x11,
- 0x08, 0x02, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x03, 0x7f, 0x07, 0xa0, 0x16,
- 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0xe0, 0x7f, 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x08, 0x06,
- 0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x01, 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0xa9, 0xfe,
- 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x08, 0x0e, 0x36,
-}
-
-func TestPacketDot11DataARP(t *testing.T) {
- p := gopacket.NewPacket(testPacketDot11DataARP, LinkTypeIEEE80211Radio, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11Data, LayerTypeLLC, LayerTypeSNAP, LayerTypeARP}, t)
-
- if got, ok := p.Layer(LayerTypeARP).(*ARP); ok {
- want := &ARP{
- BaseLayer: BaseLayer{
- Contents: []uint8{0x0, 0x1, 0x8, 0x0, 0x6, 0x4, 0x0, 0x1, 0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0xa9, 0xfe, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x8, 0xe, 0x36},
- Payload: []uint8{},
- },
- AddrType: 0x1,
- Protocol: 0x800,
- HwAddressSize: 0x6,
- ProtAddressSize: 0x4,
- Operation: 0x1,
- SourceHwAddress: []uint8{0x0, 0x19, 0xe3, 0xd3, 0x53, 0x52},
- SourceProtAddress: []uint8{0xa9, 0xfe, 0xf7, 0x0},
- DstHwAddress: []uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
- DstProtAddress: []uint8{0x43, 0x8, 0xe, 0x36},
- }
-
- if !reflect.DeepEqual(got, want) {
- t.Errorf("ARP packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- }
-}
-
-func BenchmarkDecodePacketDot11DataARP(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketDot11DataARP, LinkTypeIEEE80211Radio, gopacket.NoCopy)
- }
-}
-
-// testPacketDot11DataIP is the packet:
-// 06:14:21.388622 632340487us tsft short preamble 6.0 Mb/s -40dB signal -96dB noise antenna 1 5180 MHz 11a IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:19:e3:d3:53:52, length 300
-// 0x0000: 0000 2000 6708 0400 07c0 b025 0000 0000 ....g......%....
-// 0x0010: 220c d8a0 0100 0000 4001 0000 3c14 2411 ".......@...<.$.
-// 0x0020: 0802 0000 ffff ffff ffff 0603 7f07 a016 ................
-// 0x0030: 0019 e3d3 5352 4095 aaaa 0300 0000 0800 ....SR@.........
-// 0x0040: 4500 0148 c514 0000 ff11 f590 0000 0000 E..H............
-// 0x0050: ffff ffff 0044 0043 0134 2b39 0101 0600 .....D.C.4+9....
-// 0x0060: 131f 8c43 003c 0000 0000 0000 0000 0000 ...C.<..........
-// 0x0070: 0000 0000 0000 0000 0019 e3d3 5352 0000 ............SR..
-// 0x0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-// 0x0140: 0000 0000 0000 0000 6382 5363 3501 0137 ........c.Sc5..7
-// 0x0150: 0a01 0306 0f77 5ffc 2c2e 2f39 0205 dc3d .....w_.,./9...=
-// 0x0160: 0701 0019 e3d3 5352 3304 0076 a700 0c0b ......SR3..v....
-// 0x0170: 4d61 6369 6e74 6f73 682d 34ff 0000 0000 Macintosh-4.....
-// 0x0180: 0000 0000 0000 0000 ........
-var testPacketDot11DataIP = []byte{
- 0x00, 0x00, 0x20, 0x00, 0x67, 0x08, 0x04, 0x00, 0x07, 0xc0, 0xb0, 0x25, 0x00, 0x00, 0x00, 0x00,
- 0x22, 0x0c, 0xd8, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x3c, 0x14, 0x24, 0x11,
- 0x08, 0x02, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x03, 0x7f, 0x07, 0xa0, 0x16,
- 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0x40, 0x95, 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00,
- 0x45, 0x00, 0x01, 0x48, 0xc5, 0x14, 0x00, 0x00, 0xff, 0x11, 0xf5, 0x90, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0xff, 0xff, 0x00, 0x44, 0x00, 0x43, 0x01, 0x34, 0x2b, 0x39, 0x01, 0x01, 0x06, 0x00,
- 0x13, 0x1f, 0x8c, 0x43, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x82, 0x53, 0x63, 0x35, 0x01, 0x01, 0x37,
- 0x0a, 0x01, 0x03, 0x06, 0x0f, 0x77, 0x5f, 0xfc, 0x2c, 0x2e, 0x2f, 0x39, 0x02, 0x05, 0xdc, 0x3d,
- 0x07, 0x01, 0x00, 0x19, 0xe3, 0xd3, 0x53, 0x52, 0x33, 0x04, 0x00, 0x76, 0xa7, 0x00, 0x0c, 0x0b,
- 0x4d, 0x61, 0x63, 0x69, 0x6e, 0x74, 0x6f, 0x73, 0x68, 0x2d, 0x34, 0xff, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketDot11DataIP(t *testing.T) {
- p := gopacket.NewPacket(testPacketDot11DataIP, LinkTypeIEEE80211Radio, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11Data, LayerTypeLLC, LayerTypeSNAP, LayerTypeIPv4, LayerTypeUDP, LayerTypeDHCPv4}, t)
-}
-func BenchmarkDecodePacketDot11DataIP(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketDot11DataIP, LinkTypeIEEE80211Radio, gopacket.NoCopy)
- }
-}
-
-// Encrypted
-
-/// testPacketP6196 is the packet:
-// 09:28:41.830631 20605036us tsft wep -69dB signal -92dB noise antenna 1 5240 MHz 11a ht/40- 162.0 Mb/s MCS 12 40 MHz lon GI mixed BCC FEC [bit 20] CF +QoS Data IV:50a9 Pad 20 KeyID 0
-// 0x0000: 0000 3000 6b08 1c00 6c68 3a01 0000 0000 ..0.k...lh:.....
-// 0x0010: 1400 7814 4001 bba4 0160 0e1a 4001 0400 ..x.@....`..@...
-// 0x0020: 7814 3022 1f01 0cff b10d 0000 0400 0000 x.0"............
-// 0x0030: 8841 2c00 0025 9c42 c262 d8a2 5e97 61c1 .A,..%.B.b..^.a.
-// 0x0040: 0025 9c42 c25f 10db 0000 a950 0020 0000 .%.B._.....P....
-// 0x0050: 0000 f8ab a97e 3fbd d6e1 785b 0040 5f15 .....~?...x[.@_.
-// 0x0060: 7123 8711 bd1f ffb9 e5b3 84bb ec2a 0a90 q#...........*..
-// 0x0070: d0a0 1a6f 9033 1083 5179 a0da f833 3a00 ...o.3..Qy...3:.
-// 0x0080: 5471 f596 539b 1823 a33c 4908 545c 266a Tq..S..#.<I.T\&j
-// 0x0090: 8540 515a 1da9 c49e a85a fbf7 de09 7f9c .@QZ.....Z......
-// 0x00a0: 6f35 0b8b 6831 2c10 43dc 8983 b1d9 dd29 o5..h1,.C......)
-// 0x00b0: 7395 65b9 4b43 b391 16ec 4201 86c9 ca s.e.KC....B....
-var testPacketP6196 = []byte{
- 0x00, 0x00, 0x30, 0x00, 0x6b, 0x08, 0x1c, 0x00, 0x6c, 0x68, 0x3a, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x14, 0x00, 0x78, 0x14, 0x40, 0x01, 0xbb, 0xa4, 0x01, 0x60, 0x0e, 0x1a, 0x40, 0x01, 0x04, 0x00,
- 0x78, 0x14, 0x30, 0x22, 0x1f, 0x01, 0x0c, 0xff, 0xb1, 0x0d, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
- 0x88, 0x41, 0x2c, 0x00, 0x00, 0x25, 0x9c, 0x42, 0xc2, 0x62, 0xd8, 0xa2, 0x5e, 0x97, 0x61, 0xc1,
- 0x00, 0x25, 0x9c, 0x42, 0xc2, 0x5f, 0x10, 0xdb, 0x00, 0x00, 0xa9, 0x50, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0xf8, 0xab, 0xa9, 0x7e, 0x3f, 0xbd, 0xd6, 0xe1, 0x78, 0x5b, 0x00, 0x40, 0x5f, 0x15,
- 0x71, 0x23, 0x87, 0x11, 0xbd, 0x1f, 0xff, 0xb9, 0xe5, 0xb3, 0x84, 0xbb, 0xec, 0x2a, 0x0a, 0x90,
- 0xd0, 0xa0, 0x1a, 0x6f, 0x90, 0x33, 0x10, 0x83, 0x51, 0x79, 0xa0, 0xda, 0xf8, 0x33, 0x3a, 0x00,
- 0x54, 0x71, 0xf5, 0x96, 0x53, 0x9b, 0x18, 0x23, 0xa3, 0x3c, 0x49, 0x08, 0x54, 0x5c, 0x26, 0x6a,
- 0x85, 0x40, 0x51, 0x5a, 0x1d, 0xa9, 0xc4, 0x9e, 0xa8, 0x5a, 0xfb, 0xf7, 0xde, 0x09, 0x7f, 0x9c,
- 0x6f, 0x35, 0x0b, 0x8b, 0x68, 0x31, 0x2c, 0x10, 0x43, 0xdc, 0x89, 0x83, 0xb1, 0xd9, 0xdd, 0x29,
- 0x73, 0x95, 0x65, 0xb9, 0x4b, 0x43, 0xb3, 0x91, 0x16, 0xec, 0x42, 0x01, 0x86, 0xc9, 0xca,
-}
-
-func TestPacketP6196(t *testing.T) {
- p := gopacket.NewPacket(testPacketP6196, LinkTypeIEEE80211Radio, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
-
- checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11, LayerTypeDot11WEP}, t)
-}
-
-func BenchmarkDecodePacketP6196(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketP6196, LinkTypeIEEE80211Radio, gopacket.NoCopy)
- }
-}
-
-func TestInformationElement(t *testing.T) {
- bin := []byte{
- 0, 0,
- 0, 2, 1, 3,
- 221, 5, 1, 2, 3, 4, 5,
- }
- pkt := gopacket.NewPacket(bin, LayerTypeDot11InformationElement, gopacket.NoCopy)
-
- buf := gopacket.NewSerializeBuffer()
- var sLayers []gopacket.SerializableLayer
- for _, l := range pkt.Layers() {
- sLayers = append(sLayers, l.(*Dot11InformationElement))
- }
- if err := gopacket.SerializeLayers(buf, gopacket.SerializeOptions{}, sLayers...); err != nil {
- t.Error(err.Error())
- }
- if !bytes.Equal(bin, buf.Bytes()) {
- t.Error("build failed")
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/dot1q_test.go b/vendor/github.com/google/gopacket/layers/dot1q_test.go
deleted file mode 100644
index 4a409c7..0000000
--- a/vendor/github.com/google/gopacket/layers/dot1q_test.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package layers
-
-import (
- "fmt"
- "reflect"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-// test harness to ensure the dot1q layer can be encoded/decoded properly
-// return error if decoded data not match.
-func testEncodeDecodeDot1Q(dot1Q *Dot1Q) error {
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{}
- expectedDot1Q := dot1Q
-
- err := dot1Q.SerializeTo(buf, opts)
- if err != nil {
- return err
- }
-
- newDot1q := &Dot1Q{}
- err = newDot1q.DecodeFromBytes(buf.Bytes(), gopacket.NilDecodeFeedback)
- if err != nil {
- return err
- }
- newDot1q.BaseLayer = BaseLayer{}
-
- if !reflect.DeepEqual(expectedDot1Q, newDot1q) {
- return fmt.Errorf("Expect %v actual %v", expectedDot1Q, newDot1q)
- }
- return nil
-
-}
-
-// Test to ensure what has been encode can be decoded
-func TestEncodeDecodeDot1Q(t *testing.T) {
- dot1Qs := []*Dot1Q{
- &Dot1Q{
- Priority: uint8(3),
- VLANIdentifier: uint16(30),
- },
- &Dot1Q{
- Priority: uint8(0x07),
- DropEligible: true,
- VLANIdentifier: uint16(0xFFF),
- },
- }
-
- for i, curTest := range dot1Qs {
- err := testEncodeDecodeDot1Q(curTest)
- if err != nil {
- t.Error("Error with item ", i, " with error message :", err)
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/endpoints_test.go b/vendor/github.com/google/gopacket/layers/endpoints_test.go
deleted file mode 100644
index 906762a..0000000
--- a/vendor/github.com/google/gopacket/layers/endpoints_test.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2017, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "net"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-func TestNewIPEndpoint(t *testing.T) {
- cases := []struct {
- ip net.IP
- endpointType gopacket.EndpointType
- }{
- {net.ParseIP("192.168.0.1").To4(), EndpointIPv4},
- {net.ParseIP("192.168.0.1").To16(), EndpointIPv4},
- {net.ParseIP("2001:0db8:85a3:0000:0000:8a2e:0370:7334"), EndpointIPv6},
- }
-
- for _, c := range cases {
- endpoint := NewIPEndpoint(c.ip)
- if endpoint == gopacket.InvalidEndpoint {
- t.Errorf("Failed to create an IP endpoint for %s (%d-bytes)",
- c.ip, len(c.ip))
- }
- if endpoint.EndpointType() != c.endpointType {
- t.Errorf("Wrong endpoint type created for %s (%d-bytes): expected %s, got %s",
- c.ip, len(c.ip), c.endpointType, endpoint.EndpointType())
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/geneve_test.go b/vendor/github.com/google/gopacket/layers/geneve_test.go
deleted file mode 100644
index ee34d52..0000000
--- a/vendor/github.com/google/gopacket/layers/geneve_test.go
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2016 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "reflect"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-var testPacketGeneve1 = []byte{
- 0x00, 0x04, 0x00, 0x01, 0x00, 0x06, 0xfa, 0x16, 0x3e, 0x23, 0xd3, 0x42,
- 0x00, 0x00, 0x08, 0x00, 0x45, 0x00, 0x00, 0x86, 0x87, 0x39, 0x40, 0x00,
- 0x40, 0x11, 0x31, 0x35, 0xc0, 0xa8, 0x00, 0x53, 0xc0, 0xa8, 0x00, 0x55,
- 0x31, 0x57, 0x17, 0xc1, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x65, 0x58,
- 0x00, 0x00, 0x00, 0x00, 0xba, 0x09, 0x60, 0x5f, 0xa0, 0x91, 0xa2, 0xfe,
- 0x54, 0x48, 0x88, 0x51, 0x08, 0x00, 0x45, 0x00, 0x00, 0x54, 0x01, 0xf6,
- 0x40, 0x00, 0x40, 0x01, 0xb7, 0x5f, 0xc0, 0xa8, 0x00, 0x01, 0xc0, 0xa8,
- 0x00, 0x02, 0x08, 0x00, 0x79, 0xdf, 0x0c, 0xfa, 0x63, 0xc4, 0x03, 0x0b,
- 0x50, 0x58, 0x00, 0x00, 0x00, 0x00, 0xee, 0x2b, 0x0d, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
- 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
- 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
- 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-}
-
-var testPacketGeneve2 = []byte{
- 0x12, 0xbe, 0x4e, 0xb6, 0xa7, 0xc7, 0x02, 0x88, 0x0a, 0x81, 0xbd, 0x6d,
- 0x08, 0x00, 0x45, 0x00, 0x00, 0x86, 0x20, 0xf2, 0x00, 0x00, 0x40, 0x11,
- 0x01, 0x52, 0xac, 0x10, 0x00, 0x01, 0xac, 0x10, 0x00, 0x02, 0x40, 0xa6,
- 0x17, 0xc1, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x65, 0x58, 0x00, 0x00,
- 0x0a, 0x00, 0xd2, 0x8c, 0xdb, 0x12, 0x53, 0xd5, 0x8e, 0xab, 0xa2, 0xa5,
- 0x02, 0xf7, 0x08, 0x00, 0x45, 0x00, 0x00, 0x54, 0x38, 0x1a, 0x40, 0x00,
- 0x40, 0x01, 0x81, 0x3b, 0xc0, 0xa8, 0x00, 0x01, 0xc0, 0xa8, 0x00, 0x02,
- 0x08, 0x00, 0xdd, 0x9d, 0x7e, 0xde, 0x02, 0xc3, 0xcb, 0x07, 0x51, 0x58,
- 0x00, 0x00, 0x00, 0x00, 0xba, 0x8d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b,
- 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
- 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33,
- 0x34, 0x35, 0x36, 0x37,
-}
-
-func TestDecodeGeneve1(t *testing.T) {
- p := gopacket.NewPacket(testPacketGeneve1, LinkTypeLinuxSLL, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{
- LayerTypeLinuxSLL, LayerTypeIPv4, LayerTypeUDP, LayerTypeGeneve,
- LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload,
- }, t)
- if got, ok := p.Layer(LayerTypeGeneve).(*Geneve); ok {
- want := &Geneve{
- BaseLayer: BaseLayer{
- Contents: testPacketGeneve1[44:52],
- Payload: testPacketGeneve1[52:150],
- },
- Version: 0x0,
- OptionsLength: 0x0,
- OAMPacket: false,
- CriticalOption: false,
- Protocol: EthernetTypeTransparentEthernetBridging,
- VNI: 0x0,
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("Geneve layer mismatch, \nwant %#v\ngot %#v\n", want, got)
- }
- }
-}
-
-func TestDecodeGeneve2(t *testing.T) {
- p := gopacket.NewPacket(testPacketGeneve2, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{
- LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeGeneve,
- LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload,
- }, t)
- if got, ok := p.Layer(LayerTypeGeneve).(*Geneve); ok {
- want := &Geneve{
- BaseLayer: BaseLayer{
- Contents: testPacketGeneve2[42:50],
- Payload: testPacketGeneve2[50:148],
- },
- Version: 0x0,
- OptionsLength: 0x0,
- OAMPacket: false,
- CriticalOption: false,
- Protocol: EthernetTypeTransparentEthernetBridging,
- VNI: 0xa,
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("Geneve layer mismatch, \nwant %#v\ngot %#v\n", want, got)
- }
- }
-}
-
-func BenchmarkDecodeGeneve1(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketGeneve1, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/gre_test.go b/vendor/github.com/google/gopacket/layers/gre_test.go
deleted file mode 100644
index af2e38e..0000000
--- a/vendor/github.com/google/gopacket/layers/gre_test.go
+++ /dev/null
@@ -1,389 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package layers
-
-import (
- "fmt"
- "net"
- "reflect"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-// testPacketGRE is the packet:
-// 15:08:08.003196 IP 192.168.1.1 > 192.168.1.2: GREv0, length 88: IP 172.16.1.1 > 172.16.2.1: ICMP echo request, id 4724, seq 1, length 64
-// 0x0000: 3a56 6b69 595e 8e7a 12c3 a971 0800 4500 :VkiY^.z...q..E.
-// 0x0010: 006c 843c 4000 402f 32d3 c0a8 0101 c0a8 .l.<@.@/2.......
-// 0x0020: 0102 0000 0800 4500 0054 0488 4000 4001 ......E..T..@.@.
-// 0x0030: dafe ac10 0101 ac10 0201 0800 82c4 1274 ...............t
-// 0x0040: 0001 c892 a354 0000 0000 380c 0000 0000 .....T....8.....
-// 0x0050: 0000 1011 1213 1415 1617 1819 1a1b 1c1d ................
-// 0x0060: 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d ...!"#$%&'()*+,-
-// 0x0070: 2e2f 3031 3233 3435 3637 ./01234567
-var testPacketGRE = []byte{
- 0x3a, 0x56, 0x6b, 0x69, 0x59, 0x5e, 0x8e, 0x7a, 0x12, 0xc3, 0xa9, 0x71, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x6c, 0x84, 0x3c, 0x40, 0x00, 0x40, 0x2f, 0x32, 0xd3, 0xc0, 0xa8, 0x01, 0x01, 0xc0, 0xa8,
- 0x01, 0x02, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00, 0x00, 0x54, 0x04, 0x88, 0x40, 0x00, 0x40, 0x01,
- 0xda, 0xfe, 0xac, 0x10, 0x01, 0x01, 0xac, 0x10, 0x02, 0x01, 0x08, 0x00, 0x82, 0xc4, 0x12, 0x74,
- 0x00, 0x01, 0xc8, 0x92, 0xa3, 0x54, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-}
-
-func TestPacketGRE(t *testing.T) {
- p := gopacket.NewPacket(testPacketGRE, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeGRE, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
- if got, ok := p.Layer(LayerTypeGRE).(*GRE); ok {
- want := &GRE{
- BaseLayer: BaseLayer{testPacketGRE[34:38], testPacketGRE[38:]},
- Protocol: EthernetTypeIPv4,
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("GRE layer mismatch, \nwant %#v\ngot %#v\n", want, got)
- }
- }
-}
-
-func BenchmarkDecodePacketGRE(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketGRE, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-var testIPv4OverGRE = []gopacket.SerializableLayer{
- &Ethernet{
- SrcMAC: net.HardwareAddr{142, 122, 18, 195, 169, 113},
- DstMAC: net.HardwareAddr{58, 86, 107, 105, 89, 94},
- EthernetType: EthernetTypeIPv4,
- },
- &IPv4{
- Version: 4,
- SrcIP: net.IP{192, 168, 1, 1},
- DstIP: net.IP{192, 168, 1, 2},
- Protocol: IPProtocolGRE,
- Flags: IPv4DontFragment,
- TTL: 64,
- Id: 33852,
- IHL: 5,
- },
- &GRE{
- Protocol: EthernetTypeIPv4,
- },
- &IPv4{
- Version: 4,
- SrcIP: net.IP{172, 16, 1, 1},
- DstIP: net.IP{172, 16, 2, 1},
- Protocol: IPProtocolICMPv4,
- Flags: IPv4DontFragment,
- TTL: 64,
- IHL: 5,
- Id: 1160,
- },
- &ICMPv4{
- TypeCode: CreateICMPv4TypeCode(ICMPv4TypeEchoRequest, 0),
- Id: 4724,
- Seq: 1,
- },
- gopacket.Payload{
- 0xc8, 0x92, 0xa3, 0x54, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
- },
-}
-
-func TestIPv4OverGREEncode(t *testing.T) {
- b := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{
- ComputeChecksums: true,
- FixLengths: true,
- }
- if err := gopacket.SerializeLayers(b, opts, testIPv4OverGRE...); err != nil {
- t.Errorf("Unable to serialize: %v", err)
- }
- p := gopacket.NewPacket(b.Bytes(), LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeGRE, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
- if got, want := b.Bytes(), testPacketGRE; !reflect.DeepEqual(want, got) {
- t.Errorf("Encoding mismatch, \nwant: %v\ngot %v\n", want, got)
- }
-}
-
-func BenchmarkEncodePacketGRE(b *testing.B) {
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{
- ComputeChecksums: true,
- FixLengths: true,
- }
- for i := 0; i < b.N; i++ {
- gopacket.SerializeLayers(buf, opts, testIPv4OverGRE...)
- buf.Clear()
- }
-}
-
-// testPacketEthernetOverGRE is the packet:
-// 11:01:38.124768 IP 192.168.1.1 > 192.168.1.2: GREv0, length 102: IP 172.16.1.1 > 172.16.1.2: ICMP echo request, id 3842, seq 1, length 64
-// 0x0000: ea6b 4cd3 5513 d6b9 d880 56ef 0800 4500 .kL.U.....V...E.
-// 0x0010: 007a 0acd 4000 402f ac34 c0a8 0101 c0a8 .z..@.@/.4......
-// 0x0020: 0102 0000 6558 aa6a 36e6 c630 6e32 3ec7 ....eX.j6..0n2>.
-// 0x0030: 9def 0800 4500 0054 d970 4000 4001 0715 ....E..T.p@.@...
-// 0x0040: ac10 0101 ac10 0102 0800 3f15 0f02 0001 ..........?.....
-// 0x0050: 82d9 b154 0000 0000 b5e6 0100 0000 0000 ...T............
-// 0x0060: 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f ................
-// 0x0070: 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f .!"#$%&'()*+,-./
-// 0x0080: 3031 3233 3435 3637 01234567
-var testPacketEthernetOverGRE = []byte{
- 0xea, 0x6b, 0x4c, 0xd3, 0x55, 0x13, 0xd6, 0xb9, 0xd8, 0x80, 0x56, 0xef, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x7a, 0x0a, 0xcd, 0x40, 0x00, 0x40, 0x2f, 0xac, 0x34, 0xc0, 0xa8, 0x01, 0x01, 0xc0, 0xa8,
- 0x01, 0x02, 0x00, 0x00, 0x65, 0x58, 0xaa, 0x6a, 0x36, 0xe6, 0xc6, 0x30, 0x6e, 0x32, 0x3e, 0xc7,
- 0x9d, 0xef, 0x08, 0x00, 0x45, 0x00, 0x00, 0x54, 0xd9, 0x70, 0x40, 0x00, 0x40, 0x01, 0x07, 0x15,
- 0xac, 0x10, 0x01, 0x01, 0xac, 0x10, 0x01, 0x02, 0x08, 0x00, 0x3f, 0x15, 0x0f, 0x02, 0x00, 0x01,
- 0x82, 0xd9, 0xb1, 0x54, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-}
-
-func TestPacketEthernetOverGRE(t *testing.T) {
- p := gopacket.NewPacket(testPacketEthernetOverGRE, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeGRE, LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
- if got, ok := p.Layer(LayerTypeGRE).(*GRE); ok {
- want := &GRE{
- BaseLayer: BaseLayer{testPacketEthernetOverGRE[34:38], testPacketEthernetOverGRE[38:]},
- Protocol: EthernetTypeTransparentEthernetBridging,
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("GRE layer mismatch, \nwant %#v\ngot %#v\n", want, got)
- }
- }
-}
-
-func BenchmarkDecodePacketEthernetOverGRE(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketEthernetOverGRE, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-var testEthernetOverGRE = []gopacket.SerializableLayer{
- &Ethernet{
- SrcMAC: net.HardwareAddr{0xd6, 0xb9, 0xd8, 0x80, 0x56, 0xef},
- DstMAC: net.HardwareAddr{0xea, 0x6b, 0x4c, 0xd3, 0x55, 0x13},
- EthernetType: EthernetTypeIPv4,
- },
- &IPv4{
- Version: 4,
- SrcIP: net.IP{192, 168, 1, 1},
- DstIP: net.IP{192, 168, 1, 2},
- Protocol: IPProtocolGRE,
- Flags: IPv4DontFragment,
- TTL: 64,
- Id: 2765,
- IHL: 5,
- },
- &GRE{
- Protocol: EthernetTypeTransparentEthernetBridging,
- },
- &Ethernet{
- SrcMAC: net.HardwareAddr{0x6e, 0x32, 0x3e, 0xc7, 0x9d, 0xef},
- DstMAC: net.HardwareAddr{0xaa, 0x6a, 0x36, 0xe6, 0xc6, 0x30},
- EthernetType: EthernetTypeIPv4,
- },
- &IPv4{
- Version: 4,
- SrcIP: net.IP{172, 16, 1, 1},
- DstIP: net.IP{172, 16, 1, 2},
- Protocol: IPProtocolICMPv4,
- Flags: IPv4DontFragment,
- TTL: 64,
- IHL: 5,
- Id: 55664,
- },
- &ICMPv4{
- TypeCode: CreateICMPv4TypeCode(ICMPv4TypeEchoRequest, 0),
- Id: 3842,
- Seq: 1,
- },
- gopacket.Payload{
- 0x82, 0xd9, 0xb1, 0x54, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
- },
-}
-
-func TestEthernetOverGREEncode(t *testing.T) {
- b := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{
- ComputeChecksums: true,
- FixLengths: true,
- }
- if err := gopacket.SerializeLayers(b, opts, testEthernetOverGRE...); err != nil {
- t.Errorf("Unable to serialize: %v", err)
- }
- p := gopacket.NewPacket(b.Bytes(), LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeGRE, LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
- if got, want := b.Bytes(), testPacketEthernetOverGRE; !reflect.DeepEqual(want, got) {
- t.Errorf("Encoding mismatch, \nwant: %v\ngot %v\n", want, got)
- }
-}
-
-func BenchmarkEncodePacketEthernetOverGRE(b *testing.B) {
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{
- ComputeChecksums: true,
- FixLengths: true,
- }
- for i := 0; i < b.N; i++ {
- gopacket.SerializeLayers(buf, opts, testEthernetOverGRE...)
- buf.Clear()
- }
-}
-
-var testGREChecksum = map[uint16][]gopacket.SerializableLayer{
- 0x77ff: {
- &Ethernet{
- SrcMAC: net.HardwareAddr{0xc2, 0x00, 0x57, 0x75, 0x00, 0x00},
- DstMAC: net.HardwareAddr{0xc2, 0x01, 0x57, 0x75, 0x00, 0x00},
- EthernetType: EthernetTypeIPv4,
- },
- &IPv4{
- Version: 4,
- SrcIP: net.IP{10, 0, 0, 1},
- DstIP: net.IP{10, 0, 0, 2},
- Protocol: IPProtocolGRE,
- TTL: 255,
- Id: 10,
- IHL: 5,
- },
- &GRE{
- Protocol: EthernetTypeIPv4,
- ChecksumPresent: true,
- },
- &IPv4{
- Version: 4,
- SrcIP: net.IP{1, 1, 1, 1},
- DstIP: net.IP{2, 2, 2, 2},
- Protocol: IPProtocolICMPv4,
- TTL: 255,
- IHL: 5,
- Id: 10,
- },
- &ICMPv4{
- TypeCode: CreateICMPv4TypeCode(ICMPv4TypeEchoRequest, 0),
- Id: 2,
- Seq: 0,
- },
- gopacket.Payload{
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xbe, 0x70, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- },
- },
- 0x8475: {
- &Ethernet{
- SrcMAC: net.HardwareAddr{0xc2, 0x00, 0x57, 0x75, 0x00, 0x00},
- DstMAC: net.HardwareAddr{0xc2, 0x01, 0x57, 0x75, 0x00, 0x00},
- EthernetType: EthernetTypeIPv4,
- },
- &IPv4{
- Version: 4,
- SrcIP: net.IP{10, 0, 0, 1},
- DstIP: net.IP{10, 0, 0, 2},
- Protocol: IPProtocolGRE,
- TTL: 255,
- Id: 10,
- IHL: 5,
- },
- &GRE{
- Protocol: EthernetTypeIPv4,
- ChecksumPresent: true,
- },
- &IPv4{
- Version: 4,
- SrcIP: net.IP{2, 3, 4, 5},
- DstIP: net.IP{2, 3, 4, 50},
- Protocol: IPProtocolUDP,
- TTL: 1,
- IHL: 5,
- Flags: IPv4DontFragment,
- Id: 964,
- },
- &UDP{
- SrcPort: 41781,
- DstPort: 33434,
- },
- gopacket.Payload{
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
- 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
- },
- },
-}
-
-func TestGREChecksum(t *testing.T) {
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{
- ComputeChecksums: true,
- FixLengths: true,
- }
- for cksum, packet := range testGREChecksum {
- buf.Clear()
- if err := setNetworkLayer(packet); err != nil {
- t.Errorf("Failed to set network layer: %v", err)
- continue
- }
- if err := gopacket.SerializeLayers(buf, opts, packet...); err != nil {
- t.Errorf("Failed to serialize packet: %v", err)
- continue
- }
- p := gopacket.NewPacket(buf.Bytes(), LinkTypeEthernet, gopacket.Default)
- t.Log(p)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- continue
- }
- if got, ok := p.Layer(LayerTypeGRE).(*GRE); ok {
- if got.Checksum != cksum {
- t.Errorf("Incorrect checksum calculated for GRE packet: want %v, got %v", cksum, got.Checksum)
- }
- }
- }
-}
-
-func setNetworkLayer(layers []gopacket.SerializableLayer) error {
- type setNetworkLayerForChecksum interface {
- SetNetworkLayerForChecksum(gopacket.NetworkLayer) error
- }
- var l gopacket.NetworkLayer
- for _, layer := range layers {
- if n, ok := layer.(gopacket.NetworkLayer); ok {
- l = n
- }
- if s, ok := layer.(setNetworkLayerForChecksum); ok {
- if l == nil {
- return fmt.Errorf("no enclosing network layer found before: %v", s)
- }
- if err := s.SetNetworkLayerForChecksum(l); err != nil {
- return fmt.Errorf("failed to set network layer(%v) on layer(%v): %v", l, s, err)
- }
- }
- }
- return nil
-}
diff --git a/vendor/github.com/google/gopacket/layers/icmp6_test.go b/vendor/github.com/google/gopacket/layers/icmp6_test.go
deleted file mode 100644
index 4a6d248..0000000
--- a/vendor/github.com/google/gopacket/layers/icmp6_test.go
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "github.com/google/gopacket"
- "net"
- "reflect"
- "testing"
-)
-
-// testPacketICMPv6 is the packet:
-// 10:48:30.088384 IP6 2620:0:1005:0:26be:5ff:fe27:b17 > fe80::21f:caff:feb3:7640: ICMP6, neighbor advertisement, tgt is 2620:0:1005:0:26be:5ff:fe27:b17, length 24
-// 0x0000: 001f cab3 7640 24be 0527 0b17 86dd 6000 ....v@$..'....`.
-// 0x0010: 0000 0018 3aff 2620 0000 1005 0000 26be ....:.&.......&.
-// 0x0020: 05ff fe27 0b17 fe80 0000 0000 0000 021f ...'............
-// 0x0030: caff feb3 7640 8800 1ed6 4000 0000 2620 ....v@....@...&.
-// 0x0040: 0000 1005 0000 26be 05ff fe27 0b17 ......&....'..
-var testPacketICMPv6 = []byte{
- 0x00, 0x1f, 0xca, 0xb3, 0x76, 0x40, 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x86, 0xdd, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x3a, 0xff, 0x26, 0x20, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x26, 0xbe,
- 0x05, 0xff, 0xfe, 0x27, 0x0b, 0x17, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1f,
- 0xca, 0xff, 0xfe, 0xb3, 0x76, 0x40, 0x88, 0x00, 0x1e, 0xd6, 0x40, 0x00, 0x00, 0x00, 0x26, 0x20,
- 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x26, 0xbe, 0x05, 0xff, 0xfe, 0x27, 0x0b, 0x17,
-}
-
-func TestPacketICMPv6(t *testing.T) {
- p := gopacket.NewPacket(testPacketICMPv6, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeICMPv6, gopacket.LayerTypePayload}, t)
- if got, ok := p.Layer(LayerTypeIPv6).(*IPv6); ok {
- want := &IPv6{
- BaseLayer: BaseLayer{
- Contents: []byte{0x60, 0x0, 0x0, 0x0, 0x0, 0x18,
- 0x3a, 0xff, 0x26, 0x20, 0x0, 0x0, 0x10, 0x5, 0x0, 0x0, 0x26, 0xbe, 0x5,
- 0xff, 0xfe, 0x27, 0xb, 0x17, 0xfe, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x2, 0x1f, 0xca, 0xff, 0xfe, 0xb3, 0x76, 0x40},
- Payload: []byte{0x88, 0x0, 0x1e, 0xd6, 0x40, 0x0, 0x0, 0x0, 0x26, 0x20,
- 0x0, 0x0, 0x10, 0x5, 0x0, 0x0, 0x26, 0xbe, 0x5, 0xff, 0xfe, 0x27, 0xb,
- 0x17},
- },
- Version: 6,
- TrafficClass: 0,
- FlowLabel: 0,
- Length: 24,
- NextHeader: IPProtocolICMPv6,
- HopLimit: 255,
- SrcIP: net.IP{0x26, 0x20, 0x0, 0x0, 0x10, 0x5, 0x0, 0x0, 0x26, 0xbe, 0x5, 0xff, 0xfe, 0x27, 0xb, 0x17},
- DstIP: net.IP{0xfe, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x1f, 0xca, 0xff, 0xfe, 0xb3, 0x76, 0x40},
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("IPv6 packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- } else {
- t.Error("No IPv6 layer type found in packet")
- }
- if got, ok := p.Layer(LayerTypeICMPv6).(*ICMPv6); ok {
- want := &ICMPv6{
- BaseLayer: BaseLayer{
- Contents: []byte{0x88, 0x0, 0x1e, 0xd6, 0x40, 0x0, 0x0, 0x0},
- Payload: []byte{0x26, 0x20, 0x0, 0x0, 0x10,
- 0x5, 0x0, 0x0, 0x26, 0xbe, 0x5, 0xff, 0xfe, 0x27, 0xb, 0x17},
- },
- TypeCode: 0x8800,
- Checksum: 0x1ed6,
- TypeBytes: []byte{0x40, 0x0, 0x0, 0x0},
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("ICMPv6 packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- if got.TypeCode.String() != "NeighborAdvertisement" {
- t.Errorf("ICMPv6 type code, got %q want 'NeighborAdvertisement'", got.TypeCode.String())
- }
- } else {
- t.Error("No ICMPv6 layer type found in packet")
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/igmp_test.go b/vendor/github.com/google/gopacket/layers/igmp_test.go
deleted file mode 100644
index 923356d..0000000
--- a/vendor/github.com/google/gopacket/layers/igmp_test.go
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright 2016, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "testing"
-
- "github.com/google/gopacket"
-)
-
-// igmpv1MembershipReportPacket is the packet:
-// 02:45:36.033916 IP 10.60.0.132 > 224.0.1.60: igmp v1 report 224.0.1.60
-// 0x0000: 0100 5e00 013c 0030 c1bf 5755 0800 4500 ..^..<.0..WU..E.
-// 0x0010: 001c 6a7f 0000 0102 6365 0a3c 0084 e000 ..j.....ce.<....
-// 0x0020: 013c 1200 0cc3 e000 013c 0000 0000 0000 .<.......<......
-// 0x0030: ffff ffff ffff 0452 0000 0000 .......R....
-var igmpv1MembershipReportPacket = []byte{
- 0x01, 0x00, 0x5e, 0x00, 0x01, 0x3c, 0x00, 0x30, 0xc1, 0xbf, 0x57, 0x55, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x1c, 0x6a, 0x7f, 0x00, 0x00, 0x01, 0x02, 0x63, 0x65, 0x0a, 0x3c, 0x00, 0x84, 0xe0, 0x00,
- 0x01, 0x3c, 0x12, 0x00, 0x0c, 0xc3, 0xe0, 0x00, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x52, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestIGMPv1MembershipReportPacket(t *testing.T) {
- p := gopacket.NewPacket(igmpv1MembershipReportPacket, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIGMP}, t)
-
- igmp := p.Layer(LayerTypeIGMP).(*IGMPv1or2)
- if igmp.Type != IGMPMembershipReportV1 {
- t.Fatal("Invalid IGMP type")
- }
-}
-
-func BenchmarkDecodeigmpv1MembershipReportPacket(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(igmpv1MembershipReportPacket, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// igmpv2MembershipQueryPacket is the packet:
-// 02:45:28.071636 IP 10.60.0.189 > 224.0.0.1: igmp query v2
-// 0x0000: 0100 5e00 0001 0001 636f c800 0800 45c0 ..^.....co....E.
-// 0x0010: 001c 0153 0000 0102 ccd3 0a3c 00bd e000 ...S.......<....
-// 0x0020: 0001 1164 ee9b 0000 0000 0000 0000 0000 ...d............
-// 0x0030: 0000 0000 0000 0000 0000 0000 ............
-var igmpv2MembershipQueryPacket = []byte{
- 0x01, 0x00, 0x5e, 0x00, 0x00, 0x01, 0x00, 0x01, 0x63, 0x6f, 0xc8, 0x00, 0x08, 0x00, 0x45, 0xc0,
- 0x00, 0x1c, 0x01, 0x53, 0x00, 0x00, 0x01, 0x02, 0xcc, 0xd3, 0x0a, 0x3c, 0x00, 0xbd, 0xe0, 0x00,
- 0x00, 0x01, 0x11, 0x64, 0xee, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestIGMPv2MembershipQuery(t *testing.T) {
- p := gopacket.NewPacket(igmpv2MembershipQueryPacket, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIGMP}, t)
-
- igmp := p.Layer(LayerTypeIGMP).(*IGMPv1or2)
- if igmp.Type != IGMPMembershipQuery {
- t.Fatal("Invalid IGMP type")
- }
-}
-func BenchmarkDecodeigmpv2MembershipQueryPacket(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(igmpv2MembershipQueryPacket, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// igmpv2MembershipReportPacket is the packet:
-// 02:47:32.417288 IP 10.60.5.103 > 239.255.255.253: igmp v2 report 239.255.255.253
-// 0x0000: 0100 5e7f fffd 0015 58dc d9f6 0800 4600 ..^.....X.....F.
-// 0x0010: 0020 79f0 0000 0102 ab47 0a3c 0567 efff ..y......G.<.g..
-// 0x0020: fffd 9404 0000 1600 fa01 efff fffd 0000 ................
-// 0x0030: 0000 0000 0000 0000 0000 0000 ............
-var igmpv2MembershipReportPacket = []byte{
- 0x01, 0x00, 0x5e, 0x7f, 0xff, 0xfd, 0x00, 0x15, 0x58, 0xdc, 0xd9, 0xf6, 0x08, 0x00, 0x46, 0x00,
- 0x00, 0x20, 0x79, 0xf0, 0x00, 0x00, 0x01, 0x02, 0xab, 0x47, 0x0a, 0x3c, 0x05, 0x67, 0xef, 0xff,
- 0xff, 0xfd, 0x94, 0x04, 0x00, 0x00, 0x16, 0x00, 0xfa, 0x01, 0xef, 0xff, 0xff, 0xfd, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestIGMPv2MembershipReport(t *testing.T) {
- p := gopacket.NewPacket(igmpv2MembershipReportPacket, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIGMP}, t)
-
- igmp := p.Layer(LayerTypeIGMP).(*IGMPv1or2)
- if igmp.Type != IGMPMembershipReportV2 {
- t.Fatal("Invalid IGMP type")
- }
-}
-func BenchmarkDecodeigmpv2MembershipReportPacket(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(igmpv2MembershipReportPacket, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// igmp3v3MembershipQueryPacket is the packet:
-// 10:07:30.488511 IP 192.168.1.254 > 224.0.0.1: igmp query v3 [max resp time 2.4s]
-// 0x0000: 0100 5e00 0001 0026 446c 1eda 0800 46c0 ..^....&Dl....F.
-// 0x0010: 0024 17f1 4000 0102 297b c0a8 01fe e000 .$..@...){......
-// 0x0020: 0001 9404 0000 1118 ecd3 0000 0000 0214 ................
-// 0x0030: 0000 0000 0000 0000 0000 0000 ............
-var igmp3v3MembershipQueryPacket = []byte{
- 0x01, 0x00, 0x5e, 0x00, 0x00, 0x01, 0x00, 0x26, 0x44, 0x6c, 0x1e, 0xda, 0x08, 0x00, 0x46, 0xc0,
- 0x00, 0x24, 0x17, 0xf1, 0x40, 0x00, 0x01, 0x02, 0x29, 0x7b, 0xc0, 0xa8, 0x01, 0xfe, 0xe0, 0x00,
- 0x00, 0x01, 0x94, 0x04, 0x00, 0x00, 0x11, 0x18, 0xec, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x02, 0x14,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestIGMPv3MembershipQuery(t *testing.T) {
- p := gopacket.NewPacket(igmp3v3MembershipQueryPacket, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIGMP}, t)
-
- igmp := p.Layer(LayerTypeIGMP).(*IGMP)
- if igmp.Type != IGMPMembershipQuery {
- t.Fatal("Invalid IGMP type")
- }
-}
-
-func BenchmarkDecodeigmp3v3MembershipQueryPacket(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(igmp3v3MembershipQueryPacket, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// igmpv3MembershipReport2Records is the packet:
-// 10:07:29.756202 IP 192.168.1.66 > 224.0.0.22: igmp v3 report, 2 group record(s)
-// 0x0000: 0100 5e00 0016 0025 2e51 c381 0800 4658 ..^....%.Q....FX
-// 0x0010: 0030 013c 0000 0102 8133 c0a8 0142 e000 .0.<.....3...B..
-// 0x0020: 0016 9404 0000 2200 f33c 0000 0002 0200 ......"..<......
-// 0x0030: 0000 efc3 0702 0200 0000 efff fffa ..............
-var igmpv3MembershipReport2Records = []byte{
- 0x01, 0x00, 0x5e, 0x00, 0x00, 0x16, 0x00, 0x25, 0x2e, 0x51, 0xc3, 0x81, 0x08, 0x00, 0x46, 0x58,
- 0x00, 0x30, 0x01, 0x3c, 0x00, 0x00, 0x01, 0x02, 0x81, 0x33, 0xc0, 0xa8, 0x01, 0x42, 0xe0, 0x00,
- 0x00, 0x16, 0x94, 0x04, 0x00, 0x00, 0x22, 0x00, 0xf3, 0x3c, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00,
- 0x00, 0x00, 0xef, 0xc3, 0x07, 0x02, 0x02, 0x00, 0x00, 0x00, 0xef, 0xff, 0xff, 0xfa,
-}
-
-func TestIGMPv3MembershipReport2Records(t *testing.T) {
- p := gopacket.NewPacket(igmpv3MembershipReport2Records, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIGMP}, t)
-
- igmp := p.Layer(LayerTypeIGMP).(*IGMP)
- if igmp.Type != IGMPMembershipReportV3 {
- t.Fatal("Invalid IGMP type")
- }
-}
-
-func BenchmarkDecodeigmpv3MembershipReport2Records(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(igmpv3MembershipReport2Records, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/ip4_test.go b/vendor/github.com/google/gopacket/layers/ip4_test.go
deleted file mode 100644
index ec6b351..0000000
--- a/vendor/github.com/google/gopacket/layers/ip4_test.go
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This file tests some of the functionality provided in the ip4.go
-
-package layers
-
-import (
- "encoding/binary"
- "encoding/hex"
- "net"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-// Test the function getIPv4OptionSize when the ipv4 has no options
-func TestGetIPOptLengthNoOpt(t *testing.T) {
- ip := IPv4{}
- length := ip.getIPv4OptionSize()
- if length != 0 {
- t.Fatalf("Empty option list should have 0 length. Actual %d", length)
- }
-}
-
-// Test the function getIPv4OptionSize when the ipv4 has end of list option
-func TestGetIPOptLengthEndOfList(t *testing.T) {
- ip := IPv4{}
- ip.Options = append(ip.Options, IPv4Option{OptionType: 0, OptionLength: 1})
- length := ip.getIPv4OptionSize()
- if length != 4 {
- t.Fatalf("After padding, the list should have 4 length. Actual %d", length)
- }
-}
-
-// Test the function getIPv4OptionSize when the ipv4 has padding and end of list option
-func TestGetIPOptLengthPaddingEndOfList(t *testing.T) {
- ip := IPv4{}
- ip.Options = append(ip.Options, IPv4Option{OptionType: 1, OptionLength: 1})
- ip.Options = append(ip.Options, IPv4Option{OptionType: 0, OptionLength: 1})
- length := ip.getIPv4OptionSize()
- if length != 4 {
- t.Fatalf("After padding, the list should have 4 length. Actual %d", length)
- }
-}
-
-// Test the function getIPv4OptionSize when the ipv4 has some non-trivial option and end of list option
-func TestGetIPOptLengthOptionEndOfList(t *testing.T) {
- ip := IPv4{}
- someByte := make([]byte, 8)
- ip.Options = append(ip.Options, IPv4Option{OptionType: 2, OptionLength: 10, OptionData: someByte})
- ip.Options = append(ip.Options, IPv4Option{OptionType: 0, OptionLength: 1})
- length := ip.getIPv4OptionSize()
- if length != 12 {
- t.Fatalf("The list should have 12 length. Actual %d", length)
- }
-}
-
-// Tests that the Options slice is properly reset before parsing new data
-func TestIPOptResetDuringDecoding(t *testing.T) {
- ip := &IPv4{
- Options: []IPv4Option{{OptionType: 42, OptionLength: 4, OptionData: make([]byte, 2)}},
- }
-
- ipWithoutOptions := &IPv4{
- SrcIP: net.IPv4(192, 168, 1, 1),
- DstIP: net.IPv4(192, 168, 1, 1),
- Protocol: IPProtocolTCP,
- }
-
- ipBytes, err := serialize(ipWithoutOptions)
-
- if err != nil {
- t.Fatalf("Failed to serialize ip layer: %v", err)
- }
-
- err = ip.DecodeFromBytes(ipBytes, gopacket.NilDecodeFeedback)
-
- if err != nil {
- t.Fatalf("Failed to deserialize ip layer: %v", err)
- }
-
- if len(ip.Options) > 0 {
- t.Fatalf("Options slice has stale data from previous packet")
- }
-
-}
-
-func serialize(ip *IPv4) ([]byte, error) {
- buffer := gopacket.NewSerializeBuffer()
- err := ip.SerializeTo(buffer, gopacket.SerializeOptions{
- FixLengths: true,
- ComputeChecksums: true,
- })
- return buffer.Bytes(), err
-}
-
-// Test the function checksum
-func TestChecksum(t *testing.T) {
- testData := []struct {
- name string
- header string
- want string
- }{{
- name: "sum has two carries",
- header: "4540005800000000ff11ffff0aeb1d070aed8877",
- want: "fffe",
- }, {
- name: "wikipedia case",
- header: "45000073000040004011b861c0a80001c0a800c7",
- want: "b861",
- }}
-
- for _, test := range testData {
- bytes, err := hex.DecodeString(test.header)
- if err != nil {
- t.Fatalf("Failed to Decode header: %v", err)
- }
- wantBytes, err := hex.DecodeString(test.want)
- if err != nil {
- t.Fatalf("Failed to decode want checksum: %v", err)
- }
-
- if got, want := checksum(bytes), binary.BigEndian.Uint16(wantBytes); got != want {
- t.Errorf("In test %q, got incorrect checksum: got(%x), want(%x)", test.name, got, want)
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/ip6_test.go b/vendor/github.com/google/gopacket/layers/ip6_test.go
deleted file mode 100644
index ab22f17..0000000
--- a/vendor/github.com/google/gopacket/layers/ip6_test.go
+++ /dev/null
@@ -1,430 +0,0 @@
-// Copyright 2014, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "bytes"
- "github.com/google/gopacket"
- "net"
- "reflect"
- "testing"
-)
-
-func TestSerializeIPv6HeaderTLVOptions(t *testing.T) {
- //RFC 2460 Appendix B
- /*
- Example 3
-
- A Hop-by-Hop or Destination Options header containing both options X
- and Y from Examples 1 and 2 would have one of the two following
- formats, depending on which option appeared first:
-
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Next Header | Hdr Ext Len=3 | Option Type=X |Opt Data Len=12|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 4-octet field |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + 8-octet field +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | PadN Option=1 |Opt Data Len=1 | 0 | Option Type=Y |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Opt Data Len=7 | 1-octet field | 2-octet field |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 4-octet field |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | PadN Option=1 |Opt Data Len=2 | 0 | 0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
- opt1 := &ipv6HeaderTLVOption{}
- opt1.OptionType = 0x1e
- opt1.OptionData = []byte{0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb}
- opt1.OptionAlignment = [2]uint8{8, 2}
-
- opt2 := &ipv6HeaderTLVOption{}
- opt2.OptionType = 0x3e
- opt2.OptionData = []byte{0x11, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44}
- opt2.OptionAlignment = [2]uint8{4, 3}
-
- l := serializeIPv6HeaderTLVOptions(nil, []*ipv6HeaderTLVOption{opt1, opt2}, true)
- b := make([]byte, l)
- serializeIPv6HeaderTLVOptions(b, []*ipv6HeaderTLVOption{opt1, opt2}, true)
- got := b
- want := []byte{0x1e, 0x0c, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x01, 0x01, 0x00, 0x3e, 0x07, 0x11, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x01, 0x02, 0x00, 0x00}
-
- if !bytes.Equal(got, want) {
- t.Errorf("IPv6HeaderTLVOption serialize (X,Y) failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
-
- /*
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | Next Header | Hdr Ext Len=3 | Pad1 Option=0 | Option Type=Y |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |Opt Data Len=7 | 1-octet field | 2-octet field |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 4-octet field |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | PadN Option=1 |Opt Data Len=4 | 0 | 0 |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 0 | 0 | Option Type=X |Opt Data Len=12|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | 4-octet field |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | |
- + 8-octet field +
- | |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-
- l = serializeIPv6HeaderTLVOptions(nil, []*ipv6HeaderTLVOption{opt2, opt1}, true)
- b = make([]byte, l)
- serializeIPv6HeaderTLVOptions(b, []*ipv6HeaderTLVOption{opt2, opt1}, true)
- got = b
- want = []byte{0x00, 0x3e, 0x07, 0x11, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb}
-
- if !bytes.Equal(got, want) {
- t.Errorf("IPv6HeaderTLVOption serialize (Y,X) failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
-}
-
-var testPacketIPv6HopByHop0 = []byte{
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketIPv6HopByHop0Serialize(t *testing.T) {
- var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 2)
- var err error
-
- ip6 := &IPv6{}
- ip6.Version = 6
- ip6.NextHeader = IPProtocolIPv6HopByHop
- ip6.HopLimit = 64
- ip6.SrcIP = net.ParseIP("2001:db8::1")
- ip6.DstIP = net.ParseIP("2001:db8::2")
- serialize = append(serialize, ip6)
-
- tlv := &IPv6HopByHopOption{}
- tlv.OptionType = 0x01 //PadN
- tlv.OptionData = []byte{0x00, 0x00, 0x00, 0x00}
- hop := &IPv6HopByHop{}
- hop.Options = append(hop.Options, tlv)
- hop.NextHeader = IPProtocolNoNextHeader
- ip6.HopByHop = hop
-
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true}
- err = gopacket.SerializeLayers(buf, opts, serialize...)
- if err != nil {
- t.Fatal(err)
- }
-
- got := buf.Bytes()
- want := testPacketIPv6HopByHop0
- if !bytes.Equal(got, want) {
- t.Errorf("IPv6HopByHop serialize failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
-}
-
-func TestPacketIPv6HopByHop0Decode(t *testing.T) {
- ip6 := &IPv6{
- BaseLayer: BaseLayer{
- Contents: []byte{
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
- },
- Payload: []byte{0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00},
- },
- Version: 6,
- TrafficClass: 0,
- FlowLabel: 0,
- Length: 8,
- NextHeader: IPProtocolIPv6HopByHop,
- HopLimit: 64,
- SrcIP: net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
- DstIP: net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
- }
-
- hop := &ip6.hbh
- hop.ipv6ExtensionBase = ipv6ExtensionBase{
- BaseLayer: BaseLayer{
- Contents: []byte{0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00},
- Payload: []byte{},
- },
- NextHeader: IPProtocolNoNextHeader,
- HeaderLength: uint8(0),
- ActualLength: 8,
- }
- opt := &IPv6HopByHopOption{
- OptionType: uint8(0x01),
- OptionLength: uint8(0x04),
- ActualLength: 6,
- OptionData: []byte{0x00, 0x00, 0x00, 0x00},
- }
- hop.Options = append(hop.Options, opt)
- ip6.HopByHop = hop
-
- p := gopacket.NewPacket(testPacketIPv6HopByHop0, LinkTypeRaw, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeIPv6, LayerTypeIPv6HopByHop}, t)
- if got, ok := p.Layer(LayerTypeIPv6).(*IPv6); ok {
- want := ip6
- want.HopByHop = got.HopByHop // avoid comparing pointers
- if !reflect.DeepEqual(got, want) {
- t.Errorf("IPv6 packet processing failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
- } else {
- t.Error("No IPv6 layer type found in packet")
- }
- if got, ok := p.Layer(LayerTypeIPv6HopByHop).(*IPv6HopByHop); ok {
- want := hop
- if !reflect.DeepEqual(got, want) {
- t.Errorf("IPv6HopByHop packet processing failed:\ngot\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
- } else {
- t.Error("No IPv6HopByHop layer type found in packet")
- }
-}
-
-// testPacketIPv6Destination0 is the packet:
-// 12:40:14.429409595 IP6 2001:db8::1 > 2001:db8::2: DSTOPT no next header
-// 0x0000: 6000 0000 0008 3c40 2001 0db8 0000 0000 `.....<@........
-// 0x0010: 0000 0000 0000 0001 2001 0db8 0000 0000 ................
-// 0x0020: 0000 0000 0000 0002 3b00 0104 0000 0000 ........;.......
-var testPacketIPv6Destination0 = []byte{
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3c, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketIPv6Destination0Serialize(t *testing.T) {
- var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 2)
- var err error
-
- ip6 := &IPv6{}
- ip6.Version = 6
- ip6.NextHeader = IPProtocolIPv6Destination
- ip6.HopLimit = 64
- ip6.SrcIP = net.ParseIP("2001:db8::1")
- ip6.DstIP = net.ParseIP("2001:db8::2")
- serialize = append(serialize, ip6)
-
- tlv := &IPv6DestinationOption{}
- tlv.OptionType = 0x01 //PadN
- tlv.OptionData = []byte{0x00, 0x00, 0x00, 0x00}
- dst := &IPv6Destination{}
- dst.Options = append(dst.Options, tlv)
- dst.NextHeader = IPProtocolNoNextHeader
- serialize = append(serialize, dst)
-
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true}
- err = gopacket.SerializeLayers(buf, opts, serialize...)
- if err != nil {
- t.Fatal(err)
- }
-
- got := buf.Bytes()
- want := testPacketIPv6Destination0
- if !bytes.Equal(got, want) {
- t.Errorf("IPv6Destination serialize failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
-}
-
-func TestPacketIPv6Destination0Decode(t *testing.T) {
- ip6 := &IPv6{
- BaseLayer: BaseLayer{
- Contents: []byte{
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3c, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
- },
- Payload: []byte{0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00},
- },
- Version: 6,
- TrafficClass: 0,
- FlowLabel: 0,
- Length: 8,
- NextHeader: IPProtocolIPv6Destination,
- HopLimit: 64,
- SrcIP: net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
- DstIP: net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
- }
-
- dst := &IPv6Destination{}
- dst.BaseLayer = BaseLayer{
- Contents: []byte{0x3b, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00},
- Payload: []byte{},
- }
- dst.NextHeader = IPProtocolNoNextHeader
- dst.HeaderLength = uint8(0)
- dst.ActualLength = 8
- opt := &IPv6DestinationOption{
- OptionType: uint8(0x01),
- OptionLength: uint8(0x04),
- ActualLength: 6,
- OptionData: []byte{0x00, 0x00, 0x00, 0x00},
- }
- dst.Options = append(dst.Options, opt)
-
- p := gopacket.NewPacket(testPacketIPv6Destination0, LinkTypeRaw, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeIPv6, LayerTypeIPv6Destination}, t)
- if got, ok := p.Layer(LayerTypeIPv6).(*IPv6); ok {
- want := ip6
- if !reflect.DeepEqual(got, want) {
- t.Errorf("IPv6 packet processing failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
- } else {
- t.Error("No IPv6 layer type found in packet")
- }
- if got, ok := p.Layer(LayerTypeIPv6Destination).(*IPv6Destination); ok {
- want := dst
- if !reflect.DeepEqual(got, want) {
- t.Errorf("IPv6Destination packet processing failed:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
- } else {
- t.Error("No IPv6Destination layer type found in packet")
- }
-}
-
-var testPacketIPv6JumbogramHeader = []byte{
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3b, 0x00, 0xc2, 0x04, 0x00, 0x01, 0x00, 0x08,
-}
-
-func TestIPv6JumbogramSerialize(t *testing.T) {
- var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 2)
- var err error
-
- ip6 := &IPv6{}
- ip6.Version = 6
- ip6.NextHeader = IPProtocolNoNextHeader
- ip6.HopLimit = 64
- ip6.SrcIP = net.ParseIP("2001:db8::1")
- ip6.DstIP = net.ParseIP("2001:db8::2")
- serialize = append(serialize, ip6)
-
- payload := make([]byte, ipv6MaxPayloadLength+1)
- for i := range payload {
- payload[i] = 0xfe
- }
- serialize = append(serialize, gopacket.Payload(payload))
-
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true}
- err = gopacket.SerializeLayers(buf, opts, serialize...)
- if err != nil {
- t.Fatal(err)
- }
-
- got := buf.Bytes()
- w := new(bytes.Buffer)
- w.Write(testPacketIPv6JumbogramHeader)
- w.Write(payload)
- want := w.Bytes()
-
- if !bytes.Equal(got, want) {
- t.Errorf("IPv6 Jumbogram serialize failed:\ngot:\n%v\n\nwant:\n%v\n\n",
- gopacket.LongBytesGoString(got), gopacket.LongBytesGoString(want))
- }
-}
-
-func TestIPv6JumbogramDecode(t *testing.T) {
- payload := make([]byte, ipv6MaxPayloadLength+1)
- for i := range payload {
- payload[i] = 0xfe
- }
-
- ip6 := &IPv6{
- BaseLayer: BaseLayer{
- Contents: []byte{
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
- },
- },
- Version: 6,
- TrafficClass: 0,
- FlowLabel: 0,
- Length: 0,
- NextHeader: IPProtocolIPv6HopByHop,
- HopLimit: 64,
- SrcIP: net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
- DstIP: net.IP{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
- }
- buf := new(bytes.Buffer)
- buf.Write([]byte{0x3b, 0x00, 0xc2, 0x04, 0x00, 0x01, 0x00, 0x08})
- buf.Write(payload)
- ip6.Payload = buf.Bytes()
-
- hop := &ip6.hbh
- hop.Contents = []byte{0x3b, 0x00, 0xc2, 0x04, 0x00, 0x01, 0x00, 0x08}
- hop.Payload = payload
- hop.NextHeader = IPProtocolNoNextHeader
- hop.HeaderLength = uint8(0)
- hop.ActualLength = 8
- opt := &IPv6HopByHopOption{}
- opt.OptionType = uint8(0xc2)
- opt.OptionLength = uint8(0x04)
- opt.ActualLength = 6
- opt.OptionData = []byte{0x00, 0x01, 0x00, 0x08}
- hop.Options = append(hop.Options, opt)
- ip6.HopByHop = hop
-
- pkt := new(bytes.Buffer)
- pkt.Write(testPacketIPv6JumbogramHeader)
- pkt.Write(payload)
-
- p := gopacket.NewPacket(pkt.Bytes(), LinkTypeRaw, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeIPv6, LayerTypeIPv6HopByHop, gopacket.LayerTypePayload}, t)
-
- if got, ok := p.Layer(LayerTypeIPv6).(*IPv6); ok {
- want := ip6
- want.HopByHop = got.HopByHop // Hack, avoid comparing pointers
- if !reflect.DeepEqual(got, want) {
- t.Errorf("IPv6 packet processing failed:\ngot:\n%v\n\nwant:\n%v\n\n",
- gopacket.LayerGoString(got), gopacket.LayerGoString(want))
- }
- } else {
- t.Error("No IPv6 layer type found in packet")
- }
-
- if got, ok := p.Layer(LayerTypeIPv6HopByHop).(*IPv6HopByHop); ok {
- want := hop
- if !reflect.DeepEqual(got, want) {
- t.Errorf("IPv6HopByHop packet processing failed:\ngot:\n%v\n\nwant:\n%v\n\n",
- gopacket.LayerGoString(got), gopacket.LayerGoString(want))
- }
- } else {
- t.Error("No IPv6HopByHop layer type found in packet")
- }
-
- if got, ok := p.Layer(gopacket.LayerTypePayload).(*gopacket.Payload); ok {
- want := (*gopacket.Payload)(&payload)
- if !reflect.DeepEqual(got, want) {
- t.Errorf("Payload packet processing failed:\ngot:\n%v\n\nwant:\n%v\n\n",
- gopacket.LayerGoString(got), gopacket.LayerGoString(want))
- }
- } else {
- t.Error("No Payload layer type found in packet")
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/ipsec_test.go b/vendor/github.com/google/gopacket/layers/ipsec_test.go
deleted file mode 100644
index 466646d..0000000
--- a/vendor/github.com/google/gopacket/layers/ipsec_test.go
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "github.com/google/gopacket"
- "reflect"
- "testing"
-)
-
-// testPacketIPSecAHTransport is the packet:
-// 20:45:10.325850 IP 192.168.1.1 > 192.168.1.2: AH(spi=0x00000101,seq=0x1): ICMP echo request, id 1560, seq 1, length 64
-// 0x0000: 7ec0 ffc6 48f1 1a0e 3c4e 3b3a 0800 4500 ~...H...<N;:..E.
-// 0x0010: 006c 650a 4000 4033 5201 c0a8 0101 c0a8 .le.@.@3R.......
-// 0x0020: 0102 0104 0000 0000 0101 0000 0001 2533 ..............%3
-// 0x0030: 01b1 a20b b6f1 bdbf 9d9e 0800 fbe5 0618 ................
-// 0x0040: 0001 c6e1 a354 0000 0000 c8f7 0400 0000 .....T..........
-// 0x0050: 0000 1011 1213 1415 1617 1819 1a1b 1c1d ................
-// 0x0060: 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d ...!"#$%&'()*+,-
-// 0x0070: 2e2f 3031 3233 3435 3637 ./01234567
-var testPacketIPSecAHTransport = []byte{
- 0x7e, 0xc0, 0xff, 0xc6, 0x48, 0xf1, 0x1a, 0x0e, 0x3c, 0x4e, 0x3b, 0x3a, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x6c, 0x65, 0x0a, 0x40, 0x00, 0x40, 0x33, 0x52, 0x01, 0xc0, 0xa8, 0x01, 0x01, 0xc0, 0xa8,
- 0x01, 0x02, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x25, 0x33,
- 0x01, 0xb1, 0xa2, 0x0b, 0xb6, 0xf1, 0xbd, 0xbf, 0x9d, 0x9e, 0x08, 0x00, 0xfb, 0xe5, 0x06, 0x18,
- 0x00, 0x01, 0xc6, 0xe1, 0xa3, 0x54, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xf7, 0x04, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
- 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
- 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-}
-
-func TestPacketIPSecAHTransport(t *testing.T) {
- p := gopacket.NewPacket(testPacketIPSecAHTransport, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIPSecAH, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
- if got, ok := p.Layer(LayerTypeIPSecAH).(*IPSecAH); ok {
- want := &IPSecAH{
- Reserved: 0x0,
- SPI: 0x101,
- Seq: 1,
- AuthenticationData: []byte{0x25, 0x33, 0x01, 0xb1, 0xa2, 0x0b, 0xb6, 0xf1, 0xbd, 0xbf, 0x9d, 0x9e},
- }
- want.BaseLayer = BaseLayer{testPacketIPSecAHTransport[34:58], testPacketIPSecAHTransport[58:]}
- want.NextHeader = IPProtocolICMPv4
- want.HeaderLength = 0x4
- want.ActualLength = 0x18
- if !reflect.DeepEqual(want, got) {
- t.Errorf("IPSecAH layer mismatch, \nwant %#v\ngot %#v\n", want, got)
- }
- }
-}
-
-func BenchmarkDecodePacketIPSecAHTransport(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketIPSecAHTransport, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// testPacketIPSecAHTunnel is the packet:
-// 14:45:43.252917 IP 192.168.1.1 > 192.168.1.2: AH(spi=0x00000101,seq=0x1): IP 172.16.1.1 > 172.16.2.1: ICMP echo request, id 31322, seq 1, length 64 (ipip-proto-4)
-// 0x0000: 7220 4d91 63c9 566c ed2d 73cd 0800 4500 r.M.c.Vl.-s...E.
-// 0x0010: 0080 0000 4000 4033 b6f7 c0a8 0101 c0a8 ....@.@3........
-// 0x0020: 0102 0404 0000 0000 0101 0000 0001 cca4 ................
-// 0x0030: 01da 9eb4 fb75 10fe 5a59 4500 0054 a96f .....u..ZYE..T.o
-// 0x0040: 4000 4001 3617 ac10 0101 ac10 0201 0800 @.@.6...........
-// 0x0050: d75f 7a5a 0001 0741 3355 0000 0000 a9db ._zZ...A3U......
-// 0x0060: 0300 0000 0000 1011 1213 1415 1617 1819 ................
-// 0x0070: 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 .......!"#$%&'()
-// 0x0080: 2a2b 2c2d 2e2f 3031 3233 3435 3637 *+,-./01234567
-var testPacketIPSecAHTunnel = []byte{
- 0x72, 0x20, 0x4d, 0x91, 0x63, 0xc9, 0x56, 0x6c, 0xed, 0x2d, 0x73, 0xcd, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x40, 0x33, 0xb6, 0xf7, 0xc0, 0xa8, 0x01, 0x01, 0xc0, 0xa8,
- 0x01, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0xcc, 0xa4,
- 0x01, 0xda, 0x9e, 0xb4, 0xfb, 0x75, 0x10, 0xfe, 0x5a, 0x59, 0x45, 0x00, 0x00, 0x54, 0xa9, 0x6f,
- 0x40, 0x00, 0x40, 0x01, 0x36, 0x17, 0xac, 0x10, 0x01, 0x01, 0xac, 0x10, 0x02, 0x01, 0x08, 0x00,
- 0xd7, 0x5f, 0x7a, 0x5a, 0x00, 0x01, 0x07, 0x41, 0x33, 0x55, 0x00, 0x00, 0x00, 0x00, 0xa9, 0xdb,
- 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
- 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29,
- 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-}
-
-func TestPacketIPSecAHTunnel(t *testing.T) {
- p := gopacket.NewPacket(testPacketIPSecAHTunnel, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIPSecAH, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
- if got, ok := p.Layer(LayerTypeIPSecAH).(*IPSecAH); ok {
- want := &IPSecAH{
- Reserved: 0x0,
- SPI: 0x101,
- Seq: 1,
- AuthenticationData: []byte{0xcc, 0xa4, 0x01, 0xda, 0x9e, 0xb4, 0xfb, 0x75, 0x10, 0xfe, 0x5a, 0x59},
- }
- want.BaseLayer = BaseLayer{testPacketIPSecAHTunnel[34:58], testPacketIPSecAHTunnel[58:]}
- want.NextHeader = IPProtocolIPv4
- want.HeaderLength = 0x4
- want.ActualLength = 0x18
- if !reflect.DeepEqual(want, got) {
- t.Errorf("IPSecAH layer mismatch, \nwant %#v\ngot %#v\n", want, got)
- }
- }
-}
-
-func BenchmarkDecodePacketIPSecAHTunnel(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketIPSecAHTunnel, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// testPacketIPSecESP is the packet:
-// 04:30:37.629376 IP 190.0.0.1 > 190.0.0.2: ESP(spi=0x0000006e,seq=0x13), length 116
-// 0x0000: 0000 0000 0012 0011 434a d70a 0800 4500 ........CJ....E.
-// 0x0010: 0088 0000 4000 4032 be40 be00 0001 be00 ....@.@2.@......
-// 0x0020: 0002 0000 006e 0000 0013 82f4 1077 0418 .....n.......w..
-// 0x0030: e8ce dc45 1bac 22bb daaf 2ad2 c2e8 315b ...E.."...*...1[
-// 0x0040: ce9a 39da 2aae cf43 3716 70ab 7e7c 4676 ..9.*..C7.p.~|Fv
-// 0x0050: c3fc d109 c990 274d f81c 6534 9a40 a0ef ......'M..e4.@..
-// 0x0060: 46b1 7da5 05af dda8 d0ba 6e23 d1ee 1f10 F.}.......n#....
-// 0x0070: 730c 7371 03b1 445c 2f70 852f 8475 12fb s.sq..D\/p./.u..
-// 0x0080: b057 a19b a617 bae7 09ca 8836 942f 3334 .W.........6./34
-// 0x0090: 312b 96d2 a4e3 1+....
-var testPacketIPSecESP = []byte{
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x11, 0x43, 0x4a, 0xd7, 0x0a, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x88, 0x00, 0x00, 0x40, 0x00, 0x40, 0x32, 0xbe, 0x40, 0xbe, 0x00, 0x00, 0x01, 0xbe, 0x00,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x13, 0x82, 0xf4, 0x10, 0x77, 0x04, 0x18,
- 0xe8, 0xce, 0xdc, 0x45, 0x1b, 0xac, 0x22, 0xbb, 0xda, 0xaf, 0x2a, 0xd2, 0xc2, 0xe8, 0x31, 0x5b,
- 0xce, 0x9a, 0x39, 0xda, 0x2a, 0xae, 0xcf, 0x43, 0x37, 0x16, 0x70, 0xab, 0x7e, 0x7c, 0x46, 0x76,
- 0xc3, 0xfc, 0xd1, 0x09, 0xc9, 0x90, 0x27, 0x4d, 0xf8, 0x1c, 0x65, 0x34, 0x9a, 0x40, 0xa0, 0xef,
- 0x46, 0xb1, 0x7d, 0xa5, 0x05, 0xaf, 0xdd, 0xa8, 0xd0, 0xba, 0x6e, 0x23, 0xd1, 0xee, 0x1f, 0x10,
- 0x73, 0x0c, 0x73, 0x71, 0x03, 0xb1, 0x44, 0x5c, 0x2f, 0x70, 0x85, 0x2f, 0x84, 0x75, 0x12, 0xfb,
- 0xb0, 0x57, 0xa1, 0x9b, 0xa6, 0x17, 0xba, 0xe7, 0x09, 0xca, 0x88, 0x36, 0x94, 0x2f, 0x33, 0x34,
- 0x31, 0x2b, 0x96, 0xd2, 0xa4, 0xe3,
-}
-
-func TestPacketIPSecESP(t *testing.T) {
- p := gopacket.NewPacket(testPacketIPSecESP, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeIPSecESP}, t)
-}
-
-func BenchmarkDecodePacketIPSecESP(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketIPSecESP, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/mpls_test.go b/vendor/github.com/google/gopacket/layers/mpls_test.go
deleted file mode 100644
index e0a2b95..0000000
--- a/vendor/github.com/google/gopacket/layers/mpls_test.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2016 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "reflect"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-// testPacketMPLS
-// Ethernet II, Src: cc:15:14:64:00:00 (cc:15:14:64:00:00), Dst: cc:13:14:64:00:01 (cc:13:14:64:00:01)
-// MultiProtocol Label Switching Header, Label: 17, Exp: 0, S: 0, TTL: 254
-// MultiProtocol Label Switching Header, Label: 19, Exp: 0, S: 1, TTL: 254
-// Internet Protocol Version 4, Src: 12.0.0.1, Dst: 2.2.2.2
-// Internet Control Message Protocol
-// 0000 cc 13 14 64 00 01 cc 15 14 64 00 00 88 47 00 01 ...d.....d...G..
-// 0010 10 fe 00 01 31 fe 45 00 00 64 00 39 00 00 fe 01 ....1.E..d.9....
-// 0020 ac 5b 0c 00 00 01 02 02 02 02 08 00 3a 6b 00 0b .[..........:k..
-// 0030 00 02 00 00 00 00 00 3e 43 94 ab cd ab cd ab cd .......>C.......
-// 0040 ab cd ab cd ab cd ab cd ab cd ab cd ab cd ab cd ................
-// 0050 ab cd ab cd ab cd ab cd ab cd ab cd ab cd ab cd ................
-// 0060 ab cd ab cd ab cd ab cd ab cd ab cd ab cd ab cd ................
-// 0070 ab cd ab cd ab cd ab cd ab cd ..........
-
-var testPacketMPLS = []byte{
- 0xcc, 0x13, 0x14, 0x64, 0x00, 0x01, 0xcc, 0x15, 0x14, 0x64, 0x00, 0x00, 0x88, 0x47, 0x00, 0x01,
- 0x10, 0xfe, 0x00, 0x01, 0x31, 0xfe, 0x45, 0x00, 0x00, 0x64, 0x00, 0x39, 0x00, 0x00, 0xfe, 0x01,
- 0xac, 0x5b, 0x0c, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x08, 0x00, 0x3a, 0x6b, 0x00, 0x0b,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x43, 0x94, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
-}
-
-func TestPacketMPLS(t *testing.T) {
- p := gopacket.NewPacket(testPacketMPLS, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeMPLS, LayerTypeMPLS, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
- if got, ok := p.Layers()[1].(*MPLS); ok {
- want := &MPLS{
- BaseLayer: BaseLayer{
- Contents: []byte{0x00, 0x01, 0x10, 0xfe},
- Payload: []byte{0x00, 0x01, 0x31, 0xfe, 0x45, 0x00, 0x00, 0x64, 0x00, 0x39, 0x00, 0x00, 0xfe, 0x01,
- 0xac, 0x5b, 0x0c, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x08, 0x00, 0x3a, 0x6b, 0x00, 0x0b,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x43, 0x94, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd},
- },
- Label: 17,
- TrafficClass: 0,
- StackBottom: false,
- TTL: 254,
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("MPLS layer 1 mismatch, \nwant %#v\ngot %#v\n", want, got)
- }
- }
- if got, ok := p.Layers()[2].(*MPLS); ok {
- want := &MPLS{
- BaseLayer: BaseLayer{
- Contents: []byte{0x00, 0x01, 0x31, 0xfe},
- Payload: []byte{0x45, 0x00, 0x00, 0x64, 0x00, 0x39, 0x00, 0x00, 0xfe, 0x01,
- 0xac, 0x5b, 0x0c, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x08, 0x00, 0x3a, 0x6b, 0x00, 0x0b,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x43, 0x94, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
- 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd},
- },
- Label: 19,
- TrafficClass: 0,
- StackBottom: true,
- TTL: 254,
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("MPLS layer 2 mismatch, \nwant %#v\ngot %#v\n", want, got)
- }
- }
-}
-
-func BenchmarkDecodePacketMPLS(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketMPLS, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/ntp_test.go b/vendor/github.com/google/gopacket/layers/ntp_test.go
deleted file mode 100644
index b522216..0000000
--- a/vendor/github.com/google/gopacket/layers/ntp_test.go
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright 2016 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-//
-//******************************************************************************
-
-package layers
-
-import (
- "crypto/rand"
- "github.com/google/gopacket"
- "io"
- "reflect"
- "testing"
-)
-
-//******************************************************************************
-
-// checkNTP() uses the ntp.go code to analyse the packet bytes as an NTP UDP
-// packet and generate an NTP object. It then compares the generated NTP object
-// with the one provided and throws an error if there is any difference.
-// The desc argument is output with any failure message to identify the test.
-func checkNTP(desc string, t *testing.T, packetBytes []byte, pExpectedNTP *NTP) {
-
- // Analyse the packet bytes, yielding a new packet object p.
- p := gopacket.NewPacket(packetBytes, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Errorf("Failed to decode packet %s: %v", desc, p.ErrorLayer().Error())
- }
-
- // Ensure that the packet analysis yielded the correct set of layers:
- // Link Layer = Ethernet.
- // Network Layer = IPv4.
- // Transport Layer = UDP.
- // Application Layer = NTP.
- checkLayers(p, []gopacket.LayerType{
- LayerTypeEthernet,
- LayerTypeIPv4,
- LayerTypeUDP,
- LayerTypeNTP}, t)
-
- // Select the Application (NTP) layer.
- pResultNTP, ok := p.ApplicationLayer().(*NTP)
- if !ok {
- t.Error("No NTP layer type found in packet in " + desc + ".")
- }
-
- // Compare the generated NTP object with the expected NTP object.
- if !reflect.DeepEqual(pResultNTP, pExpectedNTP) {
- t.Errorf("NTP packet processing failed for packet "+desc+
- ":\ngot :\n%#v\n\nwant :\n%#v\n\n", pResultNTP, pExpectedNTP)
- }
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{}
- err := pResultNTP.SerializeTo(buf, opts)
- if err != nil {
- t.Error(err)
- }
- if !reflect.DeepEqual(pResultNTP.BaseLayer.Contents, buf.Bytes()) {
- t.Errorf("NTP packet serialization failed for packet "+desc+
- ":\ngot :\n%x\n\nwant :\n%x\n\n", buf.Bytes(), packetBytes)
- }
-}
-
-//******************************************************************************
-
-func TestNTPOne(t *testing.T) {
-
- // This test packet is the first NTP packet in the NTP sample capture
- // pcap file NTP_sync.pcap on the Wireshark sample captures page:
- //
- // https://wiki.wireshark.org/SampleCaptures
- // https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=NTP_sync.pcap
- var testPacketNTP = []byte{
- 0x00, 0x0c, 0x41, 0x82, 0xb2, 0x53, 0x00, 0xd0,
- 0x59, 0x6c, 0x40, 0x4e, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x4c, 0x0a, 0x42, 0x00, 0x00, 0x80, 0x11,
- 0xb5, 0xfa, 0xc0, 0xa8, 0x32, 0x32, 0x43, 0x81,
- 0x44, 0x09, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x38,
- 0xf8, 0xd2, 0xd9, 0x00, 0x0a, 0xfa, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x02, 0x90, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc5, 0x02, 0x04, 0xec, 0xec, 0x42,
- 0xee, 0x92,
- }
-
- // Assemble the NTP object that we expect to emerge from this test.
- pExpectedNTP := &NTP{
- BaseLayer: BaseLayer{
- Contents: []byte{0xd9, 0x0, 0xa, 0xfa, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x1, 0x2, 0x90, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0, 0x0, 0xc5, 0x2, 0x4, 0xec, 0xec, 0x42, 0xee, 0x92},
- Payload: nil,
- },
- LeapIndicator: 3,
- Version: 3,
- Mode: 1,
- Stratum: 0,
- Poll: 10,
- Precision: -6,
- RootDelay: 0,
- RootDispersion: 0x10290,
- ReferenceID: 0,
- ReferenceTimestamp: 0,
- OriginTimestamp: 0,
- ReceiveTimestamp: 0,
- TransmitTimestamp: 0xc50204ecec42ee92,
- ExtensionBytes: []byte{},
- }
-
- checkNTP("test01", t, testPacketNTP, pExpectedNTP)
-}
-
-//******************************************************************************
-
-func TestNTPTwo(t *testing.T) {
-
- // This test packet is packet #18 in the NTP sample capture
- // pcap file NTP_sync.pcap on the Wireshark sample captures page:
- //
- // https://wiki.wireshark.org/SampleCaptures
- // https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=NTP_sync.pcap
- //
- // This packet was chosen because it is the first NTP packet after the first
- // NTP packet that has non-zero timestamps.
-
- var testPacketNTP = []byte{
- 0x00, 0xd0, 0x59, 0x6c, 0x40, 0x4e, 0x00, 0x0c,
- 0x41, 0x82, 0xb2, 0x53, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x4c, 0x32, 0x46, 0x40, 0x00, 0x2f, 0x11,
- 0xa8, 0x18, 0x45, 0x2c, 0x39, 0x3c, 0xc0, 0xa8,
- 0x32, 0x32, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x38,
- 0x09, 0x58, 0x1a, 0x03, 0x0a, 0xee, 0x00, 0x00,
- 0x1b, 0xf7, 0x00, 0x00, 0x14, 0xec, 0x51, 0xae,
- 0x80, 0xb7, 0xc5, 0x02, 0x03, 0x4c, 0x8d, 0x0e,
- 0x66, 0xcb, 0xc5, 0x02, 0x04, 0xec, 0xec, 0x42,
- 0xee, 0x92, 0xc5, 0x02, 0x04, 0xeb, 0xcf, 0x49,
- 0x59, 0xe6, 0xc5, 0x02, 0x04, 0xeb, 0xcf, 0x4c,
- 0x6e, 0x6e,
- }
-
- // Assemble the NTP object that we expect to emerge from this test.
- pExpectedNTP := &NTP{
- BaseLayer: BaseLayer{
- Contents: []byte{0x1a, 0x03, 0x0a, 0xee, 0x00, 0x00,
- 0x1b, 0xf7, 0x00, 0x00, 0x14, 0xec, 0x51, 0xae,
- 0x80, 0xb7, 0xc5, 0x02, 0x03, 0x4c, 0x8d, 0x0e,
- 0x66, 0xcb, 0xc5, 0x02, 0x04, 0xec, 0xec, 0x42,
- 0xee, 0x92, 0xc5, 0x02, 0x04, 0xeb, 0xcf, 0x49,
- 0x59, 0xe6, 0xc5, 0x02, 0x04, 0xeb, 0xcf, 0x4c,
- 0x6e, 0x6e},
- Payload: nil,
- },
- LeapIndicator: 0,
- Version: 3,
- Mode: 2,
- Stratum: 3,
- Poll: 10,
- Precision: -18,
- RootDelay: 0x1bf7,
- RootDispersion: 0x14ec,
- ReferenceID: 0x51ae80b7,
- ReferenceTimestamp: 0xc502034c8d0e66cb,
- OriginTimestamp: 0xc50204ecec42ee92,
- ReceiveTimestamp: 0xc50204ebcf4959e6,
- TransmitTimestamp: 0xc50204ebcf4c6e6e,
- ExtensionBytes: []byte{},
- }
-
- checkNTP("test02", t, testPacketNTP, pExpectedNTP)
-}
-
-//******************************************************************************
-
-func TestNTPThree(t *testing.T) {
-
- // This test packet is packet #19 in the NTP sample capture
- // pcap file NTP_sync.pcap on the Wireshark sample captures page:
- //
- // https://wiki.wireshark.org/SampleCaptures
- // https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=NTP_sync.pcap
-
- var testPacketNTP = []byte{
- 0x00, 0xd0, 0x59, 0x6c, 0x40, 0x4e, 0x00, 0x0c,
- 0x41, 0x82, 0xb2, 0x53, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x4c, 0x00, 0x00, 0x40, 0x00, 0x30, 0x11,
- 0x74, 0x65, 0x18, 0x7b, 0xca, 0xe6, 0xc0, 0xa8,
- 0x32, 0x32, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x38,
- 0x44, 0x05, 0x1a, 0x02, 0x0a, 0xec, 0x00, 0x00,
- 0x07, 0xc3, 0x00, 0x00, 0x2f, 0x80, 0xc6, 0x1e,
- 0x5c, 0x02, 0xc5, 0x01, 0xf9, 0x95, 0x42, 0x50,
- 0x82, 0xcf, 0xc5, 0x02, 0x04, 0xec, 0xec, 0x42,
- 0xee, 0x92, 0xc5, 0x02, 0x04, 0xeb, 0xd2, 0x35,
- 0x2e, 0xb5, 0xc5, 0x02, 0x04, 0xeb, 0xd2, 0x35,
- 0xd6, 0x7b,
- }
-
- // Assemble the NTP object that we expect to emerge from this test.
- pExpectedNTP := &NTP{
- BaseLayer: BaseLayer{
- Contents: []byte{0x1a, 0x02, 0x0a, 0xec, 0x00, 0x00,
- 0x07, 0xc3, 0x00, 0x00, 0x2f, 0x80, 0xc6, 0x1e,
- 0x5c, 0x02, 0xc5, 0x01, 0xf9, 0x95, 0x42, 0x50,
- 0x82, 0xcf, 0xc5, 0x02, 0x04, 0xec, 0xec, 0x42,
- 0xee, 0x92, 0xc5, 0x02, 0x04, 0xeb, 0xd2, 0x35,
- 0x2e, 0xb5, 0xc5, 0x02, 0x04, 0xeb, 0xd2, 0x35,
- 0xd6, 0x7b},
- Payload: nil,
- },
- LeapIndicator: 0,
- Version: 3,
- Mode: 2,
- Stratum: 2,
- Poll: 10,
- Precision: -20,
- RootDelay: 0x7c3,
- RootDispersion: 0x2f80,
- ReferenceID: 0xc61e5c02,
- ReferenceTimestamp: 0xc501f995425082cf,
- OriginTimestamp: 0xc50204ecec42ee92,
- ReceiveTimestamp: 0xc50204ebd2352eb5,
- TransmitTimestamp: 0xc50204ebd235d67b,
- ExtensionBytes: []byte{},
- }
-
- checkNTP("test03", t, testPacketNTP, pExpectedNTP)
-}
-
-//******************************************************************************
-
-// TestNTPIsomorphism tests whether random data gets parsed into NTP layer and
-// gets serialized back from it to the same value.
-func TestNTPIsomorphism(t *testing.T) {
- NTPData := make([]byte, ntpMinimumRecordSizeInBytes+7)
- _, err := io.ReadFull(rand.Reader, NTPData)
- if err != nil {
- t.Error(err)
- }
- ntpLayer := &NTP{}
- err = ntpLayer.DecodeFromBytes(NTPData, gopacket.NilDecodeFeedback)
- if err != nil {
- t.Error(err)
- }
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{}
- err = ntpLayer.SerializeTo(buf, opts)
- if err != nil {
- t.Error(err)
- }
- if !reflect.DeepEqual(NTPData, buf.Bytes()) {
- t.Errorf("NTP packet is not isomorphic:\ngot :\n%x\n\nwant :\n%x\n\n", buf.Bytes(), NTPData)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/ospf_test.go b/vendor/github.com/google/gopacket/layers/ospf_test.go
deleted file mode 100644
index 930bb4d..0000000
--- a/vendor/github.com/google/gopacket/layers/ospf_test.go
+++ /dev/null
@@ -1,559 +0,0 @@
-// Copyright 2017 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "github.com/google/gopacket"
- "reflect"
- "testing"
-)
-
-// testPacketOSPF3Hello is the packet:
-// 14:43:11.663317 IP6 fe80::1 > ff02::5: OSPFv3, Hello, length 36
-// 0x0000: 3333 0000 0005 c200 1ffa 0001 86dd 6e00 33............n.
-// 0x0010: 0000 0024 5901 fe80 0000 0000 0000 0000 ...$Y...........
-// 0x0020: 0000 0000 0001 ff02 0000 0000 0000 0000 ................
-// 0x0030: 0000 0000 0005 0301 0024 0101 0101 0000 .........$......
-// 0x0040: 0001 fb86 0000 0000 0005 0100 0013 000a ................
-// 0x0050: 0028 0000 0000 0000 0000 .(........
-var testPacketOSPF3Hello = []byte{
- 0x33, 0x33, 0x00, 0x00, 0x00, 0x05, 0xc2, 0x00, 0x1f, 0xfa, 0x00, 0x01, 0x86, 0xdd, 0x6e, 0x00,
- 0x00, 0x00, 0x00, 0x24, 0x59, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x03, 0x01, 0x00, 0x24, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
- 0x00, 0x01, 0xfb, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x13, 0x00, 0x0a,
- 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketOSPF3Hello(t *testing.T) {
- p := gopacket.NewPacket(testPacketOSPF3Hello, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeOSPF}, t)
-
- ospf := p.Layer(LayerTypeOSPF).(*OSPFv3)
- if ospf.Version != 3 {
- t.Fatal("Invalid OSPF version")
- }
- if got, ok := p.Layer(LayerTypeOSPF).(*OSPFv3); ok {
- want := &OSPFv3{
- OSPF: OSPF{
- Version: 3,
- Type: OSPFHello,
- PacketLength: 36,
- RouterID: 0x1010101,
- AreaID: 1,
- Checksum: 0xfb86,
- Content: HelloPkg{
- InterfaceID: 5,
- RtrPriority: 1,
- Options: 0x000013,
- HelloInterval: 10,
- RouterDeadInterval: 40,
- DesignatedRouterID: 0,
- BackupDesignatedRouterID: 0,
- },
- },
- Instance: 0,
- Reserved: 0,
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("OSPF packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- } else {
- t.Error("No OSPF layer type found in packet")
- }
-}
-func BenchmarkDecodePacketPacket0(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketOSPF3Hello, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// testPacketOSPF3DBDesc is the packet:
-// 14:43:51.657571 IP6 fe80::2 > fe80::1: OSPFv3, Database Description, length 28
-// 0x0000: c200 1ffa 0001 c201 1ffa 0001 86dd 6e00 ..............n.
-// 0x0010: 0000 001c 5901 fe80 0000 0000 0000 0000 ....Y...........
-// 0x0020: 0000 0000 0002 fe80 0000 0000 0000 0000 ................
-// 0x0030: 0000 0000 0001 0302 001c 0202 0202 0000 ................
-// 0x0040: 0001 d826 0000 0000 0013 05dc 0007 0000 ...&............
-// 0x0050: 1d46 .F
-var testPacketOSPF3DBDesc = []byte{
- 0xc2, 0x00, 0x1f, 0xfa, 0x00, 0x01, 0xc2, 0x01, 0x1f, 0xfa, 0x00, 0x01, 0x86, 0xdd, 0x6e, 0x00,
- 0x00, 0x00, 0x00, 0x1c, 0x59, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x00, 0x1c, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00,
- 0x00, 0x01, 0xd8, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x05, 0xdc, 0x00, 0x07, 0x00, 0x00,
- 0x1d, 0x46,
-}
-
-func TestPacketOSPF3DBDesc(t *testing.T) {
- p := gopacket.NewPacket(testPacketOSPF3DBDesc, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeOSPF}, t)
- if got, ok := p.Layer(LayerTypeOSPF).(*OSPFv3); ok {
- want := &OSPFv3{
- OSPF: OSPF{
- Version: 3,
- Type: OSPFDatabaseDescription,
- PacketLength: 28,
- RouterID: 0x2020202,
- AreaID: 1,
- Checksum: 0xd826,
- Content: DbDescPkg{
- Options: 0x000013,
- InterfaceMTU: 1500,
- Flags: 0x7,
- DDSeqNumber: 7494,
- },
- },
- Instance: 0,
- Reserved: 0,
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("OSPF packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- } else {
- t.Error("No OSPF layer type found in packet")
- }
-}
-func BenchmarkDecodePacketPacket1(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketOSPF3DBDesc, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// testPacketOSPF3LSRequest is the packet:
-// 14:43:51.673584 IP6 fe80::2 > fe80::1: OSPFv3, LS-Request, length 100
-// 0x0000: c200 1ffa 0001 c201 1ffa 0001 86dd 6e00 ..............n.
-// 0x0010: 0000 0064 5901 fe80 0000 0000 0000 0000 ...dY...........
-// 0x0020: 0000 0000 0002 fe80 0000 0000 0000 0000 ................
-// 0x0030: 0000 0000 0001 0303 0064 0202 0202 0000 .........d......
-// 0x0040: 0001 2c9a 0000 0000 2001 0000 0000 0101 ..,.............
-// 0x0050: 0101 0000 2003 0000 0003 0101 0101 0000 ................
-// 0x0060: 2003 0000 0002 0101 0101 0000 2003 0000 ................
-// 0x0070: 0001 0101 0101 0000 2003 0000 0000 0101 ................
-// 0x0080: 0101 0000 0008 0000 0005 0101 0101 0000 ................
-// 0x0090: 2009 0000 0000 0101 0101 ..........
-var testPacketOSPF3LSRequest = []byte{
- 0xc2, 0x00, 0x1f, 0xfa, 0x00, 0x01, 0xc2, 0x01, 0x1f, 0xfa, 0x00, 0x01, 0x86, 0xdd, 0x6e, 0x00,
- 0x00, 0x00, 0x00, 0x64, 0x59, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x00, 0x64, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00,
- 0x00, 0x01, 0x2c, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
- 0x01, 0x01, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
- 0x20, 0x03, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00,
- 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
- 0x01, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
- 0x20, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-}
-
-func TestPacketOSPF3LSRequest(t *testing.T) {
- p := gopacket.NewPacket(testPacketOSPF3LSRequest, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeOSPF}, t)
- if got, ok := p.Layer(LayerTypeOSPF).(*OSPFv3); ok {
- want := &OSPFv3{
- OSPF: OSPF{
- Version: 3,
- Type: OSPFLinkStateRequest,
- PacketLength: 100,
- RouterID: 0x2020202,
- AreaID: 1,
- Checksum: 0x2c9a,
- Content: []LSReq{
- LSReq{
- LSType: 0x2001,
- LSID: 0x00000000,
- AdvRouter: 0x01010101,
- },
- LSReq{
- LSType: 0x2003,
- LSID: 0x00000003,
- AdvRouter: 0x01010101,
- },
- LSReq{
- LSType: 0x2003,
- LSID: 0x00000002,
- AdvRouter: 0x01010101,
- },
- LSReq{
- LSType: 0x2003,
- LSID: 0x00000001,
- AdvRouter: 0x01010101,
- },
- LSReq{
- LSType: 0x2003,
- LSID: 0x00000000,
- AdvRouter: 0x01010101,
- },
- LSReq{
- LSType: 0x0008,
- LSID: 0x00000005,
- AdvRouter: 0x01010101,
- },
- LSReq{
- LSType: 0x2009,
- LSID: 0x00000000,
- AdvRouter: 0x01010101,
- },
- },
- },
- Instance: 0,
- Reserved: 0,
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("OSPF packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- } else {
- t.Error("No OSPF layer type found in packet")
- }
-}
-func BenchmarkDecodePacketPacket2(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketOSPF3LSRequest, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// testPacketOSPF3LSUpdate is the packet:
-// 14:43:51.681554 IP6 fe80::1 > fe80::2: OSPFv3, LS-Update, length 288
-// 0x0000: c201 1ffa 0001 c200 1ffa 0001 86dd 6e00 ..............n.
-// 0x0010: 0000 0120 5901 fe80 0000 0000 0000 0000 ....Y...........
-// 0x0020: 0000 0000 0001 fe80 0000 0000 0000 0000 ................
-// 0x0030: 0000 0000 0002 0304 0120 0101 0101 0000 ................
-// 0x0040: 0001 e556 0000 0000 0007 0028 2001 0000 ...V.......(....
-// 0x0050: 0000 0101 0101 8000 0002 d13a 0018 0100 ...........:....
-// 0x0060: 0033 0029 2003 0000 0003 0101 0101 8000 .3.)............
-// 0x0070: 0001 6259 0024 0000 004a 4000 0000 2001 ..bY.$...J@.....
-// 0x0080: 0db8 0000 0003 0029 2003 0000 0002 0101 .......)........
-// 0x0090: 0101 8000 0001 baf6 0024 0000 0054 4000 .........$...T@.
-// 0x00a0: 0000 2001 0db8 0000 0004 0029 2003 0000 ...........)....
-// 0x00b0: 0001 0101 0101 8000 0001 eba0 0024 0000 .............$..
-// 0x00c0: 004a 4000 0000 2001 0db8 0000 0034 0029 .J@..........4.)
-// 0x00d0: 2003 0000 0000 0101 0101 8000 0001 0ebd ................
-// 0x00e0: 0024 0000 0040 4000 0000 2001 0db8 0000 .$...@@.........
-// 0x00f0: 0000 0023 0008 0000 0005 0101 0101 8000 ...#............
-// 0x0100: 0002 3d08 0038 0100 0033 fe80 0000 0000 ..=..8...3......
-// 0x0110: 0000 0000 0000 0000 0001 0000 0001 4000 ..............@.
-// 0x0120: 0000 2001 0db8 0000 0012 0023 2009 0000 ...........#....
-// 0x0130: 0000 0101 0101 8000 0001 e8d2 002c 0001 .............,..
-// 0x0140: 2001 0000 0000 0101 0101 4000 000a 2001 ..........@.....
-// 0x0150: 0db8 0000 0012 ......
-var testPacketOSPF3LSUpdate = []byte{
- 0xc2, 0x01, 0x1f, 0xfa, 0x00, 0x01, 0xc2, 0x00, 0x1f, 0xfa, 0x00, 0x01, 0x86, 0xdd, 0x6e, 0x00,
- 0x00, 0x00, 0x01, 0x20, 0x59, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x04, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
- 0x00, 0x01, 0xe5, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x28, 0x20, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00, 0x00, 0x02, 0xd1, 0x3a, 0x00, 0x18, 0x01, 0x00,
- 0x00, 0x33, 0x00, 0x29, 0x20, 0x03, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00,
- 0x00, 0x01, 0x62, 0x59, 0x00, 0x24, 0x00, 0x00, 0x00, 0x4a, 0x40, 0x00, 0x00, 0x00, 0x20, 0x01,
- 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x03, 0x00, 0x29, 0x20, 0x03, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01,
- 0x01, 0x01, 0x80, 0x00, 0x00, 0x01, 0xba, 0xf6, 0x00, 0x24, 0x00, 0x00, 0x00, 0x54, 0x40, 0x00,
- 0x00, 0x00, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x29, 0x20, 0x03, 0x00, 0x00,
- 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00, 0x00, 0x01, 0xeb, 0xa0, 0x00, 0x24, 0x00, 0x00,
- 0x00, 0x4a, 0x40, 0x00, 0x00, 0x00, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x34, 0x00, 0x29,
- 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00, 0x00, 0x01, 0x0e, 0xbd,
- 0x00, 0x24, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x23, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00,
- 0x00, 0x02, 0x3d, 0x08, 0x00, 0x38, 0x01, 0x00, 0x00, 0x33, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00,
- 0x00, 0x00, 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x12, 0x00, 0x23, 0x20, 0x09, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x80, 0x00, 0x00, 0x01, 0xe8, 0xd2, 0x00, 0x2c, 0x00, 0x01,
- 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x40, 0x00, 0x00, 0x0a, 0x20, 0x01,
- 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x12,
-}
-
-func TestPacketOSPF3LSUpdate(t *testing.T) {
- p := gopacket.NewPacket(testPacketOSPF3LSUpdate, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeOSPF}, t)
- if got, ok := p.Layer(LayerTypeOSPF).(*OSPFv3); ok {
- want := &OSPFv3{
- OSPF: OSPF{
- Version: 3,
- Type: OSPFLinkStateUpdate,
- PacketLength: 288,
- RouterID: 0x1010101,
- AreaID: 1,
- Checksum: 0xe556,
- Content: LSUpdate{
- NumOfLSAs: 7,
- LSAs: []LSA{
- LSA{
- LSAheader: LSAheader{
- LSAge: 40,
- LSType: 0x2001,
- LinkStateID: 0x00000000,
- AdvRouter: 0x01010101,
- LSSeqNumber: 0x80000002,
- LSChecksum: 0xd13a,
- Length: 24,
- },
- Content: RouterLSA{
- Flags: 0x1,
- Options: 0x33,
- },
- },
- LSA{
- LSAheader: LSAheader{
- LSAge: 41,
- LSType: 0x2003,
- LinkStateID: 0x00000003,
- AdvRouter: 0x01010101,
- LSSeqNumber: 0x80000001,
- LSChecksum: 0x6259,
- Length: 36,
- },
- Content: InterAreaPrefixLSA{
- Metric: 74,
- PrefixLength: 64,
- PrefixOptions: 0,
- AddressPrefix: []byte{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x03},
- },
- },
- LSA{
- LSAheader: LSAheader{
- LSAge: 41,
- LSType: 0x2003,
- LinkStateID: 0x00000002,
- AdvRouter: 0x01010101,
- LSSeqNumber: 0x80000001,
- LSChecksum: 0xbaf6,
- Length: 36,
- },
- Content: InterAreaPrefixLSA{
- Metric: 84,
- PrefixLength: 64,
- PrefixOptions: 0,
- AddressPrefix: []byte{0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x4},
- },
- },
- LSA{
- LSAheader: LSAheader{
- LSAge: 41,
- LSType: 0x2003,
- LinkStateID: 0x00000001,
- AdvRouter: 0x01010101,
- LSSeqNumber: 0x80000001,
- LSChecksum: 0xeba0,
- Length: 36,
- },
- Content: InterAreaPrefixLSA{
- Metric: 74,
- PrefixLength: 64,
- PrefixOptions: 0,
- AddressPrefix: []byte{0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x34},
- },
- },
- LSA{
- LSAheader: LSAheader{
- LSAge: 41,
- LSType: 0x2003,
- LinkStateID: 0x00000000,
- AdvRouter: 0x01010101,
- LSSeqNumber: 0x80000001,
- LSChecksum: 0xebd,
- Length: 36,
- },
- Content: InterAreaPrefixLSA{
- Metric: 64,
- PrefixLength: 64,
- PrefixOptions: 0,
- AddressPrefix: []byte{0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0},
- },
- },
- LSA{
- LSAheader: LSAheader{
- LSAge: 35,
- LSType: 0x8,
- LinkStateID: 0x00000005,
- AdvRouter: 0x01010101,
- LSSeqNumber: 0x80000002,
- LSChecksum: 0x3d08,
- Length: 56,
- },
- Content: LinkLSA{
- RtrPriority: 1,
- Options: 0x33,
- LinkLocalAddress: []byte{0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
- NumOfPrefixes: 1,
- Prefixes: []Prefix{
- Prefix{
- PrefixLength: 64,
- PrefixOptions: 0,
- AddressPrefix: []byte{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x12},
- },
- },
- },
- },
- LSA{
- LSAheader: LSAheader{
- LSAge: 35,
- LSType: 0x2009,
- LinkStateID: 0x00000000,
- AdvRouter: 0x01010101,
- LSSeqNumber: 0x80000001,
- LSChecksum: 0xe8d2,
- Length: 44,
- },
- Content: IntraAreaPrefixLSA{
- NumOfPrefixes: 1,
- RefLSType: 0x2001,
- RefAdvRouter: 0x01010101,
- Prefixes: []Prefix{
- Prefix{
- PrefixLength: 64,
- PrefixOptions: 0,
- Metric: 10,
- AddressPrefix: []byte{0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x12},
- },
- },
- },
- },
- },
- },
- },
- Instance: 0,
- Reserved: 0,
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("OSPF packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- } else {
- t.Error("No OSPF layer type found in packet")
- }
-}
-func BenchmarkDecodePacketPacket3(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketOSPF3LSUpdate, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-// testPacketOSPF3LSAck is the packet:
-// 14:43:54.185384 IP6 fe80::1 > ff02::5: OSPFv3, LS-Ack, length 136
-// 0x0000: 3333 0000 0005 c200 1ffa 0001 86dd 6e00 33............n.
-// 0x0010: 0000 0088 5901 fe80 0000 0000 0000 0000 ....Y...........
-// 0x0020: 0000 0000 0001 ff02 0000 0000 0000 0000 ................
-// 0x0030: 0000 0000 0005 0305 0088 0101 0101 0000 ................
-// 0x0040: 0001 9d2c 0000 0005 2001 0000 0000 0202 ...,............
-// 0x0050: 0202 8000 0002 b354 0018 0006 2003 0000 .......T........
-// 0x0060: 0003 0202 0202 8000 0001 4473 0024 0006 ..........Ds.$..
-// 0x0070: 2003 0000 0002 0202 0202 8000 0001 9c11 ................
-// 0x0080: 0024 0006 2003 0000 0001 0202 0202 8000 .$..............
-// 0x0090: 0001 cdba 0024 0006 2003 0000 0000 0202 .....$..........
-// 0x00a0: 0202 8000 0001 efd7 0024 0005 0008 0000 .........$......
-// 0x00b0: 0005 0202 0202 8000 0001 5433 002c ..........T3.,
-var testPacketOSPF3LSAck = []byte{
- 0x33, 0x33, 0x00, 0x00, 0x00, 0x05, 0xc2, 0x00, 0x1f, 0xfa, 0x00, 0x01, 0x86, 0xdd, 0x6e, 0x00,
- 0x00, 0x00, 0x00, 0x88, 0x59, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x03, 0x05, 0x00, 0x88, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
- 0x00, 0x01, 0x9d, 0x2c, 0x00, 0x00, 0x00, 0x05, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
- 0x02, 0x02, 0x80, 0x00, 0x00, 0x02, 0xb3, 0x54, 0x00, 0x18, 0x00, 0x06, 0x20, 0x03, 0x00, 0x00,
- 0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x80, 0x00, 0x00, 0x01, 0x44, 0x73, 0x00, 0x24, 0x00, 0x06,
- 0x20, 0x03, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x80, 0x00, 0x00, 0x01, 0x9c, 0x11,
- 0x00, 0x24, 0x00, 0x06, 0x20, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x80, 0x00,
- 0x00, 0x01, 0xcd, 0xba, 0x00, 0x24, 0x00, 0x06, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02,
- 0x02, 0x02, 0x80, 0x00, 0x00, 0x01, 0xef, 0xd7, 0x00, 0x24, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00,
- 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x80, 0x00, 0x00, 0x01, 0x54, 0x33, 0x00, 0x2c,
-}
-
-func TestPacketOSPF3LSAck(t *testing.T) {
- p := gopacket.NewPacket(testPacketOSPF3LSAck, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv6, LayerTypeOSPF}, t)
- if got, ok := p.Layer(LayerTypeOSPF).(*OSPFv3); ok {
- want := &OSPFv3{
- OSPF: OSPF{
- Version: 3,
- Type: OSPFLinkStateAcknowledgment,
- PacketLength: 136,
- RouterID: 0x1010101,
- AreaID: 1,
- Checksum: 0x9d2c,
- Content: []LSAheader{
- LSAheader{
- LSAge: 5,
- LSType: 0x2001,
- LinkStateID: 0x00000000,
- AdvRouter: 0x02020202,
- LSSeqNumber: 0x80000002,
- LSChecksum: 0xb354,
- Length: 24,
- },
- LSAheader{
- LSAge: 6,
- LSType: 0x2003,
- LinkStateID: 0x00000003,
- AdvRouter: 0x02020202,
- LSSeqNumber: 0x80000001,
- LSChecksum: 0x4473,
- Length: 36,
- },
- LSAheader{
- LSAge: 6,
- LSType: 0x2003,
- LinkStateID: 0x00000002,
- AdvRouter: 0x02020202,
- LSSeqNumber: 0x80000001,
- LSChecksum: 0x9c11,
- Length: 36,
- },
- LSAheader{
- LSAge: 6,
- LSType: 0x2003,
- LinkStateID: 0x00000001,
- AdvRouter: 0x02020202,
- LSSeqNumber: 0x80000001,
- LSChecksum: 0xcdba,
- Length: 36,
- },
- LSAheader{
- LSAge: 6,
- LSType: 0x2003,
- LinkStateID: 0x00000000,
- AdvRouter: 0x02020202,
- LSSeqNumber: 0x80000001,
- LSChecksum: 0xefd7,
- Length: 36,
- },
- LSAheader{
- LSAge: 5,
- LSType: 0x0008,
- LinkStateID: 0x00000005,
- AdvRouter: 0x02020202,
- LSSeqNumber: 0x80000001,
- LSChecksum: 0x5433,
- Length: 44,
- },
- },
- },
- Instance: 0,
- Reserved: 0,
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("OSPF packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- } else {
- t.Error("No OSPF layer type found in packet")
- }
-}
-func BenchmarkDecodePacketPacket4(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketOSPF3LSAck, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/prism_test.go b/vendor/github.com/google/gopacket/layers/prism_test.go
deleted file mode 100644
index 136a04c..0000000
--- a/vendor/github.com/google/gopacket/layers/prism_test.go
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2014, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "net"
- "reflect"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-// Generator: python layers/test_creator.py --layerType=LayerTypePrismHeader --linkType=LinkTypePrismHeader --name=Prism%s ~/tmp/dump.pcap
-// http://wiki.wireshark.org/SampleCaptures#Sample_Captures
-
-// testPacketPrism is the packet:
-// 21:32:37.616872 BSSID:Broadcast DA:Broadcast SA:cc:fa:00:ad:79:e8 (oui Unknown) Probe Request () [1.0 2.0 5.5 11.0 Mbit]
-// 0x0000: 4400 0000 9000 0000 7261 3000 0000 0000
-// 0x0010: 0000 0000 0000 0000 4400 0100 0000 0400
-// 0x0020: f9c1 2900 4400 0200 0000 0000 0000 0000
-// 0x0030: 4400 0300 0000 0400 0a00 0000 4400 0400
-// 0x0040: 0000 0400 e1ff ffff 0000 0000 0000 0000
-// 0x0050: 0000 0000 4400 0600 0000 0400 0000 0000
-// 0x0060: 4400 0700 0000 0400 0000 0000 4400 0800
-// 0x0070: 0000 0400 0200 0000 4400 0900 0000 0000
-// 0x0080: 0000 0000 4400 0a00 0000 0400 7e00 0000
-// 0x0090: 4000 0000 ffff ffff ffff ccfa 00ad 79e8
-// 0x00a0: ffff ffff ffff a041 0000 0104 0204 0b16
-// 0x00b0: 3208 0c12 1824 3048 606c 0301 012d 1a2d
-// 0x00c0: 1117 ff00 0000 0000 0000 0000 0000 0000
-// 0x00d0: 0000 0000 0000 0000 007f 0800 0000 0000
-// 0x00e0: 0000 40dd 0900 1018 0200 0010 0000 dd1e
-// 0x00f0: 0090 4c33 2d11 17ff 0000 0000 0000 0000
-// 0x0100: 0000 0000 0000 0000 0000 0000 0000
-
-var testPacketPrism = []byte{
- 0x44, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x72, 0x61, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00,
- 0xf9, 0xc1, 0x29, 0x00, 0x44, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x44, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x04, 0x00, 0xe1, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x44, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x08, 0x00,
- 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00,
- 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xfa, 0x00, 0xad, 0x79, 0xe8,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, 0x41, 0x00, 0x00, 0x01, 0x04, 0x02, 0x04, 0x0b, 0x16,
- 0x32, 0x08, 0x0c, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60, 0x6c, 0x03, 0x01, 0x01, 0x2d, 0x1a, 0x2d,
- 0x11, 0x17, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0xdd, 0x09, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0xdd, 0x1e,
- 0x00, 0x90, 0x4c, 0x33, 0x2d, 0x11, 0x17, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestPacketPrism(t *testing.T) {
- p := gopacket.NewPacket(testPacketPrism, LinkTypePrismHeader, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypePrismHeader, LayerTypeDot11, LayerTypeDot11MgmtProbeReq}, t)
-
- if got, ok := p.Layer(LayerTypePrismHeader).(*PrismHeader); ok {
- want := &PrismHeader{
- BaseLayer: BaseLayer{
- Contents: []uint8{0x44, 0x0, 0x0, 0x0, 0x90, 0x0, 0x0, 0x0, 0x72, 0x61, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x1, 0x0, 0x0, 0x0, 0x4, 0x0, 0xf9, 0xc1, 0x29, 0x0, 0x44, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x3, 0x0, 0x0, 0x0, 0x4, 0x0, 0xa, 0x0, 0x0, 0x0, 0x44, 0x0, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0xe1, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x6, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x7, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0x8, 0x0, 0x0, 0x0, 0x4, 0x0, 0x2, 0x0, 0x0, 0x0, 0x44, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44, 0x0, 0xa, 0x0, 0x0, 0x0, 0x4, 0x0, 0x7e, 0x0, 0x0, 0x0},
- Payload: []uint8{0x40, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xfa, 0x0, 0xad, 0x79, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, 0x41, 0x0, 0x0, 0x1, 0x4, 0x2, 0x4, 0xb, 0x16, 0x32, 0x8, 0xc, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60, 0x6c, 0x3, 0x1, 0x1, 0x2d, 0x1a, 0x2d, 0x11, 0x17, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xdd, 0x9, 0x0, 0x10, 0x18, 0x2, 0x0, 0x0, 0x10, 0x0, 0x0, 0xdd, 0x1e, 0x0, 0x90, 0x4c, 0x33, 0x2d, 0x11, 0x17, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, Code: 0x44, Length: 0x90, DeviceName: "ra0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
- Values: []PrismValue{
- PrismValue{DID: PrismDIDType1HostTime, Status: 0x0, Length: 0x4, Data: []uint8{0xf9, 0xc1, 0x29, 0x0}},
- PrismValue{DID: PrismDIDType1MACTime, Status: 0x0, Length: 0x0, Data: []uint8{}},
- PrismValue{DID: PrismDIDType1Channel, Status: 0x0, Length: 0x4, Data: []uint8{0xa, 0x0, 0x0, 0x0}},
- PrismValue{DID: PrismDIDType1RSSI, Status: 0x0, Length: 0x4, Data: []uint8{0xe1, 0xff, 0xff, 0xff}},
- PrismValue{DID: 0x0, Status: 0x0, Length: 0x0, Data: []uint8{}},
- PrismValue{DID: PrismDIDType1Signal, Status: 0x0, Length: 0x4, Data: []uint8{0x0, 0x0, 0x0, 0x0}},
- PrismValue{DID: PrismDIDType1Noise, Status: 0x0, Length: 0x4, Data: []uint8{0x0, 0x0, 0x0, 0x0}},
- PrismValue{DID: PrismDIDType1Rate, Status: 0x0, Length: 0x4, Data: []uint8{0x2, 0x0, 0x0, 0x0}},
- PrismValue{DID: PrismDIDType1TransmittedFrameIndicator, Status: 0x0, Length: 0x0, Data: []uint8{}},
- PrismValue{DID: PrismDIDType1FrameLength, Status: 0x0, Length: 0x4, Data: []uint8{0x7e, 0x0, 0x0, 0x0}},
- },
- }
-
- if !reflect.DeepEqual(got, want) {
- t.Errorf("RadioTap packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- }
-
- if got, ok := p.Layer(LayerTypeDot11).(*Dot11); ok {
- want := &Dot11{
- BaseLayer: BaseLayer{
- Contents: []uint8{0x40, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xfa, 0x0, 0xad, 0x79, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, 0x41},
- Payload: []uint8{0x0, 0x0, 0x1, 0x4, 0x2, 0x4, 0xb, 0x16, 0x32, 0x8, 0xc, 0x12, 0x18, 0x24, 0x30, 0x48, 0x60, 0x6c, 0x3, 0x1, 0x1, 0x2d, 0x1a, 0x2d, 0x11, 0x17, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xdd, 0x9, 0x0, 0x10, 0x18, 0x2, 0x0, 0x0, 0x10, 0x0, 0x0, 0xdd, 0x1e, 0x0, 0x90, 0x4c, 0x33, 0x2d, 0x11, 0x17, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
- },
- Type: 0x10,
- Proto: 0x0,
- Flags: 0x0,
- DurationID: 0x0,
- Address1: net.HardwareAddr{0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
- Address2: net.HardwareAddr{0xcc, 0xfa, 0x0, 0xad, 0x79, 0xe8},
- Address3: net.HardwareAddr{0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
- Address4: net.HardwareAddr(nil),
- SequenceNumber: 0x041a,
- FragmentNumber: 0x0,
- Checksum: 0x0,
- }
-
- if !reflect.DeepEqual(got, want) {
- t.Errorf("Dot11 packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- }
-}
-
-func BenchmarkDecodePacketPrism(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketPrism, LinkTypePrismHeader, gopacket.NoCopy)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/radiotap_test.go b/vendor/github.com/google/gopacket/layers/radiotap_test.go
deleted file mode 100644
index 4d3c7d0..0000000
--- a/vendor/github.com/google/gopacket/layers/radiotap_test.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package layers
-
-import (
- "github.com/google/gopacket"
- "testing"
-)
-
-// testPacketRadiotap0 is the packet:
-// 09:34:34.799438 1.0 Mb/s 2412 MHz 11b -58dB signal antenna 7 Acknowledgment RA:88:1f:a1:ae:9d:cb
-// 0x0000: 0000 1200 2e48 0000 1002 6c09 a000 c607 .....H....l.....
-// 0x0010: 0000 d400 0000 881f a1ae 9dcb c630 4b4b .............0KK
-var testPacketRadiotap0 = []byte{
- 0x00, 0x00, 0x12, 0x00, 0x2e, 0x48, 0x00, 0x00, 0x10, 0x02, 0x6c, 0x09, 0xa0, 0x00, 0xc6, 0x07,
- 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x88, 0x1f, 0xa1, 0xae, 0x9d, 0xcb, 0xc6, 0x30, 0x4b, 0x4b,
-}
-
-func TestPacketRadiotap0(t *testing.T) {
- p := gopacket.NewPacket(testPacketRadiotap0, LayerTypeRadioTap, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11}, t)
- rt := p.Layer(LayerTypeRadioTap).(*RadioTap)
- if rt.ChannelFrequency != 2412 || rt.DBMAntennaSignal != -58 || rt.Antenna != 7 {
- t.Error("Radiotap decode error")
- }
- if rt.Rate != 2 { // 500Kbps unit
- t.Error("Radiotap Rate decode error")
- }
-}
-func BenchmarkDecodePacketRadiotap0(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketRadiotap0, LayerTypeRadioTap, gopacket.NoCopy)
- }
-}
-
-// testPacketRadiotap1 is the packet:
-// 05:24:21.380948 2412 MHz 11g -36dB signal antenna 5 65.0 Mb/s MCS 7 20 MHz lon GI
-// 0x0000: 0000 1500 2a48 0800 1000 6c09 8004 dc05 ....*H....l.....
-// 0x0010: 0000 0700 0748 112c 0000 3a9d aaf0 191c .....H.,..:.....
-// 0x0020: aba7 f213 9d00 3a9d aaf0 1970 b2ee a9f1 ......:....p....
-// 0x0030: 16 .
-var testPacketRadiotap1 = []byte{
- 0x00, 0x00, 0x15, 0x00, 0x2a, 0x48, 0x08, 0x00, 0x10, 0x00, 0x6c, 0x09, 0x80, 0x04, 0xdc, 0x05,
- 0x00, 0x00, 0x07, 0x00, 0x07, 0x48, 0x11, 0x2c, 0x00, 0x00, 0x3a, 0x9d, 0xaa, 0xf0, 0x19, 0x1c,
- 0xab, 0xa7, 0xf2, 0x13, 0x9d, 0x00, 0x3a, 0x9d, 0xaa, 0xf0, 0x19, 0x70, 0xb2, 0xee, 0xa9, 0xf1,
- 0x16,
-}
-
-func TestPacketRadiotap1(t *testing.T) {
- p := gopacket.NewPacket(testPacketRadiotap1, LayerTypeRadioTap, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeRadioTap, LayerTypeDot11}, t)
- rt := p.Layer(LayerTypeRadioTap).(*RadioTap)
- if rt.ChannelFrequency != 2412 || rt.DBMAntennaSignal != -36 || rt.Antenna != 5 {
- t.Error("Radiotap decode error")
- }
- if !rt.MCS.Known.MCSIndex() || rt.MCS.MCS != 7 {
- t.Error("Radiotap MCS error")
- }
- if !rt.MCS.Known.Bandwidth() || rt.MCS.Flags.Bandwidth() != 0 {
- t.Error("Radiotap bandwidth error")
- }
- if !rt.MCS.Known.GuardInterval() || rt.MCS.Flags.ShortGI() {
- t.Error("Radiotap GI error")
- }
-}
-func BenchmarkDecodePacketRadiotap1(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketRadiotap1, LayerTypeRadioTap, gopacket.NoCopy)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/sflow_test.go b/vendor/github.com/google/gopacket/layers/sflow_test.go
deleted file mode 100644
index ca0f2ab..0000000
--- a/vendor/github.com/google/gopacket/layers/sflow_test.go
+++ /dev/null
@@ -1,1246 +0,0 @@
-// Copyright 2014 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package layers
-
-import (
- "github.com/google/gopacket"
- "net"
- "reflect"
- "testing"
-)
-
-// Test packet collected from live network. See the test below for contents
-var SFlowTestPacket1 = []byte{
- 0x84, 0x2b, 0x2b, 0x16, 0x8b, 0x62, 0xf0, 0x50, 0x56, 0x85, 0x3a, 0xfd, 0x08, 0x00, 0x45, 0x00,
- 0x05, 0xbc, 0x9c, 0x04, 0x40, 0x00, 0xff, 0x11, 0xc7, 0x00, 0x0a, 0x01, 0xff, 0x0e, 0x0a, 0x01,
- 0x00, 0x1b, 0xc7, 0x57, 0x18, 0xc7, 0x05, 0xa8, 0x22, 0x3b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
- 0x00, 0x01, 0x0a, 0x01, 0xf8, 0x16, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x9d, 0xfb, 0x40, 0x49,
- 0xc6, 0xcd, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x26,
- 0x27, 0xe8, 0x00, 0x00, 0x02, 0x13, 0x00, 0x00, 0x3e, 0x80, 0x50, 0xbd, 0xe5, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x05, 0xd2, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x8a, 0xb0, 0xe7, 0x54, 0x41, 0xb8, 0xca, 0x3a, 0x6d,
- 0xf0, 0x40, 0x08, 0x00, 0x45, 0x00, 0x05, 0xc0, 0x6b, 0xaa, 0x40, 0x00, 0x40, 0x06, 0x8f, 0x41,
- 0x0a, 0x01, 0x0e, 0x16, 0x36, 0xf0, 0xeb, 0x45, 0x76, 0xfd, 0x00, 0x50, 0xca, 0x77, 0xef, 0x96,
- 0xfc, 0x28, 0x63, 0x40, 0x50, 0x10, 0x00, 0x3c, 0x64, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
- 0xf4, 0x00, 0x00, 0x02, 0x77, 0x00, 0x00, 0x00, 0xfd, 0x3b, 0x8c, 0xe7, 0x04, 0x4a, 0x2d, 0xb2,
- 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x01, 0x48, 0xcc, 0x11, 0x0d, 0xe3, 0x00,
- 0x26, 0x85, 0x30, 0x00, 0x00, 0x07, 0x66, 0x00, 0x02, 0xd0, 0x8a, 0x00, 0x02, 0xce, 0xf0, 0x00,
- 0x29, 0x7e, 0x80, 0x00, 0x02, 0xd0, 0x98, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x26, 0x85, 0x30, 0x00,
- 0x00, 0x00, 0xf4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x5e, 0x5c, 0x1e, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
- 0x07, 0xd0, 0xb1, 0x2f, 0xa2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x05, 0xee, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x8a,
- 0xb0, 0xe7, 0x54, 0x41, 0xb8, 0xca, 0x3a, 0x6f, 0xbe, 0xd8, 0x08, 0x00, 0x45, 0x00, 0x05, 0xdc,
- 0x9f, 0xfd, 0x40, 0x00, 0x40, 0x06, 0x6a, 0xfa, 0x0a, 0x01, 0x0e, 0x10, 0x0a, 0x01, 0x08, 0x13,
- 0x23, 0x84, 0xb7, 0x22, 0x8a, 0xc9, 0x50, 0xb5, 0x4e, 0x10, 0x2a, 0x87, 0x80, 0x10, 0x06, 0x01,
- 0x10, 0xa6, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0xef, 0x1f, 0xf4, 0x07, 0x99, 0x3a, 0xd8, 0x5b,
- 0x01, 0x46, 0x09, 0x00, 0x0c, 0x00, 0x0c, 0x3c, 0xac, 0x4a, 0x1b, 0x06, 0x04, 0x78, 0x78, 0x4e,
- 0xc2, 0x05, 0x46, 0x43, 0x06, 0x04, 0x78, 0x78, 0xee, 0x9c, 0x00, 0x41, 0xef, 0x05, 0x81, 0x32,
- 0x1b, 0x06, 0x04, 0x78, 0x78, 0x56, 0x72, 0x05, 0x4e, 0x92, 0x00, 0x96, 0x39, 0x00, 0xea, 0x3f,
- 0x01, 0x15, 0xa3, 0x08, 0x04, 0x42, 0x6a, 0x82, 0x87, 0x08, 0x05, 0xcc, 0x00, 0x04, 0x00, 0x00,
- 0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x5a,
- 0xcd, 0xd0, 0x00, 0x00, 0x02, 0x55, 0x00, 0x00, 0x07, 0xd0, 0x95, 0x67, 0xe1, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x46, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x8a, 0xb0, 0xe7, 0x54, 0x41, 0xb8, 0xca, 0x3a, 0x6f,
- 0x11, 0x28, 0x08, 0x00, 0x45, 0x00, 0x04, 0x34, 0xdb, 0x36, 0x40, 0x00, 0x40, 0x06, 0x38, 0xac,
- 0x0a, 0x01, 0x0e, 0x11, 0x0a, 0x01, 0x00, 0xcf, 0x23, 0x84, 0xa0, 0x3f, 0x3c, 0xce, 0xd5, 0x4a,
- 0x72, 0x0b, 0x5d, 0x1a, 0x80, 0x10, 0x06, 0x01, 0x8a, 0x50, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a,
- 0xef, 0x1f, 0xa2, 0xba, 0xe6, 0xfa, 0xae, 0xb3, 0xfe, 0xcf, 0x00, 0x19, 0xcf, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0xb9, 0x79, 0xdd, 0x42, 0x00, 0x00, 0x02, 0x84, 0x9b, 0xa9, 0x02, 0xe2, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x06, 0x32, 0x39, 0x35, 0x34, 0x33, 0x36, 0x00, 0x00, 0x02, 0x70, 0xcd,
- 0x16, 0x40, 0xa6, 0x98, 0x88, 0x24, 0x06, 0x50, 0xb0, 0xf4, 0xee, 0x03, 0xa6, 0xfa, 0x87, 0xaf,
- 0xc1, 0x99, 0x52, 0x0d, 0x07, 0xa8, 0x00, 0x00, 0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x20, 0xf2, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00,
- 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x54, 0x0b, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x03, 0x00, 0x01, 0x29, 0x82, 0x6d, 0xb0, 0x6c, 0x0b, 0xcb, 0x0d, 0xdd, 0x96, 0x00, 0x06,
- 0xa8, 0xc6, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x34, 0x02, 0x35, 0x58, 0x7c, 0x9e, 0x56, 0x64, 0x25, 0x71, 0x00, 0x70,
- 0x5a, 0xc4, 0x00, 0x09, 0x08, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x5e, 0x5c, 0x1f, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
- 0x07, 0xd0, 0xb1, 0x2f, 0xaa, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x05, 0xee, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x3c, 0x8a,
- 0xb0, 0xe7, 0x54, 0x41, 0xb8, 0xca, 0x3a, 0x6f, 0xbe, 0xd8, 0x08, 0x00, 0x45, 0x00, 0x05, 0xdc,
- 0x0f, 0xba, 0x40, 0x00, 0x40, 0x06, 0xf4, 0x3f, 0x0a, 0x01, 0x0e, 0x10, 0x0a, 0x01, 0x0f, 0x11,
- 0x23, 0x84, 0xcd, 0xc0, 0xf4, 0x0e, 0x90, 0x23, 0xd7, 0x32, 0x8b, 0x31, 0x80, 0x10, 0x00, 0x1d,
- 0x6b, 0x12, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0xef, 0x1f, 0xf4, 0x28, 0xef, 0x1f, 0xec, 0x76,
- 0xaa, 0x25, 0x01, 0x04, 0xc0, 0xac, 0xfe, 0x25, 0x01, 0x8e, 0x25, 0x01, 0x16, 0xc7, 0x28, 0xfe,
- 0x7e, 0x70, 0xfe, 0x7e, 0x70, 0x52, 0x7e, 0x70, 0x15, 0x9b, 0xfe, 0x35, 0x01, 0xfe, 0x35, 0x01,
- 0x42, 0x35, 0x01, 0xfe, 0x95, 0x77, 0xfe, 0x95, 0x77, 0xfe, 0x95, 0x77, 0x52, 0x95, 0x77, 0x00,
- 0xd2, 0xfe, 0x70, 0x02, 0x92, 0x70, 0x02, 0x16, 0x60, 0x22, 0x00, 0x7e, 0xb2, 0x15, 0x00, 0x00,
- 0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x5a,
- 0xcd, 0xd1, 0x00, 0x00, 0x02, 0x55, 0x00, 0x00, 0x07, 0xd0, 0x95, 0x67, 0xe9, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x55, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x05, 0xee, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0xb8, 0xca, 0x3a, 0x6f, 0xbe, 0xd8, 0xb8, 0xca, 0x3a, 0x6f,
- 0x11, 0x28, 0x08, 0x00, 0x45, 0x00, 0x05, 0xdc, 0xfe, 0x05, 0x40, 0x00, 0x40, 0x06, 0x06, 0xf4,
- 0x0a, 0x01, 0x0e, 0x11, 0x0a, 0x01, 0x0e, 0x10, 0x23, 0x84, 0xfa, 0x29, 0xae, 0xd4, 0x95, 0x03,
- 0x99, 0xb8, 0x77, 0xd0, 0x80, 0x10, 0x00, 0x1d, 0x6f, 0x4f, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a,
- 0xef, 0x1f, 0xa2, 0xcc, 0xef, 0x1f, 0xf4, 0x2c, 0xfe, 0xdb, 0x05, 0xa1, 0xdb, 0x04, 0x9e, 0xc0,
- 0xfe, 0x30, 0x08, 0xb2, 0x30, 0x08, 0xda, 0x2b, 0xbd, 0xfe, 0x2a, 0x01, 0xfe, 0x2a, 0x01, 0x21,
- 0x2a, 0x00, 0xb2, 0xfe, 0x57, 0xb0, 0xb6, 0x57, 0xb0, 0x14, 0x74, 0xf4, 0xf0, 0x4c, 0x05, 0x68,
- 0xfe, 0x54, 0x02, 0xfe, 0x54, 0x02, 0xd2, 0x54, 0x02, 0x00, 0xbe, 0xfe, 0x32, 0x0f, 0xb6, 0x32,
- 0x0f, 0x14, 0x2e, 0x16, 0xaf, 0x47, 0x00, 0x00, 0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x94, 0x01, 0x5e, 0x5c, 0x20, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
- 0x07, 0xd0, 0xb1, 0x2f, 0xb2, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x57, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x42, 0x3c, 0x8a,
- 0xb0, 0xe7, 0x54, 0x41, 0xb8, 0xca, 0x3a, 0x6f, 0xbe, 0xd8, 0x08, 0x00, 0x45, 0x00, 0x00, 0x34,
- 0xa8, 0x23, 0x40, 0x00, 0x40, 0x06, 0x61, 0x7f, 0x0a, 0x01, 0x0e, 0x10, 0x0a, 0x01, 0x0f, 0x10,
- 0x97, 0x91, 0x23, 0x84, 0x24, 0xfa, 0x91, 0xf7, 0xb4, 0xe8, 0xf3, 0x2d, 0x80, 0x10, 0x00, 0xab,
- 0x7b, 0x7d, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0xef, 0x1f, 0xf4, 0x36, 0xef, 0x1f, 0xdc, 0xde,
- 0x00, 0x00, 0x00, 0x00, 0x03, 0xe9, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-// Test collected from the SFlow reference agent. Contains dummy data for several record types
-// that wern't available on an actual network for sampling.
-var SFlowTestPacket2 = []byte{
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x45, 0x00,
- 0x04, 0x88, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11, 0x38, 0x63, 0x7f, 0x00, 0x00, 0x01, 0x7f, 0x00,
- 0x00, 0x01, 0xdc, 0xb8, 0x18, 0xc7, 0x04, 0x74, 0x02, 0x88, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
- 0x00, 0x01, 0xc0, 0xa8, 0x5b, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x3a, 0x00, 0x00,
- 0xcb, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x54, 0x00, 0x02,
- 0x1f, 0x6e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x1f, 0x6e, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
- 0x03, 0xed, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6f,
- 0x72, 0x67, 0x00, 0x00, 0x00, 0x0f, 0x68, 0x6f, 0x73, 0x74, 0x31, 0x2e, 0x73, 0x66, 0x6c, 0x6f,
- 0x77, 0x2e, 0x6f, 0x72, 0x67, 0x06, 0x00, 0x00, 0x03, 0xec, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00,
- 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x75, 0x73, 0x65,
- 0x72, 0xdc, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x00, 0x00, 0x03, 0xeb, 0x00, 0x00,
- 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0c, 0x0b, 0x0a, 0x00, 0x00, 0xfd, 0xe9, 0x00, 0x00,
- 0x00, 0x7b, 0x00, 0x00, 0x03, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
- 0x00, 0x03, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x00, 0x03, 0x15, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x2b, 0x67, 0x00, 0x00, 0x56, 0xce, 0x00, 0x00,
- 0x82, 0x35, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00,
- 0x03, 0x78, 0x00, 0x00, 0x03, 0xe7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
- 0x00, 0x0d, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x42, 0x00, 0x0c,
- 0x29, 0x67, 0xa0, 0xe5, 0x00, 0x50, 0x56, 0xc0, 0x00, 0x09, 0x08, 0x00, 0x45, 0x10, 0x00, 0x34,
- 0x92, 0xc3, 0x40, 0x00, 0x40, 0x06, 0x70, 0x8d, 0xc0, 0xa8, 0x5b, 0x01, 0xc0, 0xa8, 0x5b, 0x11,
- 0xd3, 0xdd, 0x00, 0x16, 0xe3, 0x2e, 0x84, 0x77, 0x13, 0x6d, 0xc5, 0x53, 0x80, 0x10, 0x1f, 0xf7,
- 0xe7, 0x7d, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x2e, 0xc6, 0x70, 0x3a, 0x00, 0x0f, 0x84, 0x7a,
- 0xbc, 0xd2, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x1f, 0x6f, 0x00, 0x00,
- 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x1f, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff,
- 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xed, 0x00, 0x00,
- 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6f, 0x72, 0x67, 0x00, 0x00,
- 0x00, 0x0f, 0x68, 0x6f, 0x73, 0x74, 0x31, 0x2e, 0x73, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6f, 0x72,
- 0x67, 0x03, 0x00, 0x00, 0x03, 0xec, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00,
- 0x00, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x77, 0x00, 0x00,
- 0x00, 0x6a, 0x00, 0x00, 0x00, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x00, 0x00, 0x03, 0xeb, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
- 0x00, 0x01, 0x0d, 0x0c, 0x0b, 0x0a, 0x00, 0x00, 0xfd, 0xe9, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00,
- 0x03, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
- 0x00, 0x7b, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x00, 0x03, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x03, 0x00, 0x00, 0x2b, 0x67, 0x00, 0x00, 0x56, 0xce, 0x00, 0x00, 0x82, 0x35, 0x00, 0x00,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x03, 0x78, 0x00, 0x00,
- 0x03, 0xe7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00,
- 0x01, 0xb0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
- 0x01, 0x86, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x50, 0x56, 0xc0, 0x00, 0x09,
- 0x00, 0x0c, 0x29, 0x67, 0xa0, 0xe5, 0x08, 0x00, 0x45, 0x10, 0x01, 0x74, 0xbb, 0xfa, 0x40, 0x00,
- 0x40, 0x06, 0x46, 0x16, 0xc0, 0xa8, 0x5b, 0x11, 0xc0, 0xa8, 0x5b, 0x01, 0x00, 0x16, 0xd3, 0xdd,
- 0x13, 0x6d, 0xc5, 0x53, 0xe3, 0x2e, 0x84, 0x77, 0x80, 0x18, 0x01, 0x10, 0x38, 0xca, 0x00, 0x00,
- 0x01, 0x01, 0x08, 0x0a, 0x00, 0x0f, 0x84, 0x7d, 0x2e, 0xc6, 0x70, 0x3a, 0xe3, 0x92, 0x97, 0x1a,
- 0x67, 0x3b, 0xac, 0xec, 0xfa, 0x43, 0x71, 0x5e, 0x36, 0xa1, 0x0a, 0xc6, 0x1a, 0x6a, 0xed, 0x08,
- 0xac, 0xf4, 0xbe, 0xd8, 0x36, 0x59, 0xf6, 0xe2, 0x3d, 0x34, 0x26, 0xf2, 0x42, 0xbd, 0x32, 0xd3,
- 0x37, 0x52, 0xb8, 0xf4, 0x38, 0xf0, 0xf4, 0xeb, 0x76, 0x3b, 0xda, 0x23, 0xf1, 0x92, 0x96, 0xca,
- 0xbb, 0x9c, 0x20, 0x0a, 0x38, 0x37, 0x6f, 0xd9, 0x26, 0xe6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
- 0x01, 0x54, 0x00, 0x02, 0x1f, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02,
- 0x1f, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x00,
- 0x00, 0x04, 0x00, 0x00, 0x03, 0xed, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x14, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x66, 0x6c,
- 0x6f, 0x77, 0x2e, 0x6f, 0x72, 0x67, 0x00, 0x00, 0x00, 0x0f, 0x68, 0x6f, 0x73, 0x74, 0x31, 0x2e,
- 0x73, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x6f, 0x72, 0x67, 0xff, 0x00, 0x00, 0x03, 0xec, 0x00, 0x00,
- 0x00, 0x2c, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x20, 0x75, 0x73, 0x65, 0x72, 0x77, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x10, 0x64, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x00, 0x00,
- 0x03, 0xeb, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x0d, 0x0c, 0x0b, 0x0a, 0x00, 0x00,
- 0xfd, 0xe9, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x03, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x00,
- 0x03, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x2b, 0x67, 0x00, 0x00,
- 0x56, 0xce, 0x00, 0x00, 0x82, 0x35, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
- 0x03, 0x09, 0x00, 0x00, 0x03, 0x78, 0x00, 0x00, 0x03, 0xe7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
- 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
- 0x00, 0x42, 0x00, 0x0c, 0x29, 0x67, 0xa0, 0xe5, 0x00, 0x50, 0x56, 0xc0, 0x00, 0x09, 0x08, 0x00,
- 0x45, 0x10, 0x00, 0x34, 0x65, 0x7d, 0x40, 0x00, 0x40, 0x06, 0x9d, 0xd3, 0xc0, 0xa8, 0x5b, 0x01,
- 0xc0, 0xa8, 0x5b, 0x11, 0xd3, 0xdd, 0x00, 0x16, 0xe3, 0x2e, 0x84, 0x77, 0x13, 0x6d, 0xc6, 0x93,
- 0x80, 0x10, 0x1f, 0xec, 0xe6, 0x43, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x2e, 0xc6, 0x70, 0x3c,
- 0x00, 0x0f, 0x84, 0x7d, 0x00, 0x50,
-}
-
-// processor counter sample
-var SFlowTestPacket3 = []byte{
- 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01,
- 0x0a, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x64,
- 0x00, 0x01, 0x78, 0xe0, 0x73, 0x03, 0x48, 0x78,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04,
- 0x00, 0x00, 0x00, 0x34, 0x00, 0x01, 0x78, 0xe0,
- 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xe9,
- 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x05, 0xaa,
- 0x00, 0x00, 0x05, 0x5a, 0x00, 0x00, 0x05, 0x32,
- 0x00, 0x00, 0x00, 0x00, 0xe7, 0x8d, 0x70, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x55, 0xe7, 0x70, 0x00,
-}
-
-// expanded flow sample - extended switch flow record
-var SFlowTestPacket4 = []byte{
- 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01,
- 0xc0, 0xa8, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x02, 0x7e, 0x32, 0xe0, 0xe4, 0x7c,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x01, 0x23,
- 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x01, 0x00,
- 0x00, 0x00, 0x03, 0x37, 0x00, 0x00, 0x56, 0x23,
- 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xe9,
- 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03,
- 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05,
- 0xff, 0xff, 0xff, 0xff,
-}
-
-// expanded flow sample - extended router flow record
-var SFlowTestPacket5 = []byte{
- 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01,
- 0xc0, 0xa8, 0x01, 0x12, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x02, 0x7e, 0x32, 0xe0, 0xe4, 0x7c,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x01, 0x23,
- 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x01, 0x00,
- 0x00, 0x00, 0x03, 0x34, 0x00, 0x00, 0x56, 0x02,
- 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xea,
- 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01,
- 0xc0, 0xa8, 0x01, 0x21, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x80,
-}
-
-// expanded flow sample - Ipv4 Tunnel Ingress record
-var SFlowTestPacket6 = []byte{
- 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x7f, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0x01, 0xbd, 0x50,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x48,
- 0x00, 0x00, 0x00, 0x74, 0x02, 0x00, 0x03, 0xe8, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f,
- 0xc0, 0xa8, 0x00, 0x54, 0xc0, 0xa8, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-// expanded flow sample - Ipv4 Tunnel Egress record
-var SFlowTestPacket7 = []byte{
- 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x7f, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x42, 0x68,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x48,
- 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x03, 0xe9, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c,
- 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xa8, 0x00, 0x54,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
-}
-
-// expanded flow sample - extended router flow record IPv6 next hop
-var SFlowTestPacket8 = []byte{
- 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01,
- 0xc0, 0xa8, 0x01, 0x12, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x02, 0x7e, 0x32, 0xe0, 0xe4, 0x7c,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x01, 0x23,
- 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x01, 0x00,
- 0x00, 0x00, 0x03, 0x34, 0x00, 0x00, 0x56, 0x02,
- 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x04,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xea,
- 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x02,
- 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
-}
-
-func TestDecodeUDPSFlow(t *testing.T) {
- p := gopacket.NewPacket(SFlowTestPacket1, LayerTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeSFlow}, t)
- if got, ok := p.TransportLayer().(*UDP); ok {
- want := &UDP{
- BaseLayer: BaseLayer{SFlowTestPacket1[34:42], SFlowTestPacket1[42:]},
- sPort: []byte{199, 87},
- dPort: []byte{24, 199},
- SrcPort: 51031,
- DstPort: 6343,
- Checksum: 8763,
- Length: 1448,
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("UDP layer mismatch, \nwant %#v\ngot %#v\n", want, got)
- }
- } else {
- t.Error("Transport layer packet not UDP")
- }
-}
-
-func TestDecodeSFlowDatagram(t *testing.T) {
- p := gopacket.NewPacket(SFlowTestPacket1, LayerTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeSFlow}, t)
- if got, ok := p.ApplicationLayer().(*SFlowDatagram); ok {
- want := &SFlowDatagram{
- DatagramVersion: uint32(5),
- AgentAddress: []byte{0xa, 0x1, 0xf8, 0x16},
- SubAgentID: uint32(17),
- SequenceNumber: uint32(40443),
- AgentUptime: uint32(1078576845),
- SampleCount: uint32(7),
- FlowSamples: []SFlowFlowSample{
- SFlowFlowSample{
- EnterpriseID: 0x0,
- Format: 0x1,
- SampleLength: 0xd0,
- SequenceNumber: 0x2627e8,
- SourceIDClass: 0x0,
- SourceIDIndex: 0x213,
- SamplingRate: 0x3e80,
- SamplePool: 0x50bde580,
- Dropped: 0x0,
- InputInterface: 0x213,
- OutputInterface: 0x0,
- RecordCount: 0x2,
- Records: []SFlowRecord{
- SFlowRawPacketFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x1,
- FlowDataLength: 0x90,
- },
- HeaderProtocol: 0x1,
- FrameLength: 0x5d2,
- PayloadRemoved: 0x4,
- HeaderLength: 0x80,
- Header: gopacket.NewPacket(SFlowTestPacket1[134:262], LayerTypeEthernet, gopacket.Default),
- },
- SFlowExtendedSwitchFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x3e9,
- FlowDataLength: 0x10,
- },
- IncomingVLAN: 0x202,
- IncomingVLANPriority: 0x0,
- OutgoingVLAN: 0x0,
- OutgoingVLANPriority: 0x0,
- },
- },
- },
- SFlowFlowSample{
- EnterpriseID: 0x0,
- Format: 0x1,
- SampleLength: 0xd0,
- SequenceNumber: 0x15e5c1e,
- SourceIDClass: 0x0,
- SourceIDIndex: 0x257,
- SamplingRate: 0x7d0,
- SamplePool: 0xb12fa290,
- Dropped: 0x0,
- InputInterface: 0x257,
- OutputInterface: 0x0,
- RecordCount: 0x2,
- Records: []SFlowRecord{
- SFlowRawPacketFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x1,
- FlowDataLength: 0x90,
- },
- HeaderProtocol: 0x1,
- FrameLength: 0x5ee,
- PayloadRemoved: 0x4,
- HeaderLength: 0x80,
- Header: gopacket.NewPacket(SFlowTestPacket1[350:478], LayerTypeEthernet, gopacket.Default),
- },
- SFlowExtendedSwitchFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x3e9,
- FlowDataLength: 0x10,
- },
- IncomingVLAN: 0x202,
- IncomingVLANPriority: 0x0,
- OutgoingVLAN: 0x0,
- OutgoingVLANPriority: 0x0,
- },
- },
- },
- SFlowFlowSample{
- EnterpriseID: 0x0,
- Format: 0x1,
- SampleLength: 0xd0,
- SequenceNumber: 0x15acdd0,
- SourceIDClass: 0x0,
- SourceIDIndex: 0x255,
- SamplingRate: 0x7d0,
- SamplePool: 0x9567e130,
- Dropped: 0x0,
- InputInterface: 0x255,
- OutputInterface: 0x0,
- RecordCount: 0x2,
- Records: []SFlowRecord{
- SFlowRawPacketFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x1,
- FlowDataLength: 0x90,
- },
- HeaderProtocol: 0x1,
- FrameLength: 0x446,
- PayloadRemoved: 0x4,
- HeaderLength: 0x80,
- Header: gopacket.NewPacket(SFlowTestPacket1[566:694], LayerTypeEthernet, gopacket.Default),
- },
- SFlowExtendedSwitchFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x3e9,
- FlowDataLength: 0x10,
- },
- IncomingVLAN: 0x202,
- IncomingVLANPriority: 0x0,
- OutgoingVLAN: 0x0,
- OutgoingVLANPriority: 0x0,
- },
- },
- },
- SFlowFlowSample{
- EnterpriseID: 0x0,
- Format: 0x1,
- SampleLength: 0xd0,
- SequenceNumber: 0x15e5c1f,
- SourceIDClass: 0x0,
- SourceIDIndex: 0x257,
- SamplingRate: 0x7d0,
- SamplePool: 0xb12faa60,
- Dropped: 0x0,
- InputInterface: 0x257,
- OutputInterface: 0x0,
- RecordCount: 0x2,
- Records: []SFlowRecord{
- SFlowRawPacketFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x1,
- FlowDataLength: 0x90,
- },
- HeaderProtocol: 0x1,
- FrameLength: 0x5ee,
- PayloadRemoved: 0x4,
- HeaderLength: 0x80,
- Header: gopacket.NewPacket(SFlowTestPacket1[958:1086], LayerTypeEthernet, gopacket.Default),
- },
- SFlowExtendedSwitchFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x3e9,
- FlowDataLength: 0x10,
- },
- IncomingVLAN: 0x202,
- IncomingVLANPriority: 0x0,
- OutgoingVLAN: 0x0,
- OutgoingVLANPriority: 0x0,
- },
- },
- },
- SFlowFlowSample{
- EnterpriseID: 0x0,
- Format: 0x1,
- SampleLength: 0xd0,
- SequenceNumber: 0x15acdd1,
- SourceIDClass: 0x0,
- SourceIDIndex: 0x255,
- SamplingRate: 0x7d0,
- SamplePool: 0x9567e900,
- Dropped: 0x0,
- InputInterface: 0x255,
- OutputInterface: 0x257,
- RecordCount: 0x2,
- Records: []SFlowRecord{
- SFlowRawPacketFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x1,
- FlowDataLength: 0x90,
- },
- HeaderProtocol: 0x1,
- FrameLength: 0x5ee,
- PayloadRemoved: 0x4,
- HeaderLength: 0x80,
- Header: gopacket.NewPacket(SFlowTestPacket1[1174:1302], LayerTypeEthernet, gopacket.Default),
- },
- SFlowExtendedSwitchFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x3e9,
- FlowDataLength: 0x10,
- },
- IncomingVLAN: 0x202,
- IncomingVLANPriority: 0x0,
- OutgoingVLAN: 0x202,
- OutgoingVLANPriority: 0x0,
- },
- },
- },
- SFlowFlowSample{
- EnterpriseID: 0x0,
- Format: 0x1,
- SampleLength: 0x94,
- SequenceNumber: 0x15e5c20,
- SourceIDClass: 0x0,
- SourceIDIndex: 0x257,
- SamplingRate: 0x7d0,
- SamplePool: 0xb12fb230,
- Dropped: 0x0,
- InputInterface: 0x257,
- OutputInterface: 0x0,
- RecordCount: 0x2,
- Records: []SFlowRecord{
- SFlowRawPacketFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x1,
- FlowDataLength: 0x54,
- },
- HeaderProtocol: 0x1,
- FrameLength: 0x46,
- PayloadRemoved: 0x4,
- HeaderLength: 0x42,
- Header: gopacket.NewPacket(SFlowTestPacket1[1390:1458], LayerTypeEthernet, gopacket.Default),
- },
- SFlowExtendedSwitchFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x3e9,
- FlowDataLength: 0x10,
- },
- IncomingVLAN: 0x202,
- IncomingVLANPriority: 0x0,
- OutgoingVLAN: 0x0,
- OutgoingVLANPriority: 0x0,
- },
- },
- },
- },
- CounterSamples: []SFlowCounterSample{
- SFlowCounterSample{
- Format: 0x2,
- SampleLength: 0xa8,
- SequenceNumber: 0x20f2,
- SourceIDClass: 0x0,
- SourceIDIndex: 0x20a,
- RecordCount: 0x2,
- Records: []SFlowRecord{
- SFlowGenericInterfaceCounters{
- SFlowBaseCounterRecord: SFlowBaseCounterRecord{
- EnterpriseID: 0x0,
- Format: 0x1,
- FlowDataLength: 0x58,
- },
- IfIndex: 0x20a,
- IfType: 0x6,
- IfSpeed: 0x2540be400,
- IfDirection: 0x1,
- IfStatus: 0x3,
- IfInOctets: 0x129826db06c0b,
- IfInUcastPkts: 0xcb0ddd96,
- IfInMulticastPkts: 0x6a8c6,
- IfInBroadcastPkts: 0x7b,
- IfInDiscards: 0x0,
- IfInErrors: 0x0,
- IfInUnknownProtos: 0x0,
- IfOutOctets: 0x340235587c9e,
- IfOutUcastPkts: 0x56642571,
- IfOutMulticastPkts: 0x705ac4,
- IfOutBroadcastPkts: 0x908f1,
- IfOutDiscards: 0x0,
- IfOutErrors: 0x0,
- IfPromiscuousMode: 0x0,
- },
- SFlowEthernetCounters{
- SFlowBaseCounterRecord: SFlowBaseCounterRecord{
- EnterpriseID: 0x0,
- Format: 0x2,
- FlowDataLength: 0x34,
- },
- AlignmentErrors: 0x0,
- FCSErrors: 0x0,
- SingleCollisionFrames: 0x0,
- MultipleCollisionFrames: 0x0,
- SQETestErrors: 0x0,
- DeferredTransmissions: 0x0,
- LateCollisions: 0x0,
- ExcessiveCollisions: 0x0,
- InternalMacTransmitErrors: 0x0,
- CarrierSenseErrors: 0x0,
- FrameTooLongs: 0x0,
- InternalMacReceiveErrors: 0x0,
- SymbolErrors: 0x0,
- },
- },
- },
- },
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
- }
- } else {
- t.Error("Application layer packet not UDP")
- }
-}
-
-func TestPacketPacket0(t *testing.T) {
- p := gopacket.NewPacket(SFlowTestPacket2, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeSFlow}, t)
- if got, ok := p.ApplicationLayer().(*SFlowDatagram); ok {
- want := &SFlowDatagram{
- DatagramVersion: uint32(5),
- AgentAddress: []byte{192, 168, 91, 17},
- SubAgentID: uint32(0),
- SequenceNumber: uint32(46394),
- AgentUptime: uint32(52000),
- SampleCount: uint32(3),
- FlowSamples: []SFlowFlowSample{
- SFlowFlowSample{
- EnterpriseID: 0x0,
- Format: 0x1,
- SampleLength: 340,
- SequenceNumber: 139118,
- SourceIDClass: 0,
- SourceIDIndex: 3,
- SamplingRate: 1,
- SamplePool: 139118,
- Dropped: 0,
- InputInterface: 3,
- OutputInterface: 1073741823,
- RecordCount: 4,
- Records: []SFlowRecord{
- SFlowExtendedURLRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0,
- Format: 1005,
- FlowDataLength: 48,
- },
- Direction: SFlowURLsrc,
- URL: "http://www.sflow.org",
- Host: "host1.sflow.org",
- },
- SFlowExtendedUserFlow{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0,
- Format: 1004,
- FlowDataLength: 44,
- },
- SourceCharSet: SFlowCSUTF8,
- SourceUserID: "source user",
- DestinationCharSet: SFlowCSUTF8,
- DestinationUserID: "destination user",
- },
- SFlowExtendedGatewayFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0,
- Format: 1003,
- FlowDataLength: 100,
- },
- NextHop: []byte{0x0d, 0x0c, 0x0b, 0x0a},
- AS: 65001,
- SourceAS: 123,
- PeerAS: 999,
- ASPathCount: 3,
- ASPath: []SFlowASDestination{
- SFlowASDestination{
- Type: SFlowASSequence,
- Count: 3,
- Members: []uint32{123, 456, 789},
- },
- SFlowASDestination{
- Type: SFlowASSet,
- Count: 3,
- Members: []uint32{11111, 22222, 33333},
- },
- SFlowASDestination{
- Type: SFlowASSequence,
- Count: 3,
- Members: []uint32{777, 888, 999},
- },
- },
- Communities: []uint32{12, 13},
- LocalPref: 432,
- },
- SFlowRawPacketFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x1,
- FlowDataLength: 84,
- },
- HeaderProtocol: 1,
- FrameLength: 70,
- PayloadRemoved: 4,
- HeaderLength: 0x42,
- Header: gopacket.NewPacket(SFlowTestPacket2[350:418], LayerTypeEthernet, gopacket.Default),
- },
- },
- },
- SFlowFlowSample{
- EnterpriseID: 0x0,
- Format: 0x1,
- SampleLength: 400,
- SequenceNumber: 139119,
- SourceIDClass: 0,
- SourceIDIndex: 3,
- SamplingRate: 1,
- SamplePool: 139119,
- Dropped: 0,
- InputInterface: 1073741823,
- OutputInterface: 3,
- RecordCount: 4,
- Records: []SFlowRecord{
- SFlowExtendedURLRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0,
- Format: 1005,
- FlowDataLength: 48,
- },
- Direction: SFlowURLsrc,
- URL: "http://www.sflow.org",
- Host: "host1.sflow.org",
- },
- SFlowExtendedUserFlow{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0,
- Format: 1004,
- FlowDataLength: 44,
- },
- SourceCharSet: SFlowCSUTF8,
- SourceUserID: "source user",
- DestinationCharSet: SFlowCSUTF8,
- DestinationUserID: "destination user",
- },
- SFlowExtendedGatewayFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0,
- Format: 1003,
- FlowDataLength: 100,
- },
- NextHop: []byte{0x0d, 0x0c, 0x0b, 0x0a},
- AS: 65001,
- SourceAS: 123,
- PeerAS: 999,
- ASPathCount: 3,
- ASPath: []SFlowASDestination{
- SFlowASDestination{
- Type: SFlowASSequence,
- Count: 3,
- Members: []uint32{123, 456, 789},
- },
- SFlowASDestination{
- Type: SFlowASSet,
- Count: 3,
- Members: []uint32{11111, 22222, 33333},
- },
- SFlowASDestination{
- Type: SFlowASSequence,
- Count: 3,
- Members: []uint32{777, 888, 999},
- },
- },
- Communities: []uint32{12, 13},
- LocalPref: 432,
- },
- SFlowRawPacketFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x1,
- FlowDataLength: 144,
- },
- HeaderProtocol: 1,
- FrameLength: 390,
- PayloadRemoved: 4,
- HeaderLength: 0x80,
- Header: gopacket.NewPacket(SFlowTestPacket2[698:826], LayerTypeEthernet, gopacket.Default),
- },
- },
- },
- SFlowFlowSample{
- EnterpriseID: 0x0,
- Format: 0x1,
- SampleLength: 340,
- SequenceNumber: 139120,
- SourceIDClass: 0,
- SourceIDIndex: 3,
- SamplingRate: 1,
- SamplePool: 139120,
- Dropped: 0,
- InputInterface: 3,
- OutputInterface: 1073741823,
- RecordCount: 4,
- Records: []SFlowRecord{
- SFlowExtendedURLRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0,
- Format: 1005,
- FlowDataLength: 48,
- },
- Direction: SFlowURLsrc,
- URL: "http://www.sflow.org",
- Host: "host1.sflow.org",
- },
- SFlowExtendedUserFlow{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0,
- Format: 1004,
- FlowDataLength: 44,
- },
- SourceCharSet: SFlowCSUTF8,
- SourceUserID: "source user",
- DestinationCharSet: SFlowCSUTF8,
- DestinationUserID: "destination user",
- },
- SFlowExtendedGatewayFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0,
- Format: 1003,
- FlowDataLength: 100,
- },
- NextHop: []byte{0x0d, 0x0c, 0x0b, 0x0a},
- AS: 65001,
- SourceAS: 123,
- PeerAS: 999,
- ASPathCount: 3,
- ASPath: []SFlowASDestination{
- SFlowASDestination{
- Type: SFlowASSequence,
- Count: 3,
- Members: []uint32{123, 456, 789},
- },
- SFlowASDestination{
- Type: SFlowASSet,
- Count: 3,
- Members: []uint32{11111, 22222, 33333},
- },
- SFlowASDestination{
- Type: SFlowASSequence,
- Count: 3,
- Members: []uint32{777, 888, 999},
- },
- },
- Communities: []uint32{12, 13},
- LocalPref: 432,
- },
- SFlowRawPacketFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: 0x1,
- FlowDataLength: 84,
- },
- HeaderProtocol: 1,
- FrameLength: 70,
- PayloadRemoved: 4,
- HeaderLength: 0x42,
- Header: gopacket.NewPacket(SFlowTestPacket2[1106:1174], LayerTypeEthernet, gopacket.Default),
- },
- },
- },
- },
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
- }
- } else {
- t.Error("Application layer packet not UDP")
- }
-}
-
-func TestDecodeProcessorCounter(t *testing.T) {
- p := gopacket.NewPacket(SFlowTestPacket3, LayerTypeSFlow, gopacket.Default)
-
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
- got := p.ApplicationLayer().(*SFlowDatagram)
-
- want := &SFlowDatagram{
- DatagramVersion: uint32(5),
- AgentAddress: []byte{0x0a, 0x14, 0x04, 0x00},
- SubAgentID: uint32(0x64),
- SequenceNumber: uint32(96480),
- AgentUptime: uint32(1929595000),
- SampleCount: uint32(1),
- CounterSamples: []SFlowCounterSample{
- SFlowCounterSample{
- Format: SFlowTypeExpandedCounterSample,
- SampleLength: 0x34,
- SequenceNumber: 0x0178e0,
- SourceIDClass: 0x00,
- SourceIDIndex: 0x01,
- RecordCount: 0x01,
- Records: []SFlowRecord{
- SFlowProcessorCounters{
- SFlowBaseCounterRecord: SFlowBaseCounterRecord{
- EnterpriseID: 0x0,
- Format: SFlowTypeProcessorCounters,
- FlowDataLength: 0x1c,
- },
- FiveSecCpu: 0x05aa,
- OneMinCpu: 0x055a,
- FiveMinCpu: 0x0532,
- TotalMemory: 0xe78d7000,
- FreeMemory: 0x55e77000,
- },
- },
- },
- },
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
- }
-}
-
-func TestDecodeExtendedSwitchFlow(t *testing.T) {
- p := gopacket.NewPacket(SFlowTestPacket4, LayerTypeSFlow, gopacket.Default)
-
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
- got := p.ApplicationLayer().(*SFlowDatagram)
-
- want := &SFlowDatagram{
- DatagramVersion: uint32(5),
- AgentAddress: []byte{0xc0, 0xa8, 0x01, 0x07},
- SubAgentID: uint32(0x00),
- SequenceNumber: uint32(0x027e),
- AgentUptime: uint32(0x32e0e47c),
- SampleCount: uint32(1),
- FlowSamples: []SFlowFlowSample{
- SFlowFlowSample{
- Format: SFlowTypeFlowSample,
- SampleLength: 0x38,
- SequenceNumber: 0x123,
- SourceIDClass: 0x00,
- SourceIDIndex: 0x1d,
- SamplingRate: 0x100,
- SamplePool: 0x337,
- Dropped: 0x5623,
- InputInterfaceFormat: 0x00,
- InputInterface: 0x1d,
- OutputInterfaceFormat: 0x00,
- OutputInterface: 0x04,
- RecordCount: 0x01,
- Records: []SFlowRecord{
- SFlowExtendedSwitchFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: SFlowTypeExtendedSwitchFlow,
- FlowDataLength: 0x10,
- },
- IncomingVLAN: 0x03,
- IncomingVLANPriority: 0x02,
- OutgoingVLAN: 0x05,
- OutgoingVLANPriority: 0xffffffff,
- },
- },
- },
- },
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
- }
-}
-
-func TestDecodeExtendedRouterFlow(t *testing.T) {
- p := gopacket.NewPacket(SFlowTestPacket5, LayerTypeSFlow, gopacket.Default)
-
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
- got := p.ApplicationLayer().(*SFlowDatagram)
-
- want := &SFlowDatagram{
- DatagramVersion: uint32(5),
- AgentAddress: []byte{0xc0, 0xa8, 0x01, 0x12},
- SubAgentID: uint32(0x00),
- SequenceNumber: uint32(0x027e),
- AgentUptime: uint32(0x32e0e47c),
- SampleCount: uint32(1),
- FlowSamples: []SFlowFlowSample{
- SFlowFlowSample{
- Format: SFlowTypeFlowSample,
- SampleLength: 0x34,
- SequenceNumber: 0x123,
- SourceIDClass: 0x00,
- SourceIDIndex: 0x1d,
- SamplingRate: 0x100,
- SamplePool: 0x334,
- Dropped: 0x5602,
- InputInterfaceFormat: 0x00,
- InputInterface: 0x1d,
- OutputInterfaceFormat: 0x00,
- OutputInterface: 0x04,
- RecordCount: 0x01,
- Records: []SFlowRecord{
- SFlowExtendedRouterFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: SFlowTypeExtendedRouterFlow,
- FlowDataLength: 0x10,
- },
- NextHop: []byte{0xc0, 0xa8, 0x01, 0x21},
- NextHopSourceMask: 0xffffffff,
- NextHopDestinationMask: 0xffffff80,
- },
- },
- },
- },
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
- }
-}
-
-func TestDecodeExtendedRouterFlowIPv6(t *testing.T) {
- p := gopacket.NewPacket(SFlowTestPacket8, LayerTypeSFlow, gopacket.Default)
-
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
- got := p.ApplicationLayer().(*SFlowDatagram)
-
- want := &SFlowDatagram{
- DatagramVersion: uint32(5),
- AgentAddress: []byte{0xc0, 0xa8, 0x01, 0x12},
- SubAgentID: uint32(0x00),
- SequenceNumber: uint32(0x027e),
- AgentUptime: uint32(0x32e0e47c),
- SampleCount: uint32(1),
- FlowSamples: []SFlowFlowSample{
- SFlowFlowSample{
- Format: SFlowTypeFlowSample,
- SampleLength: 0x34,
- SequenceNumber: 0x123,
- SourceIDClass: 0x00,
- SourceIDIndex: 0x1d,
- SamplingRate: 0x100,
- SamplePool: 0x334,
- Dropped: 0x5602,
- InputInterfaceFormat: 0x00,
- InputInterface: 0x1d,
- OutputInterfaceFormat: 0x00,
- OutputInterface: 0x04,
- RecordCount: 0x01,
- Records: []SFlowRecord{
- SFlowExtendedRouterFlowRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: SFlowTypeExtendedRouterFlow,
- FlowDataLength: 0x1c,
- },
- NextHop: []byte{0x20, 0x01, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
- NextHopSourceMask: 0xffffffff,
- NextHopDestinationMask: 0xffffff80,
- },
- },
- },
- },
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
- }
-}
-
-func TestDecodeExtendedIpv4TunnelIngressFlow(t *testing.T) {
- p := gopacket.NewPacket(SFlowTestPacket6, LayerTypeSFlow, gopacket.Default)
-
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
- got := p.ApplicationLayer().(*SFlowDatagram)
-
- want := &SFlowDatagram{
- DatagramVersion: uint32(5),
- AgentAddress: []byte{0x7f, 0x0, 0x0, 0x1},
- SubAgentID: uint32(0),
- SequenceNumber: uint32(0x72),
- AgentUptime: uint32(0x1bd50),
- SampleCount: uint32(1),
- FlowSamples: []SFlowFlowSample{
- SFlowFlowSample{
- Format: SFlowTypeFlowSample,
- SampleLength: 0x48,
- SequenceNumber: 0x74,
- SourceIDClass: 0x0,
- SourceIDIndex: 0x20003e8,
- SamplingRate: 0x1,
- SamplePool: 0x74,
- Dropped: 0x0,
- InputInterfaceFormat: 0x0,
- InputInterface: 0x0,
- OutputInterfaceFormat: 0x0,
- OutputInterface: 0x80000001,
- RecordCount: 0x1,
- Records: []SFlowRecord{
- SFlowExtendedIpv4TunnelIngressRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: SFlowTypeExtendedIpv4TunnelIngressFlow,
- FlowDataLength: 0x20,
- },
- SFlowIpv4Record: SFlowIpv4Record{
- Length: 0x0,
- Protocol: 0x2f,
- IPSrc: net.IP{0xc0, 0xa8, 0x0, 0x54},
- IPDst: net.IP{0xc0, 0xa8, 0x0, 0x53},
- PortSrc: 0x0,
- PortDst: 0x0,
- TCPFlags: 0x0,
- TOS: 0x0,
- },
- },
- },
- },
- },
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
- }
-}
-
-func TestDecodeExtendedIpv4TunnelEgressFlow(t *testing.T) {
- p := gopacket.NewPacket(SFlowTestPacket7, LayerTypeSFlow, gopacket.Default)
-
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeSFlow}, t)
-
- got := p.ApplicationLayer().(*SFlowDatagram)
-
- want := &SFlowDatagram{
- DatagramVersion: uint32(5),
- AgentAddress: []byte{0x7f, 0x0, 0x0, 0x1},
- SubAgentID: uint32(1),
- SequenceNumber: uint32(0x12),
- AgentUptime: uint32(0x4268),
- SampleCount: uint32(1),
- FlowSamples: []SFlowFlowSample{
- SFlowFlowSample{
- Format: SFlowTypeFlowSample,
- SampleLength: 0x48,
- SequenceNumber: 0x12,
- SourceIDClass: 0x0,
- SourceIDIndex: 0x20003e9,
- SamplingRate: 0x1,
- SamplePool: 0x12,
- Dropped: 0x0,
- InputInterfaceFormat: 0x0,
- InputInterface: 0x6c,
- OutputInterfaceFormat: 0x0,
- OutputInterface: 0x80000001,
- RecordCount: 0x1,
- Records: []SFlowRecord{
- SFlowExtendedIpv4TunnelEgressRecord{
- SFlowBaseFlowRecord: SFlowBaseFlowRecord{
- EnterpriseID: 0x0,
- Format: SFlowTypeExtendedIpv4TunnelEgressFlow,
- FlowDataLength: 0x20,
- },
- SFlowIpv4Record: SFlowIpv4Record{
- Length: 0x0,
- Protocol: 0x0,
- IPSrc: net.IP{0x0, 0x0, 0x0, 0x0},
- IPDst: net.IP{0xc0, 0xa8, 0x0, 0x54},
- PortSrc: 0x0,
- PortDst: 0x0,
- TCPFlags: 0x0,
- TOS: 0x0,
- },
- },
- },
- },
- },
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("SFlow layer mismatch, \nwant:\n\n%#v\ngot:\n\n\n%#v\n\n", want, got)
- }
-}
-
-func BenchmarkDecodeSFlowPacket1(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(SFlowTestPacket1, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-func BenchmarkDecodeSFlowPacket2(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(SFlowTestPacket2, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-func BenchmarkDecodeSFlowPacket3(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(SFlowTestPacket3, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-func BenchmarkDecodeSFlowPacket4(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(SFlowTestPacket4, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-func BenchmarkDecodeSFlowLayerPacket1(b *testing.B) {
- var sflow SFlowDatagram
- for i := 0; i < b.N; i++ {
- sflow.DecodeFromBytes(SFlowTestPacket1[ /*eth*/ 14+ /*ipv4*/ 20+ /*udp*/ 8:], gopacket.NilDecodeFeedback)
- }
-}
-
-func BenchmarkDecodeSFlowLayerPacket2(b *testing.B) {
- var sflow SFlowDatagram
- for i := 0; i < b.N; i++ {
- sflow.DecodeFromBytes(SFlowTestPacket2[ /*eth*/ 14+ /*ipv4*/ 20+ /*udp*/ 8:], gopacket.NilDecodeFeedback)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/tcp_test.go b/vendor/github.com/google/gopacket/layers/tcp_test.go
deleted file mode 100644
index 56a6aaa..0000000
--- a/vendor/github.com/google/gopacket/layers/tcp_test.go
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2016, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "testing"
-
- "github.com/google/gopacket"
-)
-
-func TestTCPOptionKindString(t *testing.T) {
- testData := []struct {
- o *TCPOption
- s string
- }{
- {&TCPOption{
- OptionType: TCPOptionKindNop,
- OptionLength: 1,
- },
- "TCPOption(NOP:)"},
- {&TCPOption{
- OptionType: TCPOptionKindMSS,
- OptionLength: 4,
- OptionData: []byte{0x12, 0x34},
- },
- "TCPOption(MSS:4660 0x1234)"},
- {&TCPOption{
- OptionType: TCPOptionKindTimestamps,
- OptionLength: 10,
- OptionData: []byte{0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01},
- },
- "TCPOption(Timestamps:2/1 0x0000000200000001)"}}
-
- for _, tc := range testData {
- if s := tc.o.String(); s != tc.s {
- t.Errorf("expected %#v string to be %s, got %s", tc.o, tc.s, s)
- }
- }
-}
-
-func TestTCPSerializePadding(t *testing.T) {
- tcp := &TCP{}
- tcp.Options = append(tcp.Options, TCPOption{
- OptionType: TCPOptionKindNop,
- OptionLength: 1,
- })
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true}
- err := gopacket.SerializeLayers(buf, opts, tcp)
- if err != nil {
- t.Fatal(err)
- }
- if len(buf.Bytes())%4 != 0 {
- t.Errorf("TCP data of len %d not padding to 32 bit boundary", len(buf.Bytes()))
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/tcpip_test.go b/vendor/github.com/google/gopacket/layers/tcpip_test.go
deleted file mode 100644
index c002e84..0000000
--- a/vendor/github.com/google/gopacket/layers/tcpip_test.go
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2014, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "github.com/google/gopacket"
- "net"
- "testing"
-)
-
-const (
- ipv4UDPChecksum = uint16(0xbc5f) // Wireshark
- ipv6UDPChecksumWithIPv6DstOpts = uint16(0x4d21) // Wireshark
- ipv6UDPChecksumJumbogram = uint16(0xcda8)
-)
-
-func createIPv4ChecksumTestLayer() (ip4 *IPv4) {
- ip4 = &IPv4{}
- ip4.Version = 4
- ip4.TTL = 64
- ip4.SrcIP = net.ParseIP("192.0.2.1")
- ip4.DstIP = net.ParseIP("198.51.100.1")
- return
-}
-
-func createIPv6ChecksumTestLayer() (ip6 *IPv6) {
- ip6 = &IPv6{}
- ip6.Version = 6
- ip6.NextHeader = IPProtocolNoNextHeader
- ip6.HopLimit = 64
- ip6.SrcIP = net.ParseIP("2001:db8::1")
- ip6.DstIP = net.ParseIP("2001:db8::2")
- return
-}
-
-func createIPv6DestinationChecksumTestLayer() (dst *IPv6Destination) {
- tlv := &IPv6DestinationOption{}
- tlv.OptionType = 0x01 //PadN
- tlv.OptionData = []byte{0x00, 0x00, 0x00, 0x00}
- dst = &IPv6Destination{}
- dst.Options = append(dst.Options, tlv)
- dst.NextHeader = IPProtocolNoNextHeader
- return
-}
-
-func createUDPChecksumTestLayer() (udp *UDP) {
- udp = &UDP{}
- udp.SrcPort = UDPPort(12345)
- udp.DstPort = UDPPort(9999)
- return
-}
-
-func TestIPv4UDPChecksum(t *testing.T) {
- var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 2)
- var u *UDP
- var err error
-
- ip4 := createIPv4ChecksumTestLayer()
- ip4.Protocol = IPProtocolUDP
- serialize = append(serialize, ip4)
-
- udp := createUDPChecksumTestLayer()
- udp.SetNetworkLayerForChecksum(ip4)
- serialize = append(serialize, udp)
-
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true}
- err = gopacket.SerializeLayers(buf, opts, serialize...)
- if err != nil {
- t.Fatal(err)
- }
-
- p := gopacket.NewPacket(buf.Bytes(), LinkTypeRaw, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Fatal("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeIPv4, LayerTypeUDP}, t)
-
- if l, ok := p.Layer(LayerTypeUDP).(*UDP); !ok {
- t.Fatal("No UDP layer type found in packet")
- } else {
- u = l
- }
- got := u.Checksum
- want := ipv4UDPChecksum
- if got != want {
- t.Errorf("Bad checksum:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
-}
-
-func TestIPv6UDPChecksumWithIPv6DstOpts(t *testing.T) {
- var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 3)
- var u *UDP
- var err error
-
- ip6 := createIPv6ChecksumTestLayer()
- ip6.NextHeader = IPProtocolIPv6Destination
- serialize = append(serialize, ip6)
-
- dst := createIPv6DestinationChecksumTestLayer()
- dst.NextHeader = IPProtocolUDP
- serialize = append(serialize, dst)
-
- udp := createUDPChecksumTestLayer()
- udp.SetNetworkLayerForChecksum(ip6)
- serialize = append(serialize, udp)
-
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true}
- err = gopacket.SerializeLayers(buf, opts, serialize...)
- if err != nil {
- t.Fatal(err)
- }
-
- p := gopacket.NewPacket(buf.Bytes(), LinkTypeRaw, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Fatal("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeIPv6, LayerTypeIPv6Destination, LayerTypeUDP}, t)
-
- if l, ok := p.Layer(LayerTypeUDP).(*UDP); !ok {
- t.Fatal("No UDP layer type found in packet")
- } else {
- u = l
- }
- got := u.Checksum
- want := ipv6UDPChecksumWithIPv6DstOpts
- if got != want {
- t.Errorf("Bad checksum:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
-}
-
-func TestIPv6JumbogramUDPChecksum(t *testing.T) {
- var serialize []gopacket.SerializableLayer = make([]gopacket.SerializableLayer, 0, 4)
- var u *UDP
- var err error
-
- ip6 := &IPv6{}
- ip6.Version = 6
- ip6.NextHeader = IPProtocolUDP
- ip6.HopLimit = 64
- ip6.SrcIP = net.ParseIP("2001:db8::1")
- ip6.DstIP = net.ParseIP("2001:db8::2")
- serialize = append(serialize, ip6)
-
- udp := &UDP{}
- udp.SrcPort = UDPPort(12345)
- udp.DstPort = UDPPort(9999)
- udp.SetNetworkLayerForChecksum(ip6)
- serialize = append(serialize, udp)
-
- payload := make([]byte, ipv6MaxPayloadLength+1)
- for i := range payload {
- payload[i] = 0xfe
- }
- serialize = append(serialize, gopacket.Payload(payload))
-
- buf := gopacket.NewSerializeBuffer()
- opts := gopacket.SerializeOptions{FixLengths: true, ComputeChecksums: true}
- err = gopacket.SerializeLayers(buf, opts, serialize...)
- if err != nil {
- t.Fatal(err)
- }
-
- p := gopacket.NewPacket(buf.Bytes(), LinkTypeRaw, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Fatal("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeIPv6, LayerTypeIPv6HopByHop, LayerTypeUDP, gopacket.LayerTypePayload}, t)
-
- if l, ok := p.Layer(LayerTypeUDP).(*UDP); !ok {
- t.Fatal("No UDP layer type found in packet")
- } else {
- u = l
- }
- got := u.Checksum
- want := ipv6UDPChecksumJumbogram
- if got != want {
- t.Errorf("Bad checksum:\ngot:\n%#v\n\nwant:\n%#v\n\n", got, want)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/udp_test.go b/vendor/github.com/google/gopacket/layers/udp_test.go
deleted file mode 100644
index e71236c..0000000
--- a/vendor/github.com/google/gopacket/layers/udp_test.go
+++ /dev/null
@@ -1,372 +0,0 @@
-// Copyright 2012, Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "reflect"
- "testing"
-
- "github.com/google/gopacket"
-)
-
-// testUDPPacketDNS is the packet:
-// 10:33:07.883637 IP 172.16.255.1.53 > 172.29.20.15.35181: 47320 7/0/0 MX ALT2.ASPMX.L.GOOGLE.com. 20, MX ASPMX2.GOOGLEMAIL.com. 30, MX ASPMX3.GOOGLEMAIL.com. 30, MX ASPMX4.GOOGLEMAIL.com. 30, MX ASPMX5.GOOGLEMAIL.com. 30, MX ASPMX.L.GOOGLE.com. 10, MX ALT1.ASPMX.L.GOOGLE.com. 20 (202)
-// 0x0000: 24be 0527 0b17 001f cab3 75c0 0800 4500 $..'......u...E.
-// 0x0010: 00e6 68cf 0000 3f11 a6f9 ac10 ff01 ac1d ..h...?.........
-// 0x0020: 140f 0035 896d 00d2 754a b8d8 8180 0001 ...5.m..uJ......
-// 0x0030: 0007 0000 0000 0478 6b63 6403 636f 6d00 .......xkcd.com.
-// 0x0040: 000f 0001 c00c 000f 0001 0000 0258 0018 .............X..
-// 0x0050: 0014 0441 4c54 3205 4153 504d 5801 4c06 ...ALT2.ASPMX.L.
-// 0x0060: 474f 4f47 4c45 c011 c00c 000f 0001 0000 GOOGLE..........
-// 0x0070: 0258 0016 001e 0641 5350 4d58 320a 474f .X.....ASPMX2.GO
-// 0x0080: 4f47 4c45 4d41 494c c011 c00c 000f 0001 OGLEMAIL........
-// 0x0090: 0000 0258 000b 001e 0641 5350 4d58 33c0 ...X.....ASPMX3.
-// 0x00a0: 53c0 0c00 0f00 0100 0002 5800 0b00 1e06 S.........X.....
-// 0x00b0: 4153 504d 5834 c053 c00c 000f 0001 0000 ASPMX4.S........
-// 0x00c0: 0258 000b 001e 0641 5350 4d58 35c0 53c0 .X.....ASPMX5.S.
-// 0x00d0: 0c00 0f00 0100 0002 5800 0400 0ac0 2dc0 ........X.....-.
-// 0x00e0: 0c00 0f00 0100 0002 5800 0900 1404 414c ........X.....AL
-// 0x00f0: 5431 c02d T1.-
-// Packet generated by doing DNS query for 'xkcd.com'
-var testUDPPacketDNS = []byte{
- 0x24, 0xbe, 0x05, 0x27, 0x0b, 0x17, 0x00, 0x1f, 0xca, 0xb3, 0x75, 0xc0, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0xe6, 0x68, 0xcf, 0x00, 0x00, 0x3f, 0x11, 0xa6, 0xf9, 0xac, 0x10, 0xff, 0x01, 0xac, 0x1d,
- 0x14, 0x0f, 0x00, 0x35, 0x89, 0x6d, 0x00, 0xd2, 0x75, 0x4a, 0xb8, 0xd8, 0x81, 0x80, 0x00, 0x01,
- 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x04, 0x78, 0x6b, 0x63, 0x64, 0x03, 0x63, 0x6f, 0x6d, 0x00,
- 0x00, 0x0f, 0x00, 0x01, 0xc0, 0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x02, 0x58, 0x00, 0x18,
- 0x00, 0x14, 0x04, 0x41, 0x4c, 0x54, 0x32, 0x05, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x01, 0x4c, 0x06,
- 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0xc0, 0x11, 0xc0, 0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00,
- 0x02, 0x58, 0x00, 0x16, 0x00, 0x1e, 0x06, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x32, 0x0a, 0x47, 0x4f,
- 0x4f, 0x47, 0x4c, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0xc0, 0x11, 0xc0, 0x0c, 0x00, 0x0f, 0x00, 0x01,
- 0x00, 0x00, 0x02, 0x58, 0x00, 0x0b, 0x00, 0x1e, 0x06, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x33, 0xc0,
- 0x53, 0xc0, 0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x02, 0x58, 0x00, 0x0b, 0x00, 0x1e, 0x06,
- 0x41, 0x53, 0x50, 0x4d, 0x58, 0x34, 0xc0, 0x53, 0xc0, 0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00,
- 0x02, 0x58, 0x00, 0x0b, 0x00, 0x1e, 0x06, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x35, 0xc0, 0x53, 0xc0,
- 0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x02, 0x58, 0x00, 0x04, 0x00, 0x0a, 0xc0, 0x2d, 0xc0,
- 0x0c, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x02, 0x58, 0x00, 0x09, 0x00, 0x14, 0x04, 0x41, 0x4c,
- 0x54, 0x31, 0xc0, 0x2d,
-}
-
-func TestUDPPacketDNS(t *testing.T) {
- p := gopacket.NewPacket(testUDPPacketDNS, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeDNS}, t)
- if got, ok := p.TransportLayer().(*UDP); ok {
- want := &UDP{
- BaseLayer: BaseLayer{
- Contents: []byte{0x0, 0x35, 0x89, 0x6d, 0x0, 0xd2, 0x75, 0x4a},
- Payload: []byte{0xb8, 0xd8, 0x81, 0x80, 0x0, 0x1, 0x0,
- 0x7, 0x0, 0x0, 0x0, 0x0, 0x4, 0x78, 0x6b, 0x63, 0x64, 0x3, 0x63, 0x6f,
- 0x6d, 0x0, 0x0, 0xf, 0x0, 0x1, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1, 0x0, 0x0,
- 0x2, 0x58, 0x0, 0x18, 0x0, 0x14, 0x4, 0x41, 0x4c, 0x54, 0x32, 0x5, 0x41,
- 0x53, 0x50, 0x4d, 0x58, 0x1, 0x4c, 0x6, 0x47, 0x4f, 0x4f, 0x47, 0x4c,
- 0x45, 0xc0, 0x11, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1, 0x0, 0x0, 0x2, 0x58, 0x0,
- 0x16, 0x0, 0x1e, 0x6, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x32, 0xa, 0x47, 0x4f,
- 0x4f, 0x47, 0x4c, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0xc0, 0x11, 0xc0, 0xc,
- 0x0, 0xf, 0x0, 0x1, 0x0, 0x0, 0x2, 0x58, 0x0, 0xb, 0x0, 0x1e, 0x6, 0x41,
- 0x53, 0x50, 0x4d, 0x58, 0x33, 0xc0, 0x53, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1,
- 0x0, 0x0, 0x2, 0x58, 0x0, 0xb, 0x0, 0x1e, 0x6, 0x41, 0x53, 0x50, 0x4d,
- 0x58, 0x34, 0xc0, 0x53, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1, 0x0, 0x0, 0x2,
- 0x58, 0x0, 0xb, 0x0, 0x1e, 0x6, 0x41, 0x53, 0x50, 0x4d, 0x58, 0x35, 0xc0,
- 0x53, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1, 0x0, 0x0, 0x2, 0x58, 0x0, 0x4, 0x0,
- 0xa, 0xc0, 0x2d, 0xc0, 0xc, 0x0, 0xf, 0x0, 0x1, 0x0, 0x0, 0x2, 0x58, 0x0,
- 0x9, 0x0, 0x14, 0x4, 0x41, 0x4c, 0x54, 0x31, 0xc0, 0x2d},
- },
- SrcPort: 53,
- DstPort: 35181,
- Length: 210,
- Checksum: 30026,
- sPort: []byte{0x0, 0x35},
- dPort: []byte{0x89, 0x6d},
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("UDP packet mismatch:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- } else {
- t.Error("Transport layer packet not UDP")
- }
-}
-
-func loadDNS(dnspacket []byte, t *testing.T) *DNS {
- p := gopacket.NewPacket(dnspacket, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4,
- LayerTypeUDP, LayerTypeDNS}, t)
-
- dnsL := p.Layer(LayerTypeDNS)
- if dnsL == nil {
- t.Error("No DNS Layer found")
- }
-
- dns, ok := dnsL.(*DNS)
- if !ok {
- return nil
- }
- return dns
-}
-
-var testDNSQueryA = []byte{
- 0xfe, 0x54, 0x00, 0x3e, 0x00, 0x96, 0x52, 0x54, /* .T.>..RT */
- 0x00, 0xbd, 0x1c, 0x70, 0x08, 0x00, 0x45, 0x00, /* ...p..E. */
- 0x00, 0x3c, 0x22, 0xe0, 0x00, 0x00, 0x40, 0x11, /* .<"...@. */
- 0xe2, 0x38, 0xc0, 0xa8, 0x7a, 0x46, 0xc0, 0xa8, /* .8..zF.. */
- 0x7a, 0x01, 0xc3, 0x35, 0x00, 0x35, 0x00, 0x28, /* z..5.5.( */
- 0x75, 0xd2, 0x52, 0x41, 0x01, 0x00, 0x00, 0x01, /* u.RA.... */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x77, /* .......w */
- 0x77, 0x77, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, /* ww.googl */
- 0x65, 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x01, /* e.com... */
- 0x00, 0x01, /* .. */
-}
-
-func TestDNSQueryA(t *testing.T) {
- dns := loadDNS(testDNSQueryA, t)
- if dns == nil {
- t.Fatal("Failed to get a pointer to DNS struct")
- }
-
- if uint16(len(dns.Questions)) != dns.QDCount {
- t.Fatal("Invalid query decoding, not the right number of questions")
- }
-
- if string(dns.Questions[0].Name) != "www.google.com" {
- t.Errorf("Invalid query decoding, expecting 'www.google.com', got '%s'",
- dns.Questions[0].Name)
- }
- if dns.Questions[0].Class != DNSClassIN {
- t.Errorf("Invalid query decoding, expecting Class IN, got '%d'",
- dns.Questions[0].Class)
- }
-
- if dns.Questions[0].Type != DNSTypeA {
- t.Errorf("Invalid query decoding, expecting Type A, got '%d'",
- dns.Questions[0].Type)
- }
-}
-
-var testDNSRRA = []byte{
- 0x52, 0x54, 0x00, 0xbd, 0x1c, 0x70, 0xfe, 0x54, /* RT...p.T */
- 0x00, 0x3e, 0x00, 0x96, 0x08, 0x00, 0x45, 0x00, /* .>....E. */
- 0x01, 0x24, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11, /* .$..@.@. */
- 0xc4, 0x30, 0xc0, 0xa8, 0x7a, 0x01, 0xc0, 0xa8, /* .0..z... */
- 0x7a, 0x46, 0x00, 0x35, 0xc3, 0x35, 0x01, 0x10, /* zF.5.5.. */
- 0x76, 0xba, 0x52, 0x41, 0x81, 0x80, 0x00, 0x01, /* v.RA.... */
- 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x03, 0x77, /* .......w */
- 0x77, 0x77, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, /* ww.googl */
- 0x65, 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x01, /* e.com... */
- 0x00, 0x01, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* ........ */
- 0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
- 0xc3, 0x67, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* .g...... */
- 0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
- 0xc3, 0x68, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* .h...... */
- 0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
- 0xc3, 0x69, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* .i...... */
- 0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
- 0xc3, 0x6a, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* .j...... */
- 0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
- 0xc3, 0x93, 0xc0, 0x0c, 0x00, 0x01, 0x00, 0x01, /* ........ */
- 0x00, 0x00, 0x01, 0x2c, 0x00, 0x04, 0x4a, 0x7d, /* ...,..J} */
- 0xc3, 0x63, 0xc0, 0x10, 0x00, 0x02, 0x00, 0x01, /* .c...... */
- 0x00, 0x02, 0xa3, 0x00, 0x00, 0x06, 0x03, 0x6e, /* .......n */
- 0x73, 0x32, 0xc0, 0x10, 0xc0, 0x10, 0x00, 0x02, /* s2...... */
- 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, 0x00, 0x06, /* ........ */
- 0x03, 0x6e, 0x73, 0x33, 0xc0, 0x10, 0xc0, 0x10, /* .ns3.... */
- 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
- 0x00, 0x06, 0x03, 0x6e, 0x73, 0x31, 0xc0, 0x10, /* ...ns1.. */
- 0xc0, 0x10, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, /* ........ */
- 0xa3, 0x00, 0x00, 0x06, 0x03, 0x6e, 0x73, 0x34, /* .....ns4 */
- 0xc0, 0x10, 0xc0, 0xb0, 0x00, 0x01, 0x00, 0x01, /* ........ */
- 0x00, 0x02, 0xa3, 0x00, 0x00, 0x04, 0xd8, 0xef, /* ........ */
- 0x20, 0x0a, 0xc0, 0x8c, 0x00, 0x01, 0x00, 0x01, /* ....... */
- 0x00, 0x02, 0xa3, 0x00, 0x00, 0x04, 0xd8, 0xef, /* ........ */
- 0x22, 0x0a, 0xc0, 0x9e, 0x00, 0x01, 0x00, 0x01, /* "....... */
- 0x00, 0x02, 0xa3, 0x00, 0x00, 0x04, 0xd8, 0xef, /* ........ */
- 0x24, 0x0a, 0xc0, 0xc2, 0x00, 0x01, 0x00, 0x01, /* $....... */
- 0x00, 0x02, 0xa3, 0x00, 0x00, 0x04, 0xd8, 0xef, /* ........ */
- 0x26, 0x0a, /* &. */
-}
-
-func TestDNSRRA(t *testing.T) {
- dns := loadDNS(testDNSRRA, t)
- if dns == nil {
- t.Fatal("Failed to get a pointer to DNS struct")
- return
- }
-
- if uint16(len(dns.Questions)) != dns.QDCount {
- t.Fatal("Invalid query decoding, not the right number of questions")
- } else if uint16(len(dns.Answers)) != dns.ANCount {
- t.Fatal("Invalid query decoding, not the right number of answers")
- } else if uint16(len(dns.Authorities)) != dns.NSCount {
- t.Fatal("Invalid query decoding, not the right number of authorities")
- } else if uint16(len(dns.Additionals)) != dns.ARCount {
- t.Fatal("Invalid query decoding, not the right number of additionals info")
- }
-
- if string(dns.Questions[0].Name) != "www.google.com" {
- t.Errorf("Invalid query decoding, expecting 'www.google.com', got '%s'",
- dns.Questions[0].Name)
- }
- if string(dns.Answers[0].Name) != "www.google.com" {
- t.Errorf("Invalid query decoding, expecting 'www.google.com', got '%d'",
- dns.Questions[0].Class)
- }
- if dns.Answers[0].Class != DNSClassIN {
- t.Errorf("Invalid query decoding, expecting Class IN, got '%d'",
- dns.Questions[0].Class)
- }
- if dns.Answers[0].Type != DNSTypeA {
- t.Errorf("Invalid query decoding, expecting Type A, got '%d'",
- dns.Questions[0].Type)
- }
- if !dns.Answers[0].IP.Equal([]byte{74, 125, 195, 103}) {
- t.Errorf("Invalid query decoding, invalid IP address,"+
- " expecting '74.125.195.103', got '%s'",
- dns.Answers[0].IP.String())
- }
- if len(dns.Answers) != 6 {
- t.Errorf("No correct number of answers, expecting 6, go '%d'",
- len(dns.Answers))
- }
- if len(dns.Authorities) != 4 {
- t.Errorf("No correct number of answers, expecting 4, go '%d'",
- len(dns.Answers))
- }
- if len(dns.Additionals) != 4 {
- t.Errorf("No correct number of answers, expecting 4, go '%d'",
- len(dns.Answers))
- } else {
- for i, want := range []string{
- "ns1.google.com",
- "ns2.google.com",
- "ns3.google.com",
- "ns4.google.com",
- } {
- if got := string(dns.Additionals[i].Name); got != want {
- t.Errorf("got %q want %q", got, want)
- }
- }
- }
-}
-
-var testDNSAAAA = []byte{
- 0x52, 0x54, 0x00, 0xbd, 0x1c, 0x70, 0xfe, 0x54, /* RT...p.T */
- 0x00, 0x3e, 0x00, 0x96, 0x08, 0x00, 0x45, 0x00, /* .>....E. */
- 0x00, 0xe0, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11, /* ....@.@. */
- 0xc4, 0x74, 0xc0, 0xa8, 0x7a, 0x01, 0xc0, 0xa8, /* .t..z... */
- 0x7a, 0x46, 0x00, 0x35, 0xdb, 0x13, 0x00, 0xcc, /* zF.5.... */
- 0x76, 0x76, 0xf3, 0x03, 0x81, 0x80, 0x00, 0x01, /* vv...... */
- 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x03, 0x77, /* .......w */
- 0x77, 0x77, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, /* ww.googl */
- 0x65, 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x1c, /* e.com... */
- 0x00, 0x01, 0xc0, 0x0c, 0x00, 0x1c, 0x00, 0x01, /* ........ */
- 0x00, 0x00, 0x01, 0x2c, 0x00, 0x10, 0x2a, 0x00, /* ...,..*. */
- 0x14, 0x50, 0x40, 0x0c, 0x0c, 0x01, 0x00, 0x00, /* .P@..... */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xc0, 0x10, /* .....i.. */
- 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
- 0x00, 0x06, 0x03, 0x6e, 0x73, 0x34, 0xc0, 0x10, /* ...ns4.. */
- 0xc0, 0x10, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, /* ........ */
- 0xa3, 0x00, 0x00, 0x06, 0x03, 0x6e, 0x73, 0x32, /* .....ns2 */
- 0xc0, 0x10, 0xc0, 0x10, 0x00, 0x02, 0x00, 0x01, /* ........ */
- 0x00, 0x02, 0xa3, 0x00, 0x00, 0x06, 0x03, 0x6e, /* .......n */
- 0x73, 0x31, 0xc0, 0x10, 0xc0, 0x10, 0x00, 0x02, /* s1...... */
- 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, 0x00, 0x06, /* ........ */
- 0x03, 0x6e, 0x73, 0x33, 0xc0, 0x10, 0xc0, 0x6c, /* .ns3...l */
- 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
- 0x00, 0x04, 0xd8, 0xef, 0x20, 0x0a, 0xc0, 0x5a, /* .... ..Z */
- 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
- 0x00, 0x04, 0xd8, 0xef, 0x22, 0x0a, 0xc0, 0x7e, /* ...."..~ */
- 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
- 0x00, 0x04, 0xd8, 0xef, 0x24, 0x0a, 0xc0, 0x48, /* ....$..H */
- 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0xa3, 0x00, /* ........ */
- 0x00, 0x04, 0xd8, 0xef, 0x26, 0x0a, /* ....&. */
-}
-
-func TestDNSAAAA(t *testing.T) {
- dns := loadDNS(testDNSAAAA, t)
- if dns == nil {
- t.Error("Failed to get a pointer to DNS struct")
- return
- }
-
- if len(dns.Questions) != 1 {
- t.Error("Invalid number of question")
- return
- }
- if dns.Questions[0].Type != DNSTypeAAAA {
- t.Errorf("Invalid question, Type is not AAAA, found %d",
- dns.Questions[0].Type)
- }
-
- if len(dns.Answers) != 1 {
- t.Error("Invalid number of answers")
- }
- if !dns.Answers[0].IP.Equal([]byte{0x2a, 0x00, 0x14, 0x50, 0x40,
- 0x0c, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69}) {
- t.Error("Invalid IP address, found ",
- dns.Answers[0].IP.String())
- }
-}
-
-var testDNSMXSOA = []byte{
- 0x52, 0x54, 0x00, 0xbd, 0x1c, 0x70, 0xfe, 0x54, /* RT...p.T */
- 0x00, 0x3e, 0x00, 0x96, 0x08, 0x00, 0x45, 0x00, /* .>....E. */
- 0x00, 0x6e, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11, /* .n..@.@. */
- 0xc4, 0xe6, 0xc0, 0xa8, 0x7a, 0x01, 0xc0, 0xa8, /* ....z... */
- 0x7a, 0x46, 0x00, 0x35, 0x9c, 0x60, 0x00, 0x5a, /* zF.5.`.Z */
- 0x76, 0x04, 0xfc, 0x7a, 0x81, 0x80, 0x00, 0x01, /* v..z.... */
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x77, /* .......w */
- 0x77, 0x77, 0x06, 0x67, 0x6f, 0x6f, 0x67, 0x6c, /* ww.googl */
- 0x65, 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x0f, /* e.com... */
- 0x00, 0x01, 0xc0, 0x10, 0x00, 0x06, 0x00, 0x01, /* ........ */
- 0x00, 0x00, 0x00, 0x3c, 0x00, 0x26, 0x03, 0x6e, /* ...<.&.n */
- 0x73, 0x31, 0xc0, 0x10, 0x09, 0x64, 0x6e, 0x73, /* s1...dns */
- 0x2d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xc0, 0x10, /* -admin.. */
- 0x00, 0x17, 0x9f, 0x64, 0x00, 0x00, 0x1c, 0x20, /* ...d... */
- 0x00, 0x00, 0x07, 0x08, 0x00, 0x12, 0x75, 0x00, /* ......u. */
- 0x00, 0x00, 0x01, 0x2c, /* ..., */
-}
-
-func TestDNSMXSOA(t *testing.T) {
- dns := loadDNS(testDNSMXSOA, t)
- if dns == nil {
- t.Error("Failed to get a pointer to DNS struct")
- return
- }
-
- if len(dns.Authorities) != 1 {
- t.Error("Invalid number of authoritative answers, found ",
- len(dns.Authorities))
- return
- }
-}
-
-func BenchmarkDecodeDNS(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testDNSQueryA, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-func BenchmarkDecodeDNSLayer(b *testing.B) {
- var dns DNS
- for i := 0; i < b.N; i++ {
- dns.DecodeFromBytes(testDNSAAAA[ /*eth*/ 14+ /*ipv4*/ 20+ /*udp*/ 8:], gopacket.NilDecodeFeedback)
- }
-}
-func TestDNSDoesNotMalloc(t *testing.T) {
- var dns DNS
- if n := testing.AllocsPerRun(1000, func() {
- if err := dns.DecodeFromBytes(testDNSAAAA[ /*eth*/ 14+ /*ipv4*/ 20+ /*udp*/ 8:], gopacket.NilDecodeFeedback); err != nil {
- t.Fatal(err)
- }
- }); n > 0 {
- t.Error(n, "mallocs decoding DNS")
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/usb_test.go b/vendor/github.com/google/gopacket/layers/usb_test.go
deleted file mode 100644
index 35e9c70..0000000
--- a/vendor/github.com/google/gopacket/layers/usb_test.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2014, Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- _ "fmt"
- "github.com/google/gopacket"
- "reflect"
- "testing"
-)
-
-// Generator python layers/test_creator.py --link_type USB --name USB dongle.pcap
-// http://wiki.wireshark.org/SampleCaptures#Sample_Captures
-
-// testPacketUSB0 is the packet:
-// 02:41:04.689546 INTERRUPT COMPLETE to 2:1:1
-// 0x0000: 0038 4a3b 0088 ffff 4301 8101 0200 2d00 .8J;....C.....-.
-// 0x0010: c0d3 5b50 0000 0000 8a85 0a00 0000 0000 ..[P............
-// 0x0020: 0100 0000 0100 0000 0000 0000 0000 0000 ................
-// 0x0030: 8000 0000 0000 0000 0002 0000 0000 0000 ................
-// 0x0040: 04 .
-var testPacketUSB0 = []byte{
- 0x00, 0x38, 0x4a, 0x3b, 0x00, 0x88, 0xff, 0xff, 0x43, 0x01, 0x81, 0x01, 0x02, 0x00, 0x2d, 0x00,
- 0xc0, 0xd3, 0x5b, 0x50, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x85, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04,
-}
-
-func TestPacketUSB0(t *testing.T) {
- p := gopacket.NewPacket(testPacketUSB0, LinkTypeLinuxUSB, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeUSB, LayerTypeUSBInterrupt}, t)
-
- if got, ok := p.Layer(LayerTypeUSB).(*USB); ok {
- want := &USB{
- BaseLayer: BaseLayer{
- Contents: []uint8{0x0, 0x38, 0x4a, 0x3b, 0x0, 0x88, 0xff, 0xff, 0x43, 0x1, 0x81, 0x1, 0x2, 0x0, 0x2d, 0x0, 0xc0, 0xd3, 0x5b, 0x50, 0x0, 0x0, 0x0, 0x0, 0x8a, 0x85, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0},
- Payload: []uint8{0x4},
- },
- ID: 0xffff88003b4a3800,
- EventType: USBEventTypeComplete,
- TransferType: USBTransportTypeInterrupt,
- Direction: 0x1,
- EndpointNumber: 0x1,
- DeviceAddress: 0x1,
- BusID: 0x2,
- TimestampSec: 1348195264,
- TimestampUsec: 689546,
- Setup: false,
- Data: true,
- Status: 0,
- UrbLength: 0x1,
- UrbDataLength: 0x1,
- }
-
- if !reflect.DeepEqual(got, want) {
- t.Errorf("USB packet processing failed:\ngot :\n%#v\n\nwant :\n%#v\n\n", got, want)
- }
- }
-
-}
-func BenchmarkDecodePacketUSB0(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketUSB0, LinkTypeLinuxUSB, gopacket.NoCopy)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/vrrp_test.go b/vendor/github.com/google/gopacket/layers/vrrp_test.go
deleted file mode 100644
index bc6b7e4..0000000
--- a/vendor/github.com/google/gopacket/layers/vrrp_test.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2016 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package layers
-
-import (
- "github.com/google/gopacket"
- "testing"
-)
-
-// vrrpPacketPriority100 is the packet:
-// 06:12:21.813317 IP 192.168.0.30 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype none, intvl 1s, length 20
-// 0x0000: 0100 5e00 0012 0000 5e00 0101 0800 45c0 ..^.....^.....E.
-// 0x0010: 0028 0000 0000 ff70 19cd c0a8 001e e000 .(.....p........
-// 0x0020: 0012 2101 6401 0001 ba52 c0a8 0001 0000 ..!.d....R......
-// 0x0030: 0000 0000 0000 0000 0000 0000 ............
-var vrrpPacketPriority100 = []byte{
- 0x01, 0x00, 0x5e, 0x00, 0x00, 0x12, 0x00, 0x00, 0x5e, 0x00, 0x01, 0x01, 0x08, 0x00, 0x45, 0xc0,
- 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xff, 0x70, 0x19, 0xcd, 0xc0, 0xa8, 0x00, 0x1e, 0xe0, 0x00,
- 0x00, 0x12, 0x21, 0x01, 0x64, 0x01, 0x00, 0x01, 0xba, 0x52, 0xc0, 0xa8, 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-}
-
-func TestVRRPPacketPacket0(t *testing.T) {
- p := gopacket.NewPacket(vrrpPacketPriority100, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeVRRP}, t)
-
- // Version=2 Type=VRRPv2 Advertisement VirtualRtrID=1 Priority=100
- vrrp := p.Layer(LayerTypeVRRP).(*VRRPv2)
- if vrrp.Version != 2 {
- t.Fatalf("Unable to decode VRRPv2 version. Received %d, expected %d", vrrp.Version, 2)
- }
-
- if vrrp.Type != 1 {
- t.Fatalf("Unable to decode VRRPv2 type. Received %d, expected %d", vrrp.Type, 1)
- }
-
- if vrrp.Priority != 100 {
- t.Fatalf("Unable to decode VRRPv2 priority. Received %d, expected %d", vrrp.Priority, 100)
- }
-
- if vrrp.Checksum != 47698 {
- t.Fatalf("Unable to decode VRRPv2 checksum. Received %d, expected %d", vrrp.Checksum, 47698)
- }
-}
-func BenchmarkDecodeVRRPPacket0(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(vrrpPacketPriority100, LayerTypeEthernet, gopacket.NoCopy)
- }
-}
diff --git a/vendor/github.com/google/gopacket/layers/vxlan_test.go b/vendor/github.com/google/gopacket/layers/vxlan_test.go
deleted file mode 100644
index a02d934..0000000
--- a/vendor/github.com/google/gopacket/layers/vxlan_test.go
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2016 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package layers
-
-import (
- "github.com/google/gopacket"
- "reflect"
- "testing"
-)
-
-// VXLAN is specifed in RFC 7348
-// 0 1 2 3
-// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-// 0 8 16 24 32
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// |G|R|R|R|I|R|R|R|R|D|R|R|A|R|R|R| Group Policy ID |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-// | 24 bit VXLAN Network Identifier | Reserved |
-// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-// Ethernet[IP[UDP[VXLAN[Ethernet[IP[ICMP]]]]]]
-
-// testPacketVXLAN
-// 0000 00 16 3e 08 71 cf 36 dc 85 1e b3 40 08 00 45 00 ..>.q.6....@..E.
-// 0010 00 86 d2 c0 40 00 40 11 51 52 c0 a8 cb 01 c0 a8 ....@.@.QR......
-// 0020 ca 01 b0 5d 12 b5 00 72 00 00 08 00 00 00 00 00 ...]...r........
-// 0030 00 00 00 30 88 01 00 02 00 16 3e 37 f6 04 08 00 ...0......>7....
-// 0040 45 00 00 54 00 00 40 00 40 01 23 4f c0 a8 cb 03 E..T..@.@.#O....
-// 0050 c0 a8 cb 05 08 00 f6 f2 05 0c 00 01 fc e2 97 51 ...............Q
-// 0060 00 00 00 00 a6 f8 02 00 00 00 00 00 10 11 12 13 ................
-// 0070 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 ............ !"#
-// 0080 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 $%&'()*+,-./0123
-// 0090 34 35 36 37 4567 ./01234567
-var testPacketVXLAN = []byte{
- 0x00, 0x16, 0x3e, 0x08, 0x71, 0xcf, 0x36, 0xdc, 0x85, 0x1e, 0xb3, 0x40, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x86, 0xd2, 0xc0, 0x40, 0x00, 0x40, 0x11, 0x51, 0x52, 0xc0, 0xa8, 0xcb, 0x01, 0xc0, 0xa8,
- 0xca, 0x01, 0xb0, 0x5d, 0x12, 0xb5, 0x00, 0x72, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0x00, 0x00, 0x30, 0x88, 0x01, 0x00, 0x02, 0x00, 0x16, 0x3e, 0x37, 0xf6, 0x04, 0x08, 0x00,
- 0x45, 0x00, 0x00, 0x54, 0x00, 0x00, 0x40, 0x00, 0x40, 0x01, 0x23, 0x4f, 0xc0, 0xa8, 0xcb, 0x03,
- 0xc0, 0xa8, 0xcb, 0x05, 0x08, 0x00, 0xf6, 0xf2, 0x05, 0x0c, 0x00, 0x01, 0xfc, 0xe2, 0x97, 0x51,
- 0x00, 0x00, 0x00, 0x00, 0xa6, 0xf8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x12, 0x13,
- 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
- 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33,
- 0x34, 0x35, 0x36, 0x37,
-}
-
-func TestPacketVXLAN(t *testing.T) {
- p := gopacket.NewPacket(testPacketVXLAN, LinkTypeEthernet, gopacket.Default)
- if p.ErrorLayer() != nil {
- t.Error("Failed to decode packet:", p.ErrorLayer().Error())
- }
- checkLayers(p, []gopacket.LayerType{LayerTypeEthernet, LayerTypeIPv4, LayerTypeUDP, LayerTypeVXLAN, LayerTypeEthernet, LayerTypeIPv4, LayerTypeICMPv4, gopacket.LayerTypePayload}, t)
- if got, ok := p.Layer(LayerTypeVXLAN).(*VXLAN); ok {
- want := &VXLAN{
- BaseLayer: BaseLayer{
- Contents: []byte{0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00},
- Payload: []byte{0x00, 0x30, 0x88, 0x01, 0x00, 0x02, 0x00, 0x16, 0x3e, 0x37, 0xf6, 0x04, 0x08, 0x00,
- 0x45, 0x00, 0x00, 0x54, 0x00, 0x00, 0x40, 0x00, 0x40, 0x01, 0x23, 0x4f, 0xc0, 0xa8, 0xcb, 0x03,
- 0xc0, 0xa8, 0xcb, 0x05, 0x08, 0x00, 0xf6, 0xf2, 0x05, 0x0c, 0x00, 0x01, 0xfc, 0xe2, 0x97, 0x51,
- 0x00, 0x00, 0x00, 0x00, 0xa6, 0xf8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x12, 0x13,
- 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
- 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33,
- 0x34, 0x35, 0x36, 0x37},
- },
- ValidIDFlag: true,
- VNI: 255,
- GBPExtension: false,
- GBPApplied: false,
- GBPDontLearn: false,
- GBPGroupPolicyID: 0,
- }
- if !reflect.DeepEqual(want, got) {
- t.Errorf("VXLAN layer mismatch, \nwant %#v\ngot %#v\n", want, got)
- }
- }
-}
-
-func BenchmarkDecodePacketVXLAN(b *testing.B) {
- for i := 0; i < b.N; i++ {
- gopacket.NewPacket(testPacketVXLAN, LinkTypeEthernet, gopacket.NoCopy)
- }
-}
-
-func TestIsomorphicPacketVXLAN(t *testing.T) {
- vx := &VXLAN{
- ValidIDFlag: true,
- VNI: 255,
- GBPExtension: true,
- GBPApplied: true,
- GBPDontLearn: true,
- GBPGroupPolicyID: 777,
- }
-
- b := gopacket.NewSerializeBuffer()
- vx.SerializeTo(b, gopacket.SerializeOptions{})
-
- p := gopacket.NewPacket(b.Bytes(), gopacket.DecodeFunc(decodeVXLAN), gopacket.Default)
- vxTranslated := p.Layer(LayerTypeVXLAN).(*VXLAN)
- vxTranslated.BaseLayer = BaseLayer{}
-
- if !reflect.DeepEqual(vx, vxTranslated) {
- t.Errorf("VXLAN isomorph mismatch, \nwant %#v\ngot %#v\n", vx, vxTranslated)
- }
-}
diff --git a/vendor/github.com/google/gopacket/macs/benchmark_test.go b/vendor/github.com/google/gopacket/macs/benchmark_test.go
deleted file mode 100644
index 33af5c2..0000000
--- a/vendor/github.com/google/gopacket/macs/benchmark_test.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package macs
-
-import (
- "testing"
-)
-
-func BenchmarkCheckEthernetPrefix(b *testing.B) {
- key := [3]byte{5, 5, 5}
- for i := 0; i < b.N; i++ {
- _ = ValidMACPrefixMap[key]
- }
-}
diff --git a/vendor/github.com/google/gopacket/macs/doc.go b/vendor/github.com/google/gopacket/macs/doc.go
deleted file mode 100644
index c0d32a8..0000000
--- a/vendor/github.com/google/gopacket/macs/doc.go
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package macs provides an in-memory mapping of all valid Ethernet MAC address
-// prefixes to their associated organization.
-//
-// The ValidMACPrefixMap map maps 3-byte prefixes to organization strings. It
-// can be updated using 'go run gen.go' in this directory.
-package macs
diff --git a/vendor/github.com/google/gopacket/macs/gen.go b/vendor/github.com/google/gopacket/macs/gen.go
deleted file mode 100644
index ccfcc34..0000000
--- a/vendor/github.com/google/gopacket/macs/gen.go
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build ignore
-
-// This binary pulls the list of known MAC
-// prefixes from IEEE and writes them out to a go file which is compiled
-// into gopacket. It should be run as follows:
-//
-// go run gen.go | gofmt > valid_mac_prefixes.go
-package main
-
-import (
- "bufio"
- "bytes"
- "encoding/hex"
- "flag"
- "fmt"
- "io"
- "net/http"
- "os"
- "regexp"
- "sort"
- "time"
-)
-
-const header = `// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package macs
-
-// Created by gen.go, don't edit manually
-// Generated at %s
-// Fetched from %q
-
-// ValidMACPrefixMap maps a valid MAC address prefix to the name of the
-// organization that owns the rights to use it. We map it to a hidden
-// variable so it won't show up in godoc, since it's a very large map.
-var ValidMACPrefixMap = validMACPrefixMap
-var validMACPrefixMap = map[[3]byte]string{
-`
-
-var url = flag.String("url", "http://standards.ieee.org/develop/regauth/oui/oui.txt", "URL to fetch MACs from")
-
-type mac struct {
- prefix [3]byte
- company string
-}
-
-type macs []mac
-
-func (m macs) Len() int { return len(m) }
-func (m macs) Less(i, j int) bool { return bytes.Compare(m[i].prefix[:], m[j].prefix[:]) < 0 }
-func (m macs) Swap(i, j int) { m[i], m[j] = m[j], m[i] }
-
-func main() {
- fmt.Fprintf(os.Stderr, "Fetching MACs from %q\n", *url)
- resp, err := http.Get(*url)
- if err != nil {
- panic(err)
- }
- defer resp.Body.Close()
- buffered := bufio.NewReader(resp.Body)
- finder := regexp.MustCompile(`^\s*([0-9A-F]{6})\s+\(base 16\)\s+(.*\S)`)
- got := macs{}
- for {
- line, err := buffered.ReadString('\n')
- if err == io.EOF {
- break
- } else if err != nil {
- panic(err)
- }
- if matches := finder.FindStringSubmatch(line); matches != nil {
- var prefix [3]byte
- hex.Decode(prefix[:], []byte(matches[1]))
- company := matches[2]
- if company == "" {
- company = "PRIVATE"
- }
- fmt.Fprint(os.Stderr, "*")
- got = append(got, mac{prefix: prefix, company: company})
- }
- }
- fmt.Fprintln(os.Stderr, "\nSorting macs")
- sort.Sort(got)
- fmt.Fprintln(os.Stderr, "Starting write to standard output")
- fmt.Printf(header, time.Now(), *url)
- for _, m := range got {
- fmt.Printf("\t[3]byte{%d, %d, %d}: %q,\n", m.prefix[0], m.prefix[1], m.prefix[2], m.company)
- }
- fmt.Println("}")
-}
diff --git a/vendor/github.com/google/gopacket/macs/valid_mac_prefixes.go b/vendor/github.com/google/gopacket/macs/valid_mac_prefixes.go
deleted file mode 100644
index 0a93cad..0000000
--- a/vendor/github.com/google/gopacket/macs/valid_mac_prefixes.go
+++ /dev/null
@@ -1,23946 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package macs
-
-// Created by gen.go, don't edit manually
-// Generated at 2017-09-19 13:06:19.654271144 -0600 MDT
-// Fetched from "http://standards.ieee.org/develop/regauth/oui/oui.txt"
-
-// ValidMACPrefixMap maps a valid MAC address prefix to the name of the
-// organization that owns the rights to use it. We map it to a hidden
-// variable so it won't show up in godoc, since it's a very large map.
-var ValidMACPrefixMap = validMACPrefixMap
-var validMACPrefixMap = map[[3]byte]string{
- [3]byte{0, 0, 0}: "XEROX CORPORATION",
- [3]byte{0, 0, 1}: "XEROX CORPORATION",
- [3]byte{0, 0, 2}: "XEROX CORPORATION",
- [3]byte{0, 0, 3}: "XEROX CORPORATION",
- [3]byte{0, 0, 4}: "XEROX CORPORATION",
- [3]byte{0, 0, 5}: "XEROX CORPORATION",
- [3]byte{0, 0, 6}: "XEROX CORPORATION",
- [3]byte{0, 0, 7}: "XEROX CORPORATION",
- [3]byte{0, 0, 8}: "XEROX CORPORATION",
- [3]byte{0, 0, 9}: "XEROX CORPORATION",
- [3]byte{0, 0, 10}: "OMRON TATEISI ELECTRONICS CO.",
- [3]byte{0, 0, 11}: "MATRIX CORPORATION",
- [3]byte{0, 0, 12}: "Cisco Systems, Inc",
- [3]byte{0, 0, 13}: "FIBRONICS LTD.",
- [3]byte{0, 0, 14}: "FUJITSU LIMITED",
- [3]byte{0, 0, 15}: "NEXT, INC.",
- [3]byte{0, 0, 16}: "SYTEK INC.",
- [3]byte{0, 0, 17}: "NORMEREL SYSTEMES",
- [3]byte{0, 0, 18}: "INFORMATION TECHNOLOGY LIMITED",
- [3]byte{0, 0, 19}: "CAMEX",
- [3]byte{0, 0, 20}: "NETRONIX",
- [3]byte{0, 0, 21}: "DATAPOINT CORPORATION",
- [3]byte{0, 0, 22}: "DU PONT PIXEL SYSTEMS .",
- [3]byte{0, 0, 23}: "Oracle",
- [3]byte{0, 0, 24}: "WEBSTER COMPUTER CORPORATION",
- [3]byte{0, 0, 25}: "APPLIED DYNAMICS INTERNATIONAL",
- [3]byte{0, 0, 26}: "ADVANCED MICRO DEVICES",
- [3]byte{0, 0, 27}: "Novell, Inc.",
- [3]byte{0, 0, 28}: "BELL TECHNOLOGIES",
- [3]byte{0, 0, 29}: "Cabletron Systems, Inc.",
- [3]byte{0, 0, 30}: "TELSIST INDUSTRIA ELECTRONICA",
- [3]byte{0, 0, 31}: "Telco Systems, Inc.",
- [3]byte{0, 0, 32}: "DATAINDUSTRIER DIAB AB",
- [3]byte{0, 0, 33}: "SUREMAN COMP. & COMMUN. CORP.",
- [3]byte{0, 0, 34}: "VISUAL TECHNOLOGY INC.",
- [3]byte{0, 0, 35}: "ABB INDUSTRIAL SYSTEMS AB",
- [3]byte{0, 0, 36}: "CONNECT AS",
- [3]byte{0, 0, 37}: "RAMTEK CORP.",
- [3]byte{0, 0, 38}: "SHA-KEN CO., LTD.",
- [3]byte{0, 0, 39}: "JAPAN RADIO COMPANY",
- [3]byte{0, 0, 40}: "PRODIGY SYSTEMS CORPORATION",
- [3]byte{0, 0, 41}: "IMC NETWORKS CORP.",
- [3]byte{0, 0, 42}: "TRW - SEDD/INP",
- [3]byte{0, 0, 43}: "CRISP AUTOMATION, INC",
- [3]byte{0, 0, 44}: "AUTOTOTE LIMITED",
- [3]byte{0, 0, 45}: "CHROMATICS INC",
- [3]byte{0, 0, 46}: "SOCIETE EVIRA",
- [3]byte{0, 0, 47}: "TIMEPLEX INC.",
- [3]byte{0, 0, 48}: "VG LABORATORY SYSTEMS LTD",
- [3]byte{0, 0, 49}: "QPSX COMMUNICATIONS, LTD.",
- [3]byte{0, 0, 50}: "Marconi plc",
- [3]byte{0, 0, 51}: "EGAN MACHINERY COMPANY",
- [3]byte{0, 0, 52}: "NETWORK RESOURCES CORPORATION",
- [3]byte{0, 0, 53}: "SPECTRAGRAPHICS CORPORATION",
- [3]byte{0, 0, 54}: "ATARI CORPORATION",
- [3]byte{0, 0, 55}: "OXFORD METRICS LIMITED",
- [3]byte{0, 0, 56}: "CSS LABS",
- [3]byte{0, 0, 57}: "TOSHIBA CORPORATION",
- [3]byte{0, 0, 58}: "CHYRON CORPORATION",
- [3]byte{0, 0, 59}: "i Controls, Inc.",
- [3]byte{0, 0, 60}: "AUSPEX SYSTEMS INC.",
- [3]byte{0, 0, 61}: "UNISYS",
- [3]byte{0, 0, 62}: "SIMPACT",
- [3]byte{0, 0, 63}: "SYNTREX, INC.",
- [3]byte{0, 0, 64}: "APPLICON, INC.",
- [3]byte{0, 0, 65}: "ICE CORPORATION",
- [3]byte{0, 0, 66}: "METIER MANAGEMENT SYSTEMS LTD.",
- [3]byte{0, 0, 67}: "MICRO TECHNOLOGY",
- [3]byte{0, 0, 68}: "CASTELLE CORPORATION",
- [3]byte{0, 0, 69}: "FORD AEROSPACE & COMM. CORP.",
- [3]byte{0, 0, 70}: "OLIVETTI NORTH AMERICA",
- [3]byte{0, 0, 71}: "NICOLET INSTRUMENTS CORP.",
- [3]byte{0, 0, 72}: "Seiko Epson Corporation",
- [3]byte{0, 0, 73}: "APRICOT COMPUTERS, LTD",
- [3]byte{0, 0, 74}: "ADC CODENOLL TECHNOLOGY CORP.",
- [3]byte{0, 0, 75}: "ICL DATA OY",
- [3]byte{0, 0, 76}: "NEC CORPORATION",
- [3]byte{0, 0, 77}: "DCI CORPORATION",
- [3]byte{0, 0, 78}: "AMPEX CORPORATION",
- [3]byte{0, 0, 79}: "LOGICRAFT, INC.",
- [3]byte{0, 0, 80}: "RADISYS CORPORATION",
- [3]byte{0, 0, 81}: "HOB ELECTRONIC GMBH & CO. KG",
- [3]byte{0, 0, 82}: "Intrusion.com, Inc.",
- [3]byte{0, 0, 83}: "COMPUCORP",
- [3]byte{0, 0, 84}: "Schneider Electric",
- [3]byte{0, 0, 85}: "COMMISSARIAT A L`ENERGIE ATOM.",
- [3]byte{0, 0, 86}: "DR. B. STRUCK",
- [3]byte{0, 0, 87}: "SCITEX CORPORATION LTD.",
- [3]byte{0, 0, 88}: "RACORE COMPUTER PRODUCTS INC.",
- [3]byte{0, 0, 89}: "Hellige GMBH",
- [3]byte{0, 0, 90}: "SysKonnect GmbH",
- [3]byte{0, 0, 91}: "ELTEC ELEKTRONIK AG",
- [3]byte{0, 0, 92}: "TELEMATICS INTERNATIONAL INC.",
- [3]byte{0, 0, 93}: "CS TELECOM",
- [3]byte{0, 0, 94}: "ICANN, IANA Department",
- [3]byte{0, 0, 95}: "Sumitomo Electric Industries,Ltd",
- [3]byte{0, 0, 96}: "KONTRON ELEKTRONIK GMBH",
- [3]byte{0, 0, 97}: "GATEWAY COMMUNICATIONS",
- [3]byte{0, 0, 98}: "BULL HN INFORMATION SYSTEMS",
- [3]byte{0, 0, 99}: "BARCO CONTROL ROOMS GMBH",
- [3]byte{0, 0, 100}: "Yokogawa Digital Computer Corporation",
- [3]byte{0, 0, 101}: "Network General Corporation",
- [3]byte{0, 0, 102}: "TALARIS SYSTEMS, INC.",
- [3]byte{0, 0, 103}: "SOFT * RITE, INC.",
- [3]byte{0, 0, 104}: "ROSEMOUNT CONTROLS",
- [3]byte{0, 0, 105}: "CONCORD COMMUNICATIONS INC",
- [3]byte{0, 0, 106}: "COMPUTER CONSOLES INC.",
- [3]byte{0, 0, 107}: "SILICON GRAPHICS INC./MIPS",
- [3]byte{0, 0, 108}: "Private",
- [3]byte{0, 0, 109}: "CRAY COMMUNICATIONS, LTD.",
- [3]byte{0, 0, 110}: "Artisoft Inc.",
- [3]byte{0, 0, 111}: "Madge Ltd.",
- [3]byte{0, 0, 112}: "HCL LIMITED",
- [3]byte{0, 0, 113}: "ADRA SYSTEMS INC.",
- [3]byte{0, 0, 114}: "MINIWARE TECHNOLOGY",
- [3]byte{0, 0, 115}: "SIECOR CORPORATION",
- [3]byte{0, 0, 116}: "RICOH COMPANY LTD.",
- [3]byte{0, 0, 117}: "Nortel Networks",
- [3]byte{0, 0, 118}: "ABEKAS VIDEO SYSTEM",
- [3]byte{0, 0, 119}: "INTERPHASE CORPORATION",
- [3]byte{0, 0, 120}: "LABTAM LIMITED",
- [3]byte{0, 0, 121}: "NETWORTH INCORPORATED",
- [3]byte{0, 0, 122}: "DANA COMPUTER INC.",
- [3]byte{0, 0, 123}: "RESEARCH MACHINES",
- [3]byte{0, 0, 124}: "AMPERE INCORPORATED",
- [3]byte{0, 0, 125}: "Oracle Corporation",
- [3]byte{0, 0, 126}: "CLUSTRIX CORPORATION",
- [3]byte{0, 0, 127}: "LINOTYPE-HELL AG",
- [3]byte{0, 0, 128}: "CRAY COMMUNICATIONS A/S",
- [3]byte{0, 0, 129}: "Bay Networks",
- [3]byte{0, 0, 130}: "LECTRA SYSTEMES SA",
- [3]byte{0, 0, 131}: "TADPOLE TECHNOLOGY PLC",
- [3]byte{0, 0, 132}: "SUPERNET",
- [3]byte{0, 0, 133}: "CANON INC.",
- [3]byte{0, 0, 134}: "MEGAHERTZ CORPORATION",
- [3]byte{0, 0, 135}: "HITACHI, LTD.",
- [3]byte{0, 0, 136}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 0, 137}: "CAYMAN SYSTEMS INC.",
- [3]byte{0, 0, 138}: "DATAHOUSE INFORMATION SYSTEMS",
- [3]byte{0, 0, 139}: "INFOTRON",
- [3]byte{0, 0, 140}: "Alloy Computer Products (Australia) Pty Ltd",
- [3]byte{0, 0, 141}: "Cryptek Inc.",
- [3]byte{0, 0, 142}: "SOLBOURNE COMPUTER, INC.",
- [3]byte{0, 0, 143}: "Raytheon",
- [3]byte{0, 0, 144}: "MICROCOM",
- [3]byte{0, 0, 145}: "ANRITSU CORPORATION",
- [3]byte{0, 0, 146}: "COGENT DATA TECHNOLOGIES",
- [3]byte{0, 0, 147}: "PROTEON INC.",
- [3]byte{0, 0, 148}: "ASANTE TECHNOLOGIES",
- [3]byte{0, 0, 149}: "SONY TEKTRONIX CORP.",
- [3]byte{0, 0, 150}: "MARCONI ELECTRONICS LTD.",
- [3]byte{0, 0, 151}: "Dell EMC",
- [3]byte{0, 0, 152}: "CROSSCOMM CORPORATION",
- [3]byte{0, 0, 153}: "MTX, INC.",
- [3]byte{0, 0, 154}: "RC COMPUTER A/S",
- [3]byte{0, 0, 155}: "INFORMATION INTERNATIONAL, INC",
- [3]byte{0, 0, 156}: "ROLM MIL-SPEC COMPUTERS",
- [3]byte{0, 0, 157}: "LOCUS COMPUTING CORPORATION",
- [3]byte{0, 0, 158}: "MARLI S.A.",
- [3]byte{0, 0, 159}: "AMERISTAR TECHNOLOGIES INC.",
- [3]byte{0, 0, 160}: "SANYO Electric Co., Ltd.",
- [3]byte{0, 0, 161}: "MARQUETTE ELECTRIC CO.",
- [3]byte{0, 0, 162}: "Bay Networks",
- [3]byte{0, 0, 163}: "NETWORK APPLICATION TECHNOLOGY",
- [3]byte{0, 0, 164}: "ACORN COMPUTERS LIMITED",
- [3]byte{0, 0, 165}: "Tattile SRL",
- [3]byte{0, 0, 166}: "NETWORK GENERAL CORPORATION",
- [3]byte{0, 0, 167}: "NETWORK COMPUTING DEVICES INC.",
- [3]byte{0, 0, 168}: "STRATUS COMPUTER INC.",
- [3]byte{0, 0, 169}: "NETWORK SYSTEMS CORP.",
- [3]byte{0, 0, 170}: "XEROX CORPORATION",
- [3]byte{0, 0, 171}: "LOGIC MODELING CORPORATION",
- [3]byte{0, 0, 172}: "CONWARE COMPUTER CONSULTING",
- [3]byte{0, 0, 173}: "BRUKER INSTRUMENTS INC.",
- [3]byte{0, 0, 174}: "DASSAULT ELECTRONIQUE",
- [3]byte{0, 0, 175}: "Canberra Industries, Inc.",
- [3]byte{0, 0, 176}: "RND-RAD NETWORK DEVICES",
- [3]byte{0, 0, 177}: "Alpha Micro",
- [3]byte{0, 0, 178}: "TELEVIDEO SYSTEMS, INC.",
- [3]byte{0, 0, 179}: "CIMLINC INCORPORATED",
- [3]byte{0, 0, 180}: "Edimax Technology Co. Ltd.",
- [3]byte{0, 0, 181}: "DATABILITY SOFTWARE SYS. INC.",
- [3]byte{0, 0, 182}: "MICRO-MATIC RESEARCH",
- [3]byte{0, 0, 183}: "DOVE COMPUTER CORPORATION",
- [3]byte{0, 0, 184}: "SEIKOSHA CO., LTD.",
- [3]byte{0, 0, 185}: "MCDONNELL DOUGLAS COMPUTER SYS",
- [3]byte{0, 0, 186}: "SIIG, INC.",
- [3]byte{0, 0, 187}: "TRI-DATA",
- [3]byte{0, 0, 188}: "Rockwell Automation",
- [3]byte{0, 0, 189}: "MITSUBISHI CABLE COMPANY",
- [3]byte{0, 0, 190}: "THE NTI GROUP",
- [3]byte{0, 0, 191}: "SYMMETRIC COMPUTER SYSTEMS",
- [3]byte{0, 0, 192}: "WESTERN DIGITAL CORPORATION",
- [3]byte{0, 0, 193}: "Madge Ltd.",
- [3]byte{0, 0, 194}: "INFORMATION PRESENTATION TECH.",
- [3]byte{0, 0, 195}: "HARRIS CORP COMPUTER SYS DIV",
- [3]byte{0, 0, 196}: "WATERS DIV. OF MILLIPORE",
- [3]byte{0, 0, 197}: "ARRIS Group, Inc.",
- [3]byte{0, 0, 198}: "EON SYSTEMS",
- [3]byte{0, 0, 199}: "ARIX CORPORATION",
- [3]byte{0, 0, 200}: "ALTOS COMPUTER SYSTEMS",
- [3]byte{0, 0, 201}: "Emulex Corporation",
- [3]byte{0, 0, 202}: "ARRIS Group, Inc.",
- [3]byte{0, 0, 203}: "COMPU-SHACK ELECTRONIC GMBH",
- [3]byte{0, 0, 204}: "DENSAN CO., LTD.",
- [3]byte{0, 0, 205}: "Allied Telesis Labs Ltd",
- [3]byte{0, 0, 206}: "MEGADATA CORP.",
- [3]byte{0, 0, 207}: "HAYES MICROCOMPUTER PRODUCTS",
- [3]byte{0, 0, 208}: "DEVELCON ELECTRONICS LTD.",
- [3]byte{0, 0, 209}: "ADAPTEC INCORPORATED",
- [3]byte{0, 0, 210}: "SBE, INC.",
- [3]byte{0, 0, 211}: "WANG LABORATORIES INC.",
- [3]byte{0, 0, 212}: "PURE DATA LTD.",
- [3]byte{0, 0, 213}: "MICROGNOSIS INTERNATIONAL",
- [3]byte{0, 0, 214}: "PUNCH LINE HOLDING",
- [3]byte{0, 0, 215}: "DARTMOUTH COLLEGE",
- [3]byte{0, 0, 216}: "Novell, Inc.",
- [3]byte{0, 0, 217}: "NIPPON TELEGRAPH & TELEPHONE",
- [3]byte{0, 0, 218}: "ATEX",
- [3]byte{0, 0, 219}: "British Telecommunications plc",
- [3]byte{0, 0, 220}: "HAYES MICROCOMPUTER PRODUCTS",
- [3]byte{0, 0, 221}: "TCL INCORPORATED",
- [3]byte{0, 0, 222}: "CETIA",
- [3]byte{0, 0, 223}: "BELL & HOWELL PUB SYS DIV",
- [3]byte{0, 0, 224}: "QUADRAM CORP.",
- [3]byte{0, 0, 225}: "GRID SYSTEMS",
- [3]byte{0, 0, 226}: "ACER TECHNOLOGIES CORP.",
- [3]byte{0, 0, 227}: "INTEGRATED MICRO PRODUCTS LTD",
- [3]byte{0, 0, 228}: "IN2 GROUPE INTERTECHNIQUE",
- [3]byte{0, 0, 229}: "SIGMEX LTD.",
- [3]byte{0, 0, 230}: "APTOR PRODUITS DE COMM INDUST",
- [3]byte{0, 0, 231}: "Star Gate Technologies",
- [3]byte{0, 0, 232}: "ACCTON TECHNOLOGY CORP.",
- [3]byte{0, 0, 233}: "ISICAD, INC.",
- [3]byte{0, 0, 234}: "UPNOD AB",
- [3]byte{0, 0, 235}: "MATSUSHITA COMM. IND. CO. LTD.",
- [3]byte{0, 0, 236}: "MICROPROCESS",
- [3]byte{0, 0, 237}: "APRIL",
- [3]byte{0, 0, 238}: "NETWORK DESIGNERS, LTD.",
- [3]byte{0, 0, 239}: "KTI",
- [3]byte{0, 0, 240}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 0, 241}: "MAGNA COMPUTER CORPORATION",
- [3]byte{0, 0, 242}: "SPIDER COMMUNICATIONS",
- [3]byte{0, 0, 243}: "GANDALF DATA LIMITED",
- [3]byte{0, 0, 244}: "Allied Telesis, Inc.",
- [3]byte{0, 0, 245}: "DIAMOND SALES LIMITED",
- [3]byte{0, 0, 246}: "APPLIED MICROSYSTEMS CORP.",
- [3]byte{0, 0, 247}: "YOUTH KEEP ENTERPRISE CO LTD",
- [3]byte{0, 0, 248}: "DIGITAL EQUIPMENT CORPORATION",
- [3]byte{0, 0, 249}: "QUOTRON SYSTEMS INC.",
- [3]byte{0, 0, 250}: "MICROSAGE COMPUTER SYSTEMS INC",
- [3]byte{0, 0, 251}: "RECHNER ZUR KOMMUNIKATION",
- [3]byte{0, 0, 252}: "MEIKO",
- [3]byte{0, 0, 253}: "HIGH LEVEL HARDWARE",
- [3]byte{0, 0, 254}: "Annapolis Micro Systems, Inc.",
- [3]byte{0, 0, 255}: "CAMTEC ELECTRONICS LTD.",
- [3]byte{0, 1, 0}: "EQUIP'TRANS",
- [3]byte{0, 1, 1}: "Private",
- [3]byte{0, 1, 2}: "3COM CORPORATION",
- [3]byte{0, 1, 3}: "3COM CORPORATION",
- [3]byte{0, 1, 4}: "DVICO Co., Ltd.",
- [3]byte{0, 1, 5}: "Beckhoff Automation GmbH",
- [3]byte{0, 1, 6}: "Tews Datentechnik GmbH",
- [3]byte{0, 1, 7}: "Leiser GmbH",
- [3]byte{0, 1, 8}: "AVLAB Technology, Inc.",
- [3]byte{0, 1, 9}: "Nagano Japan Radio Co., Ltd.",
- [3]byte{0, 1, 10}: "CIS TECHNOLOGY INC.",
- [3]byte{0, 1, 11}: "Space CyberLink, Inc.",
- [3]byte{0, 1, 12}: "System Talks Inc.",
- [3]byte{0, 1, 13}: "Teledyne DALSA Inc.",
- [3]byte{0, 1, 14}: "Bri-Link Technologies Co., Ltd",
- [3]byte{0, 1, 15}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 1, 16}: "Gotham Networks",
- [3]byte{0, 1, 17}: "iDigm Inc.",
- [3]byte{0, 1, 18}: "Shark Multimedia Inc.",
- [3]byte{0, 1, 19}: "OLYMPUS CORPORATION",
- [3]byte{0, 1, 20}: "KANDA TSUSHIN KOGYO CO., LTD.",
- [3]byte{0, 1, 21}: "EXTRATECH CORPORATION",
- [3]byte{0, 1, 22}: "Netspect Technologies, Inc.",
- [3]byte{0, 1, 23}: "Canal +",
- [3]byte{0, 1, 24}: "EZ Digital Co., Ltd.",
- [3]byte{0, 1, 25}: "RTUnet (Australia)",
- [3]byte{0, 1, 26}: "Hoffmann und Burmeister GbR",
- [3]byte{0, 1, 27}: "Unizone Technologies, Inc.",
- [3]byte{0, 1, 28}: "Universal Talkware Corporation",
- [3]byte{0, 1, 29}: "Centillium Communications",
- [3]byte{0, 1, 30}: "Precidia Technologies, Inc.",
- [3]byte{0, 1, 31}: "RC Networks, Inc.",
- [3]byte{0, 1, 32}: "OSCILLOQUARTZ S.A.",
- [3]byte{0, 1, 33}: "Watchguard Technologies, Inc.",
- [3]byte{0, 1, 34}: "Trend Communications, Ltd.",
- [3]byte{0, 1, 35}: "Schneider Electric Japan Holdings Ltd.",
- [3]byte{0, 1, 36}: "Acer Incorporated",
- [3]byte{0, 1, 37}: "YAESU MUSEN CO., LTD.",
- [3]byte{0, 1, 38}: "PAC Labs",
- [3]byte{0, 1, 39}: "OPEN Networks Pty Ltd",
- [3]byte{0, 1, 40}: "EnjoyWeb, Inc.",
- [3]byte{0, 1, 41}: "DFI Inc.",
- [3]byte{0, 1, 42}: "Telematica Sistems Inteligente",
- [3]byte{0, 1, 43}: "TELENET Co., Ltd.",
- [3]byte{0, 1, 44}: "Aravox Technologies, Inc.",
- [3]byte{0, 1, 45}: "Komodo Technology",
- [3]byte{0, 1, 46}: "PC Partner Ltd.",
- [3]byte{0, 1, 47}: "Twinhead International Corp",
- [3]byte{0, 1, 48}: "Extreme Networks, Inc.",
- [3]byte{0, 1, 49}: "Bosch Security Systems, Inc.",
- [3]byte{0, 1, 50}: "Dranetz - BMI",
- [3]byte{0, 1, 51}: "KYOWA Electronic Instruments C",
- [3]byte{0, 1, 52}: "Selectron Systems AG",
- [3]byte{0, 1, 53}: "KDC Corp.",
- [3]byte{0, 1, 54}: "CyberTAN Technology Inc.",
- [3]byte{0, 1, 55}: "IT Farm Corporation",
- [3]byte{0, 1, 56}: "XAVi Technologies Corp.",
- [3]byte{0, 1, 57}: "Point Multimedia Systems",
- [3]byte{0, 1, 58}: "SHELCAD COMMUNICATIONS, LTD.",
- [3]byte{0, 1, 59}: "BNA SYSTEMS",
- [3]byte{0, 1, 60}: "TIW SYSTEMS",
- [3]byte{0, 1, 61}: "RiscStation Ltd.",
- [3]byte{0, 1, 62}: "Ascom Tateco AB",
- [3]byte{0, 1, 63}: "Neighbor World Co., Ltd.",
- [3]byte{0, 1, 64}: "Sendtek Corporation",
- [3]byte{0, 1, 65}: "CABLE PRINT",
- [3]byte{0, 1, 66}: "Cisco Systems, Inc",
- [3]byte{0, 1, 67}: "Cisco Systems, Inc",
- [3]byte{0, 1, 68}: "Dell EMC",
- [3]byte{0, 1, 69}: "WINSYSTEMS, INC.",
- [3]byte{0, 1, 70}: "Tesco Controls, Inc.",
- [3]byte{0, 1, 71}: "Zhone Technologies",
- [3]byte{0, 1, 72}: "X-traWeb Inc.",
- [3]byte{0, 1, 73}: "T.D.T. Transfer Data Test GmbH",
- [3]byte{0, 1, 74}: "Sony Corporation",
- [3]byte{0, 1, 75}: "Ennovate Networks, Inc.",
- [3]byte{0, 1, 76}: "Berkeley Process Control",
- [3]byte{0, 1, 77}: "Shin Kin Enterprises Co., Ltd",
- [3]byte{0, 1, 78}: "WIN Enterprises, Inc.",
- [3]byte{0, 1, 79}: "Adtran Inc",
- [3]byte{0, 1, 80}: "GILAT COMMUNICATIONS, LTD.",
- [3]byte{0, 1, 81}: "Ensemble Communications",
- [3]byte{0, 1, 82}: "CHROMATEK INC.",
- [3]byte{0, 1, 83}: "ARCHTEK TELECOM CORPORATION",
- [3]byte{0, 1, 84}: "G3M Corporation",
- [3]byte{0, 1, 85}: "Promise Technology, Inc.",
- [3]byte{0, 1, 86}: "FIREWIREDIRECT.COM, INC.",
- [3]byte{0, 1, 87}: "SYSWAVE CO., LTD",
- [3]byte{0, 1, 88}: "Electro Industries/Gauge Tech",
- [3]byte{0, 1, 89}: "S1 Corporation",
- [3]byte{0, 1, 90}: "Digital Video Broadcasting",
- [3]byte{0, 1, 91}: "ITALTEL S.p.A/RF-UP-I",
- [3]byte{0, 1, 92}: "CADANT INC.",
- [3]byte{0, 1, 93}: "Oracle Corporation",
- [3]byte{0, 1, 94}: "BEST TECHNOLOGY CO., LTD.",
- [3]byte{0, 1, 95}: "DIGITAL DESIGN GmbH",
- [3]byte{0, 1, 96}: "ELMEX Co., LTD.",
- [3]byte{0, 1, 97}: "Meta Machine Technology",
- [3]byte{0, 1, 98}: "Cygnet Technologies, Inc.",
- [3]byte{0, 1, 99}: "Cisco Systems, Inc",
- [3]byte{0, 1, 100}: "Cisco Systems, Inc",
- [3]byte{0, 1, 101}: "AirSwitch Corporation",
- [3]byte{0, 1, 102}: "TC GROUP A/S",
- [3]byte{0, 1, 103}: "HIOKI E.E. CORPORATION",
- [3]byte{0, 1, 104}: "VITANA CORPORATION",
- [3]byte{0, 1, 105}: "Celestix Networks Pte Ltd.",
- [3]byte{0, 1, 106}: "ALITEC",
- [3]byte{0, 1, 107}: "LightChip, Inc.",
- [3]byte{0, 1, 108}: "FOXCONN",
- [3]byte{0, 1, 109}: "CarrierComm Inc.",
- [3]byte{0, 1, 110}: "Conklin Corporation",
- [3]byte{0, 1, 111}: "Inkel Corp.",
- [3]byte{0, 1, 112}: "ESE Embedded System Engineer'g",
- [3]byte{0, 1, 113}: "Allied Data Technologies",
- [3]byte{0, 1, 114}: "TechnoLand Co., LTD.",
- [3]byte{0, 1, 115}: "AMCC",
- [3]byte{0, 1, 116}: "CyberOptics Corporation",
- [3]byte{0, 1, 117}: "Radiant Communications Corp.",
- [3]byte{0, 1, 118}: "Orient Silver Enterprises",
- [3]byte{0, 1, 119}: "EDSL",
- [3]byte{0, 1, 120}: "MARGI Systems, Inc.",
- [3]byte{0, 1, 121}: "WIRELESS TECHNOLOGY, INC.",
- [3]byte{0, 1, 122}: "Chengdu Maipu Electric Industrial Co., Ltd.",
- [3]byte{0, 1, 123}: "Heidelberger Druckmaschinen AG",
- [3]byte{0, 1, 124}: "AG-E GmbH",
- [3]byte{0, 1, 125}: "ThermoQuest",
- [3]byte{0, 1, 126}: "ADTEK System Science Co., Ltd.",
- [3]byte{0, 1, 127}: "Experience Music Project",
- [3]byte{0, 1, 128}: "AOpen, Inc.",
- [3]byte{0, 1, 129}: "Nortel Networks",
- [3]byte{0, 1, 130}: "DICA TECHNOLOGIES AG",
- [3]byte{0, 1, 131}: "ANITE TELECOMS",
- [3]byte{0, 1, 132}: "SIEB & MEYER AG",
- [3]byte{0, 1, 133}: "Hitachi Aloka Medical, Ltd.",
- [3]byte{0, 1, 134}: "Uwe Disch",
- [3]byte{0, 1, 135}: "I2SE GmbH",
- [3]byte{0, 1, 136}: "LXCO Technologies ag",
- [3]byte{0, 1, 137}: "Refraction Technology, Inc.",
- [3]byte{0, 1, 138}: "ROI COMPUTER AG",
- [3]byte{0, 1, 139}: "NetLinks Co., Ltd.",
- [3]byte{0, 1, 140}: "Mega Vision",
- [3]byte{0, 1, 141}: "AudeSi Technologies",
- [3]byte{0, 1, 142}: "Logitec Corporation",
- [3]byte{0, 1, 143}: "Kenetec, Inc.",
- [3]byte{0, 1, 144}: "SMK-M",
- [3]byte{0, 1, 145}: "SYRED Data Systems",
- [3]byte{0, 1, 146}: "Texas Digital Systems",
- [3]byte{0, 1, 147}: "Hanbyul Telecom Co., Ltd.",
- [3]byte{0, 1, 148}: "Capital Equipment Corporation",
- [3]byte{0, 1, 149}: "Sena Technologies, Inc.",
- [3]byte{0, 1, 150}: "Cisco Systems, Inc",
- [3]byte{0, 1, 151}: "Cisco Systems, Inc",
- [3]byte{0, 1, 152}: "Darim Vision",
- [3]byte{0, 1, 153}: "HeiSei Electronics",
- [3]byte{0, 1, 154}: "LEUNIG GmbH",
- [3]byte{0, 1, 155}: "Kyoto Microcomputer Co., Ltd.",
- [3]byte{0, 1, 156}: "JDS Uniphase Inc.",
- [3]byte{0, 1, 157}: "E-Control Systems, Inc.",
- [3]byte{0, 1, 158}: "ESS Technology, Inc.",
- [3]byte{0, 1, 159}: "ReadyNet",
- [3]byte{0, 1, 160}: "Infinilink Corporation",
- [3]byte{0, 1, 161}: "Mag-Tek, Inc.",
- [3]byte{0, 1, 162}: "Logical Co., Ltd.",
- [3]byte{0, 1, 163}: "GENESYS LOGIC, INC.",
- [3]byte{0, 1, 164}: "Microlink Corporation",
- [3]byte{0, 1, 165}: "Nextcomm, Inc.",
- [3]byte{0, 1, 166}: "Scientific-Atlanta Arcodan A/S",
- [3]byte{0, 1, 167}: "UNEX TECHNOLOGY CORPORATION",
- [3]byte{0, 1, 168}: "Welltech Computer Co., Ltd.",
- [3]byte{0, 1, 169}: "BMW AG",
- [3]byte{0, 1, 170}: "Airspan Communications, Ltd.",
- [3]byte{0, 1, 171}: "Main Street Networks",
- [3]byte{0, 1, 172}: "Sitara Networks, Inc.",
- [3]byte{0, 1, 173}: "Coach Master International d.b.a. CMI Worldwide, Inc.",
- [3]byte{0, 1, 174}: "Trex Enterprises",
- [3]byte{0, 1, 175}: "Artesyn Embedded Technologies",
- [3]byte{0, 1, 176}: "Fulltek Technology Co., Ltd.",
- [3]byte{0, 1, 177}: "General Bandwidth",
- [3]byte{0, 1, 178}: "Digital Processing Systems, Inc.",
- [3]byte{0, 1, 179}: "Precision Electronic Manufacturing",
- [3]byte{0, 1, 180}: "Wayport, Inc.",
- [3]byte{0, 1, 181}: "Turin Networks, Inc.",
- [3]byte{0, 1, 182}: "SAEJIN T&M Co., Ltd.",
- [3]byte{0, 1, 183}: "Centos, Inc.",
- [3]byte{0, 1, 184}: "Netsensity, Inc.",
- [3]byte{0, 1, 185}: "SKF Condition Monitoring",
- [3]byte{0, 1, 186}: "IC-Net, Inc.",
- [3]byte{0, 1, 187}: "Frequentis",
- [3]byte{0, 1, 188}: "Brains Corporation",
- [3]byte{0, 1, 189}: "Peterson Electro-Musical Products, Inc.",
- [3]byte{0, 1, 190}: "Gigalink Co., Ltd.",
- [3]byte{0, 1, 191}: "Teleforce Co., Ltd.",
- [3]byte{0, 1, 192}: "CompuLab, Ltd.",
- [3]byte{0, 1, 193}: "Vitesse Semiconductor Corporation",
- [3]byte{0, 1, 194}: "ARK Research Corp.",
- [3]byte{0, 1, 195}: "Acromag, Inc.",
- [3]byte{0, 1, 196}: "NeoWave, Inc.",
- [3]byte{0, 1, 197}: "Simpler Networks",
- [3]byte{0, 1, 198}: "Quarry Technologies",
- [3]byte{0, 1, 199}: "Cisco Systems, Inc",
- [3]byte{0, 1, 200}: "THOMAS CONRAD CORP.",
- [3]byte{0, 1, 200}: "CONRAD CORP.",
- [3]byte{0, 1, 201}: "Cisco Systems, Inc",
- [3]byte{0, 1, 202}: "Geocast Network Systems, Inc.",
- [3]byte{0, 1, 203}: "EVR",
- [3]byte{0, 1, 204}: "Japan Total Design Communication Co., Ltd.",
- [3]byte{0, 1, 205}: "ARtem",
- [3]byte{0, 1, 206}: "Custom Micro Products, Ltd.",
- [3]byte{0, 1, 207}: "Alpha Data Parallel Systems, Ltd.",
- [3]byte{0, 1, 208}: "VitalPoint, Inc.",
- [3]byte{0, 1, 209}: "CoNet Communications, Inc.",
- [3]byte{0, 1, 210}: "inXtron, Inc.",
- [3]byte{0, 1, 211}: "PAXCOMM, Inc.",
- [3]byte{0, 1, 212}: "Leisure Time, Inc.",
- [3]byte{0, 1, 213}: "HAEDONG INFO & COMM CO., LTD",
- [3]byte{0, 1, 214}: "manroland AG",
- [3]byte{0, 1, 215}: "F5 Networks, Inc.",
- [3]byte{0, 1, 216}: "Teltronics, Inc.",
- [3]byte{0, 1, 217}: "Sigma, Inc.",
- [3]byte{0, 1, 218}: "WINCOMM Corporation",
- [3]byte{0, 1, 219}: "Freecom Technologies GmbH",
- [3]byte{0, 1, 220}: "Activetelco",
- [3]byte{0, 1, 221}: "Avail Networks",
- [3]byte{0, 1, 222}: "Trango Systems, Inc.",
- [3]byte{0, 1, 223}: "ISDN Communications, Ltd.",
- [3]byte{0, 1, 224}: "Fast Systems, Inc.",
- [3]byte{0, 1, 225}: "Kinpo Electronics, Inc.",
- [3]byte{0, 1, 226}: "Ando Electric Corporation",
- [3]byte{0, 1, 227}: "Siemens AG",
- [3]byte{0, 1, 228}: "Sitera, Inc.",
- [3]byte{0, 1, 229}: "Supernet, Inc.",
- [3]byte{0, 1, 230}: "Hewlett Packard",
- [3]byte{0, 1, 231}: "Hewlett Packard",
- [3]byte{0, 1, 232}: "Force10 Networks, Inc.",
- [3]byte{0, 1, 233}: "Litton Marine Systems B.V.",
- [3]byte{0, 1, 234}: "Cirilium Corp.",
- [3]byte{0, 1, 235}: "C-COM Corporation",
- [3]byte{0, 1, 236}: "Ericsson Group",
- [3]byte{0, 1, 237}: "SETA Corp.",
- [3]byte{0, 1, 238}: "Comtrol Europe, Ltd.",
- [3]byte{0, 1, 239}: "Camtel Technology Corp.",
- [3]byte{0, 1, 240}: "Tridium, Inc.",
- [3]byte{0, 1, 241}: "Innovative Concepts, Inc.",
- [3]byte{0, 1, 242}: "Mark of the Unicorn, Inc.",
- [3]byte{0, 1, 243}: "QPS, Inc.",
- [3]byte{0, 1, 244}: "Enterasys",
- [3]byte{0, 1, 245}: "ERIM S.A.",
- [3]byte{0, 1, 246}: "Association of Musical Electronics Industry",
- [3]byte{0, 1, 247}: "Image Display Systems, Inc.",
- [3]byte{0, 1, 248}: "TEXIO TECHNOLOGY CORPORATION",
- [3]byte{0, 1, 249}: "TeraGlobal Communications Corp.",
- [3]byte{0, 1, 250}: "HOROSCAS",
- [3]byte{0, 1, 251}: "DoTop Technology, Inc.",
- [3]byte{0, 1, 252}: "Keyence Corporation",
- [3]byte{0, 1, 253}: "Digital Voice Systems, Inc.",
- [3]byte{0, 1, 254}: "DIGITAL EQUIPMENT CORPORATION",
- [3]byte{0, 1, 255}: "Data Direct Networks, Inc.",
- [3]byte{0, 2, 0}: "Net & Sys Co., Ltd.",
- [3]byte{0, 2, 1}: "IFM Electronic gmbh",
- [3]byte{0, 2, 2}: "Amino Communications, Ltd.",
- [3]byte{0, 2, 3}: "Woonsang Telecom, Inc.",
- [3]byte{0, 2, 4}: "Bodmann Industries Elektronik GmbH",
- [3]byte{0, 2, 5}: "Hitachi Denshi, Ltd.",
- [3]byte{0, 2, 6}: "Telital R&D Denmark A/S",
- [3]byte{0, 2, 7}: "VisionGlobal Network Corp.",
- [3]byte{0, 2, 8}: "Unify Networks, Inc.",
- [3]byte{0, 2, 9}: "Shenzhen SED Information Technology Co., Ltd.",
- [3]byte{0, 2, 10}: "Gefran Spa",
- [3]byte{0, 2, 11}: "Native Networks, Inc.",
- [3]byte{0, 2, 12}: "Metro-Optix",
- [3]byte{0, 2, 13}: "Micronpc.com",
- [3]byte{0, 2, 14}: "ECI Telecom Ltd.",
- [3]byte{0, 2, 15}: "AATR",
- [3]byte{0, 2, 16}: "Fenecom",
- [3]byte{0, 2, 17}: "Nature Worldwide Technology Corp.",
- [3]byte{0, 2, 18}: "SierraCom",
- [3]byte{0, 2, 19}: "S.D.E.L.",
- [3]byte{0, 2, 20}: "DTVRO",
- [3]byte{0, 2, 21}: "Cotas Computer Technology A/B",
- [3]byte{0, 2, 22}: "Cisco Systems, Inc",
- [3]byte{0, 2, 23}: "Cisco Systems, Inc",
- [3]byte{0, 2, 24}: "Advanced Scientific Corp",
- [3]byte{0, 2, 25}: "Paralon Technologies",
- [3]byte{0, 2, 26}: "Zuma Networks",
- [3]byte{0, 2, 27}: "Kollmorgen-Servotronix",
- [3]byte{0, 2, 28}: "Network Elements, Inc.",
- [3]byte{0, 2, 29}: "Data General Communication Ltd.",
- [3]byte{0, 2, 30}: "SIMTEL S.R.L.",
- [3]byte{0, 2, 31}: "Aculab PLC",
- [3]byte{0, 2, 32}: "CANON FINETECH INC.",
- [3]byte{0, 2, 33}: "DSP Application, Ltd.",
- [3]byte{0, 2, 34}: "Chromisys, Inc.",
- [3]byte{0, 2, 35}: "ClickTV",
- [3]byte{0, 2, 36}: "C-COR",
- [3]byte{0, 2, 37}: "One Stop Systems",
- [3]byte{0, 2, 38}: "XESystems, Inc.",
- [3]byte{0, 2, 39}: "ESD Electronic System Design GmbH",
- [3]byte{0, 2, 40}: "Necsom, Ltd.",
- [3]byte{0, 2, 41}: "Adtec Corporation",
- [3]byte{0, 2, 42}: "Asound Electronic",
- [3]byte{0, 2, 43}: "SAXA, Inc.",
- [3]byte{0, 2, 44}: "ABB Bomem, Inc.",
- [3]byte{0, 2, 45}: "Agere Systems",
- [3]byte{0, 2, 46}: "TEAC Corp. R& D",
- [3]byte{0, 2, 47}: "P-Cube, Ltd.",
- [3]byte{0, 2, 48}: "Intersoft Electronics",
- [3]byte{0, 2, 49}: "Ingersoll-Rand",
- [3]byte{0, 2, 50}: "Avision, Inc.",
- [3]byte{0, 2, 51}: "Mantra Communications, Inc.",
- [3]byte{0, 2, 52}: "Imperial Technology, Inc.",
- [3]byte{0, 2, 53}: "Paragon Networks International",
- [3]byte{0, 2, 54}: "INIT GmbH",
- [3]byte{0, 2, 55}: "Cosmo Research Corp.",
- [3]byte{0, 2, 56}: "Serome Technology, Inc.",
- [3]byte{0, 2, 57}: "Visicom",
- [3]byte{0, 2, 58}: "ZSK Stickmaschinen GmbH",
- [3]byte{0, 2, 59}: "Ericsson",
- [3]byte{0, 2, 60}: "Creative Technology, Ltd.",
- [3]byte{0, 2, 61}: "Cisco Systems, Inc",
- [3]byte{0, 2, 62}: "Selta Telematica S.p.a",
- [3]byte{0, 2, 63}: "COMPAL ELECTRONICS, INC.",
- [3]byte{0, 2, 64}: "Seedek Co., Ltd.",
- [3]byte{0, 2, 65}: "Amer.com",
- [3]byte{0, 2, 66}: "Videoframe Systems",
- [3]byte{0, 2, 67}: "Raysis Co., Ltd.",
- [3]byte{0, 2, 68}: "SURECOM Technology Co.",
- [3]byte{0, 2, 69}: "Lampus Co, Ltd.",
- [3]byte{0, 2, 70}: "All-Win Tech Co., Ltd.",
- [3]byte{0, 2, 71}: "Great Dragon Information Technology (Group) Co., Ltd.",
- [3]byte{0, 2, 72}: "Pilz GmbH & Co.",
- [3]byte{0, 2, 73}: "Aviv Infocom Co, Ltd.",
- [3]byte{0, 2, 74}: "Cisco Systems, Inc",
- [3]byte{0, 2, 75}: "Cisco Systems, Inc",
- [3]byte{0, 2, 76}: "SiByte, Inc.",
- [3]byte{0, 2, 77}: "Mannesman Dematic Colby Pty. Ltd.",
- [3]byte{0, 2, 78}: "Datacard Group",
- [3]byte{0, 2, 79}: "IPM Datacom S.R.L.",
- [3]byte{0, 2, 80}: "Geyser Networks, Inc.",
- [3]byte{0, 2, 81}: "Soma Networks, Inc.",
- [3]byte{0, 2, 82}: "Carrier Corporation",
- [3]byte{0, 2, 83}: "Televideo, Inc.",
- [3]byte{0, 2, 84}: "WorldGate",
- [3]byte{0, 2, 85}: "IBM Corp",
- [3]byte{0, 2, 86}: "Alpha Processor, Inc.",
- [3]byte{0, 2, 87}: "Microcom Corp.",
- [3]byte{0, 2, 88}: "Flying Packets Communications",
- [3]byte{0, 2, 89}: "Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group",
- [3]byte{0, 2, 90}: "Catena Networks",
- [3]byte{0, 2, 91}: "Cambridge Silicon Radio",
- [3]byte{0, 2, 92}: "SCI Systems (Kunshan) Co., Ltd.",
- [3]byte{0, 2, 93}: "Calix Networks",
- [3]byte{0, 2, 94}: "High Technology Ltd",
- [3]byte{0, 2, 95}: "Nortel Networks",
- [3]byte{0, 2, 96}: "Accordion Networks, Inc.",
- [3]byte{0, 2, 97}: "Tilgin AB",
- [3]byte{0, 2, 98}: "Soyo Group Soyo Com Tech Co., Ltd",
- [3]byte{0, 2, 99}: "UPS Manufacturing SRL",
- [3]byte{0, 2, 100}: "AudioRamp.com",
- [3]byte{0, 2, 101}: "Virditech Co. Ltd.",
- [3]byte{0, 2, 102}: "Thermalogic Corporation",
- [3]byte{0, 2, 103}: "NODE RUNNER, INC.",
- [3]byte{0, 2, 104}: "Harris Government Communications",
- [3]byte{0, 2, 105}: "Nadatel Co., Ltd",
- [3]byte{0, 2, 106}: "Cocess Telecom Co., Ltd.",
- [3]byte{0, 2, 107}: "BCM Computers Co., Ltd.",
- [3]byte{0, 2, 108}: "Philips CFT",
- [3]byte{0, 2, 109}: "Adept Telecom",
- [3]byte{0, 2, 110}: "NeGeN Access, Inc.",
- [3]byte{0, 2, 111}: "Senao International Co., Ltd.",
- [3]byte{0, 2, 112}: "Crewave Co., Ltd.",
- [3]byte{0, 2, 113}: "Zhone Technologies",
- [3]byte{0, 2, 114}: "CC&C Technologies, Inc.",
- [3]byte{0, 2, 115}: "Coriolis Networks",
- [3]byte{0, 2, 116}: "Tommy Technologies Corp.",
- [3]byte{0, 2, 117}: "SMART Technologies, Inc.",
- [3]byte{0, 2, 118}: "Primax Electronics Ltd.",
- [3]byte{0, 2, 119}: "Cash Systemes Industrie",
- [3]byte{0, 2, 120}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{0, 2, 121}: "Control Applications, Ltd.",
- [3]byte{0, 2, 122}: "IOI Technology Corporation",
- [3]byte{0, 2, 123}: "Amplify Net, Inc.",
- [3]byte{0, 2, 124}: "Trilithic, Inc.",
- [3]byte{0, 2, 125}: "Cisco Systems, Inc",
- [3]byte{0, 2, 126}: "Cisco Systems, Inc",
- [3]byte{0, 2, 127}: "ask-technologies.com",
- [3]byte{0, 2, 128}: "Mu Net, Inc.",
- [3]byte{0, 2, 129}: "Madge Ltd.",
- [3]byte{0, 2, 130}: "ViaClix, Inc.",
- [3]byte{0, 2, 131}: "Spectrum Controls, Inc.",
- [3]byte{0, 2, 132}: "AREVA T&D",
- [3]byte{0, 2, 133}: "Riverstone Networks",
- [3]byte{0, 2, 134}: "Occam Networks",
- [3]byte{0, 2, 135}: "Adapcom",
- [3]byte{0, 2, 136}: "GLOBAL VILLAGE COMMUNICATION",
- [3]byte{0, 2, 137}: "DNE Technologies",
- [3]byte{0, 2, 138}: "Ambit Microsystems Corporation",
- [3]byte{0, 2, 139}: "VDSL Systems OY",
- [3]byte{0, 2, 140}: "Micrel-Synergy Semiconductor",
- [3]byte{0, 2, 141}: "Movita Technologies, Inc.",
- [3]byte{0, 2, 142}: "Rapid 5 Networks, Inc.",
- [3]byte{0, 2, 143}: "Globetek, Inc.",
- [3]byte{0, 2, 144}: "Woorigisool, Inc.",
- [3]byte{0, 2, 145}: "Open Network Co., Ltd.",
- [3]byte{0, 2, 146}: "Logic Innovations, Inc.",
- [3]byte{0, 2, 147}: "Solid Data Systems",
- [3]byte{0, 2, 148}: "Tokyo Sokushin Co., Ltd.",
- [3]byte{0, 2, 149}: "IP.Access Limited",
- [3]byte{0, 2, 150}: "Lectron Co,. Ltd.",
- [3]byte{0, 2, 151}: "C-COR.net",
- [3]byte{0, 2, 152}: "Broadframe Corporation",
- [3]byte{0, 2, 153}: "Apex, Inc.",
- [3]byte{0, 2, 154}: "Storage Apps",
- [3]byte{0, 2, 155}: "Kreatel Communications AB",
- [3]byte{0, 2, 156}: "3COM",
- [3]byte{0, 2, 157}: "Merix Corp.",
- [3]byte{0, 2, 158}: "Information Equipment Co., Ltd.",
- [3]byte{0, 2, 159}: "L-3 Communication Aviation Recorders",
- [3]byte{0, 2, 160}: "Flatstack Ltd.",
- [3]byte{0, 2, 161}: "World Wide Packets",
- [3]byte{0, 2, 162}: "Hilscher GmbH",
- [3]byte{0, 2, 163}: "ABB Switzerland Ltd, Power Systems",
- [3]byte{0, 2, 164}: "AddPac Technology Co., Ltd.",
- [3]byte{0, 2, 165}: "Hewlett Packard",
- [3]byte{0, 2, 166}: "Effinet Systems Co., Ltd.",
- [3]byte{0, 2, 167}: "Vivace Networks",
- [3]byte{0, 2, 168}: "Air Link Technology",
- [3]byte{0, 2, 169}: "RACOM, s.r.o.",
- [3]byte{0, 2, 170}: "PLcom Co., Ltd.",
- [3]byte{0, 2, 171}: "CTC Union Technologies Co., Ltd.",
- [3]byte{0, 2, 172}: "3PAR data",
- [3]byte{0, 2, 173}: "HOYA Corporation",
- [3]byte{0, 2, 174}: "Scannex Electronics Ltd.",
- [3]byte{0, 2, 175}: "TeleCruz Technology, Inc.",
- [3]byte{0, 2, 176}: "Hokubu Communication & Industrial Co., Ltd.",
- [3]byte{0, 2, 177}: "Anritsu, Ltd.",
- [3]byte{0, 2, 178}: "Cablevision",
- [3]byte{0, 2, 179}: "Intel Corporation",
- [3]byte{0, 2, 180}: "DAPHNE",
- [3]byte{0, 2, 181}: "Avnet, Inc.",
- [3]byte{0, 2, 182}: "Acrosser Technology Co., Ltd.",
- [3]byte{0, 2, 183}: "Watanabe Electric Industry Co., Ltd.",
- [3]byte{0, 2, 184}: "WHI KONSULT AB",
- [3]byte{0, 2, 185}: "Cisco Systems, Inc",
- [3]byte{0, 2, 186}: "Cisco Systems, Inc",
- [3]byte{0, 2, 187}: "Continuous Computing Corp",
- [3]byte{0, 2, 188}: "LVL 7 Systems, Inc.",
- [3]byte{0, 2, 189}: "Bionet Co., Ltd.",
- [3]byte{0, 2, 190}: "Totsu Engineering, Inc.",
- [3]byte{0, 2, 191}: "dotRocket, Inc.",
- [3]byte{0, 2, 192}: "Bencent Tzeng Industry Co., Ltd.",
- [3]byte{0, 2, 193}: "Innovative Electronic Designs, Inc.",
- [3]byte{0, 2, 194}: "Net Vision Telecom",
- [3]byte{0, 2, 195}: "Arelnet Ltd.",
- [3]byte{0, 2, 196}: "Vector International BVBA",
- [3]byte{0, 2, 197}: "Evertz Microsystems Ltd.",
- [3]byte{0, 2, 198}: "Data Track Technology PLC",
- [3]byte{0, 2, 199}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 2, 200}: "Technocom Communications Technology (pte) Ltd",
- [3]byte{0, 2, 201}: "Mellanox Technologies, Inc.",
- [3]byte{0, 2, 202}: "EndPoints, Inc.",
- [3]byte{0, 2, 203}: "TriState Ltd.",
- [3]byte{0, 2, 204}: "M.C.C.I",
- [3]byte{0, 2, 205}: "TeleDream, Inc.",
- [3]byte{0, 2, 206}: "FoxJet, Inc.",
- [3]byte{0, 2, 207}: "ZyGate Communications, Inc.",
- [3]byte{0, 2, 208}: "Comdial Corporation",
- [3]byte{0, 2, 209}: "Vivotek, Inc.",
- [3]byte{0, 2, 210}: "Workstation AG",
- [3]byte{0, 2, 211}: "NetBotz, Inc.",
- [3]byte{0, 2, 212}: "PDA Peripherals, Inc.",
- [3]byte{0, 2, 213}: "ACR",
- [3]byte{0, 2, 214}: "NICE Systems",
- [3]byte{0, 2, 215}: "EMPEG Ltd",
- [3]byte{0, 2, 216}: "BRECIS Communications Corporation",
- [3]byte{0, 2, 217}: "Reliable Controls",
- [3]byte{0, 2, 218}: "ExiO Communications, Inc.",
- [3]byte{0, 2, 219}: "NETSEC",
- [3]byte{0, 2, 220}: "Fujitsu General Limited",
- [3]byte{0, 2, 221}: "Bromax Communications, Ltd.",
- [3]byte{0, 2, 222}: "Astrodesign, Inc.",
- [3]byte{0, 2, 223}: "Net Com Systems, Inc.",
- [3]byte{0, 2, 224}: "ETAS GmbH",
- [3]byte{0, 2, 225}: "Integrated Network Corporation",
- [3]byte{0, 2, 226}: "NDC Infared Engineering",
- [3]byte{0, 2, 227}: "LITE-ON Communications, Inc.",
- [3]byte{0, 2, 228}: "JC HYUN Systems, Inc.",
- [3]byte{0, 2, 229}: "Timeware Ltd.",
- [3]byte{0, 2, 230}: "Gould Instrument Systems, Inc.",
- [3]byte{0, 2, 231}: "CAB GmbH & Co KG",
- [3]byte{0, 2, 232}: "E.D.&A.",
- [3]byte{0, 2, 233}: "CS Systemes De Securite - C3S",
- [3]byte{0, 2, 234}: "Focus Enhancements",
- [3]byte{0, 2, 235}: "Pico Communications",
- [3]byte{0, 2, 236}: "Maschoff Design Engineering",
- [3]byte{0, 2, 237}: "DXO Telecom Co., Ltd.",
- [3]byte{0, 2, 238}: "Nokia Danmark A/S",
- [3]byte{0, 2, 239}: "CCC Network Systems Group Ltd.",
- [3]byte{0, 2, 240}: "AME Optimedia Technology Co., Ltd.",
- [3]byte{0, 2, 241}: "Pinetron Co., Ltd.",
- [3]byte{0, 2, 242}: "eDevice, Inc.",
- [3]byte{0, 2, 243}: "Media Serve Co., Ltd.",
- [3]byte{0, 2, 244}: "PCTEL, Inc.",
- [3]byte{0, 2, 245}: "VIVE Synergies, Inc.",
- [3]byte{0, 2, 246}: "Equipe Communications",
- [3]byte{0, 2, 247}: "ARM",
- [3]byte{0, 2, 248}: "SEAKR Engineering, Inc.",
- [3]byte{0, 2, 249}: "MIMOS Berhad",
- [3]byte{0, 2, 250}: "DX Antenna Co., Ltd.",
- [3]byte{0, 2, 251}: "Baumuller Aulugen-Systemtechnik GmbH",
- [3]byte{0, 2, 252}: "Cisco Systems, Inc",
- [3]byte{0, 2, 253}: "Cisco Systems, Inc",
- [3]byte{0, 2, 254}: "Viditec, Inc.",
- [3]byte{0, 2, 255}: "Handan BroadInfoCom",
- [3]byte{0, 3, 0}: "Barracuda Networks, Inc.",
- [3]byte{0, 3, 1}: "EXFO",
- [3]byte{0, 3, 2}: "Charles Industries, Ltd.",
- [3]byte{0, 3, 3}: "JAMA Electronics Co., Ltd.",
- [3]byte{0, 3, 4}: "Pacific Broadband Communications",
- [3]byte{0, 3, 5}: "MSC Vertriebs GmbH",
- [3]byte{0, 3, 6}: "Fusion In Tech Co., Ltd.",
- [3]byte{0, 3, 7}: "Secure Works, Inc.",
- [3]byte{0, 3, 8}: "AM Communications, Inc.",
- [3]byte{0, 3, 9}: "Texcel Technology PLC",
- [3]byte{0, 3, 10}: "Argus Technologies",
- [3]byte{0, 3, 11}: "Hunter Technology, Inc.",
- [3]byte{0, 3, 12}: "Telesoft Technologies Ltd.",
- [3]byte{0, 3, 13}: "Uniwill Computer Corp.",
- [3]byte{0, 3, 14}: "Core Communications Co., Ltd.",
- [3]byte{0, 3, 15}: "Digital China (Shanghai) Networks Ltd.",
- [3]byte{0, 3, 16}: "E-Globaledge Corporation",
- [3]byte{0, 3, 17}: "Micro Technology Co., Ltd.",
- [3]byte{0, 3, 18}: "TR-Systemtechnik GmbH",
- [3]byte{0, 3, 19}: "Access Media SPA",
- [3]byte{0, 3, 20}: "Teleware Network Systems",
- [3]byte{0, 3, 21}: "Cidco Incorporated",
- [3]byte{0, 3, 22}: "Nobell Communications, Inc.",
- [3]byte{0, 3, 23}: "Merlin Systems, Inc.",
- [3]byte{0, 3, 24}: "Cyras Systems, Inc.",
- [3]byte{0, 3, 25}: "Infineon AG",
- [3]byte{0, 3, 26}: "Beijing Broad Telecom Ltd., China",
- [3]byte{0, 3, 27}: "Cellvision Systems, Inc.",
- [3]byte{0, 3, 28}: "Svenska Hardvarufabriken AB",
- [3]byte{0, 3, 29}: "Taiwan Commate Computer, Inc.",
- [3]byte{0, 3, 30}: "Optranet, Inc.",
- [3]byte{0, 3, 31}: "Condev Ltd.",
- [3]byte{0, 3, 32}: "Xpeed, Inc.",
- [3]byte{0, 3, 33}: "Reco Research Co., Ltd.",
- [3]byte{0, 3, 34}: "IDIS Co., Ltd.",
- [3]byte{0, 3, 35}: "Cornet Technology, Inc.",
- [3]byte{0, 3, 36}: "SANYO Consumer Electronics Co., Ltd.",
- [3]byte{0, 3, 37}: "Arima Computer Corp.",
- [3]byte{0, 3, 38}: "Iwasaki Information Systems Co., Ltd.",
- [3]byte{0, 3, 39}: "ACT'L",
- [3]byte{0, 3, 40}: "Mace Group, Inc.",
- [3]byte{0, 3, 41}: "F3, Inc.",
- [3]byte{0, 3, 42}: "UniData Communication Systems, Inc.",
- [3]byte{0, 3, 43}: "GAI Datenfunksysteme GmbH",
- [3]byte{0, 3, 44}: "ABB Switzerland Ltd",
- [3]byte{0, 3, 45}: "IBASE Technology, Inc.",
- [3]byte{0, 3, 46}: "Scope Information Management, Ltd.",
- [3]byte{0, 3, 47}: "Global Sun Technology, Inc.",
- [3]byte{0, 3, 48}: "Imagenics, Co., Ltd.",
- [3]byte{0, 3, 49}: "Cisco Systems, Inc",
- [3]byte{0, 3, 50}: "Cisco Systems, Inc",
- [3]byte{0, 3, 51}: "Digitel Co., Ltd.",
- [3]byte{0, 3, 52}: "Newport Electronics",
- [3]byte{0, 3, 53}: "Mirae Technology",
- [3]byte{0, 3, 54}: "Zetes Technologies",
- [3]byte{0, 3, 55}: "Vaone, Inc.",
- [3]byte{0, 3, 56}: "Oak Technology",
- [3]byte{0, 3, 57}: "Eurologic Systems, Ltd.",
- [3]byte{0, 3, 58}: "Silicon Wave, Inc.",
- [3]byte{0, 3, 59}: "TAMI Tech Co., Ltd.",
- [3]byte{0, 3, 60}: "Daiden Co., Ltd.",
- [3]byte{0, 3, 61}: "ILSHin Lab",
- [3]byte{0, 3, 62}: "Tateyama System Laboratory Co., Ltd.",
- [3]byte{0, 3, 63}: "BigBand Networks, Ltd.",
- [3]byte{0, 3, 64}: "Floware Wireless Systems, Ltd.",
- [3]byte{0, 3, 65}: "Axon Digital Design",
- [3]byte{0, 3, 66}: "Nortel Networks",
- [3]byte{0, 3, 67}: "Martin Professional A/S",
- [3]byte{0, 3, 68}: "Tietech.Co., Ltd.",
- [3]byte{0, 3, 69}: "Routrek Networks Corporation",
- [3]byte{0, 3, 70}: "Hitachi Kokusai Electric, Inc.",
- [3]byte{0, 3, 71}: "Intel Corporation",
- [3]byte{0, 3, 72}: "Norscan Instruments, Ltd.",
- [3]byte{0, 3, 73}: "Vidicode Datacommunicatie B.V.",
- [3]byte{0, 3, 74}: "RIAS Corporation",
- [3]byte{0, 3, 75}: "Nortel Networks",
- [3]byte{0, 3, 76}: "Shanghai DigiVision Technology Co., Ltd.",
- [3]byte{0, 3, 77}: "Chiaro Networks, Ltd.",
- [3]byte{0, 3, 78}: "Pos Data Company, Ltd.",
- [3]byte{0, 3, 79}: "Sur-Gard Security",
- [3]byte{0, 3, 80}: "BTICINO SPA",
- [3]byte{0, 3, 81}: "Diebold, Inc.",
- [3]byte{0, 3, 82}: "Colubris Networks",
- [3]byte{0, 3, 83}: "Mitac, Inc.",
- [3]byte{0, 3, 84}: "Fiber Logic Communications",
- [3]byte{0, 3, 85}: "TeraBeam Internet Systems",
- [3]byte{0, 3, 86}: "Wincor Nixdorf International GmbH",
- [3]byte{0, 3, 87}: "Intervoice-Brite, Inc.",
- [3]byte{0, 3, 88}: "Hanyang Digitech Co.Ltd",
- [3]byte{0, 3, 89}: "DigitalSis",
- [3]byte{0, 3, 90}: "Photron Limited",
- [3]byte{0, 3, 91}: "BridgeWave Communications",
- [3]byte{0, 3, 92}: "Saint Song Corp.",
- [3]byte{0, 3, 93}: "Bosung Hi-Net Co., Ltd.",
- [3]byte{0, 3, 94}: "Metropolitan Area Networks, Inc.",
- [3]byte{0, 3, 95}: "Prüftechnik Condition Monitoring GmbH & Co. KG",
- [3]byte{0, 3, 96}: "PAC Interactive Technology, Inc.",
- [3]byte{0, 3, 97}: "Widcomm, Inc.",
- [3]byte{0, 3, 98}: "Vodtel Communications, Inc.",
- [3]byte{0, 3, 99}: "Miraesys Co., Ltd.",
- [3]byte{0, 3, 100}: "Scenix Semiconductor, Inc.",
- [3]byte{0, 3, 101}: "Kira Information & Communications, Ltd.",
- [3]byte{0, 3, 102}: "ASM Pacific Technology",
- [3]byte{0, 3, 103}: "Jasmine Networks, Inc.",
- [3]byte{0, 3, 104}: "Embedone Co., Ltd.",
- [3]byte{0, 3, 105}: "Nippon Antenna Co., Ltd.",
- [3]byte{0, 3, 106}: "Mainnet, Ltd.",
- [3]byte{0, 3, 107}: "Cisco Systems, Inc",
- [3]byte{0, 3, 108}: "Cisco Systems, Inc",
- [3]byte{0, 3, 109}: "Runtop, Inc.",
- [3]byte{0, 3, 110}: "Nicon Systems (Pty) Limited",
- [3]byte{0, 3, 111}: "Telsey SPA",
- [3]byte{0, 3, 112}: "NXTV, Inc.",
- [3]byte{0, 3, 113}: "Acomz Networks Corp.",
- [3]byte{0, 3, 114}: "ULAN",
- [3]byte{0, 3, 115}: "Aselsan A.S",
- [3]byte{0, 3, 116}: "Control Microsystems",
- [3]byte{0, 3, 117}: "NetMedia, Inc.",
- [3]byte{0, 3, 118}: "Graphtec Technology, Inc.",
- [3]byte{0, 3, 119}: "Gigabit Wireless",
- [3]byte{0, 3, 120}: "HUMAX Co., Ltd.",
- [3]byte{0, 3, 121}: "Proscend Communications, Inc.",
- [3]byte{0, 3, 122}: "Taiyo Yuden Co., Ltd.",
- [3]byte{0, 3, 123}: "IDEC IZUMI Corporation",
- [3]byte{0, 3, 124}: "Coax Media",
- [3]byte{0, 3, 125}: "Stellcom",
- [3]byte{0, 3, 126}: "PORTech Communications, Inc.",
- [3]byte{0, 3, 127}: "Atheros Communications, Inc.",
- [3]byte{0, 3, 128}: "SSH Communications Security Corp.",
- [3]byte{0, 3, 129}: "Ingenico International",
- [3]byte{0, 3, 130}: "A-One Co., Ltd.",
- [3]byte{0, 3, 131}: "Metera Networks, Inc.",
- [3]byte{0, 3, 132}: "AETA",
- [3]byte{0, 3, 133}: "Actelis Networks, Inc.",
- [3]byte{0, 3, 134}: "Ho Net, Inc.",
- [3]byte{0, 3, 135}: "Blaze Network Products",
- [3]byte{0, 3, 136}: "Fastfame Technology Co., Ltd.",
- [3]byte{0, 3, 137}: "PLANTRONICS, INC.",
- [3]byte{0, 3, 138}: "America Online, Inc.",
- [3]byte{0, 3, 139}: "PLUS-ONE I&T, Inc.",
- [3]byte{0, 3, 140}: "Total Impact",
- [3]byte{0, 3, 141}: "PCS Revenue Control Systems, Inc.",
- [3]byte{0, 3, 142}: "Atoga Systems, Inc.",
- [3]byte{0, 3, 143}: "Weinschel Corporation",
- [3]byte{0, 3, 144}: "Digital Video Communications, Inc.",
- [3]byte{0, 3, 145}: "Advanced Digital Broadcast, Ltd.",
- [3]byte{0, 3, 146}: "Hyundai Teletek Co., Ltd.",
- [3]byte{0, 3, 147}: "Apple, Inc.",
- [3]byte{0, 3, 148}: "Connect One",
- [3]byte{0, 3, 149}: "California Amplifier",
- [3]byte{0, 3, 150}: "EZ Cast Co., Ltd.",
- [3]byte{0, 3, 151}: "Watchfront Limited",
- [3]byte{0, 3, 152}: "WISI",
- [3]byte{0, 3, 153}: "Dongju Informations & Communications Co., Ltd.",
- [3]byte{0, 3, 154}: "SiConnect",
- [3]byte{0, 3, 155}: "NetChip Technology, Inc.",
- [3]byte{0, 3, 156}: "OptiMight Communications, Inc.",
- [3]byte{0, 3, 157}: "Qisda Corporation",
- [3]byte{0, 3, 158}: "Tera System Co., Ltd.",
- [3]byte{0, 3, 159}: "Cisco Systems, Inc",
- [3]byte{0, 3, 160}: "Cisco Systems, Inc",
- [3]byte{0, 3, 161}: "HIPER Information & Communication, Inc.",
- [3]byte{0, 3, 162}: "Catapult Communications",
- [3]byte{0, 3, 163}: "MAVIX, Ltd.",
- [3]byte{0, 3, 164}: "Imation Corp.",
- [3]byte{0, 3, 165}: "Medea Corporation",
- [3]byte{0, 3, 166}: "Traxit Technology, Inc.",
- [3]byte{0, 3, 167}: "Unixtar Technology, Inc.",
- [3]byte{0, 3, 168}: "IDOT Computers, Inc.",
- [3]byte{0, 3, 169}: "AXCENT Media AG",
- [3]byte{0, 3, 170}: "Watlow",
- [3]byte{0, 3, 171}: "Bridge Information Systems",
- [3]byte{0, 3, 172}: "Fronius Schweissmaschinen",
- [3]byte{0, 3, 173}: "Emerson Energy Systems AB",
- [3]byte{0, 3, 174}: "Allied Advanced Manufacturing Pte, Ltd.",
- [3]byte{0, 3, 175}: "Paragea Communications",
- [3]byte{0, 3, 176}: "Xsense Technology Corp.",
- [3]byte{0, 3, 177}: "Hospira Inc.",
- [3]byte{0, 3, 178}: "Radware",
- [3]byte{0, 3, 179}: "IA Link Systems Co., Ltd.",
- [3]byte{0, 3, 180}: "Macrotek International Corp.",
- [3]byte{0, 3, 181}: "Entra Technology Co.",
- [3]byte{0, 3, 182}: "QSI Corporation",
- [3]byte{0, 3, 183}: "ZACCESS Systems",
- [3]byte{0, 3, 184}: "NetKit Solutions, LLC",
- [3]byte{0, 3, 185}: "Hualong Telecom Co., Ltd.",
- [3]byte{0, 3, 186}: "Oracle Corporation",
- [3]byte{0, 3, 187}: "Signal Communications Limited",
- [3]byte{0, 3, 188}: "COT GmbH",
- [3]byte{0, 3, 189}: "OmniCluster Technologies, Inc.",
- [3]byte{0, 3, 190}: "Netility",
- [3]byte{0, 3, 191}: "Centerpoint Broadband Technologies, Inc.",
- [3]byte{0, 3, 192}: "RFTNC Co., Ltd.",
- [3]byte{0, 3, 193}: "Packet Dynamics Ltd",
- [3]byte{0, 3, 194}: "Solphone K.K.",
- [3]byte{0, 3, 195}: "Micronik Multimedia",
- [3]byte{0, 3, 196}: "Tomra Systems ASA",
- [3]byte{0, 3, 197}: "Mobotix AG",
- [3]byte{0, 3, 198}: "ICUE Systems, Inc.",
- [3]byte{0, 3, 199}: "hopf Elektronik GmbH",
- [3]byte{0, 3, 200}: "CML Emergency Services",
- [3]byte{0, 3, 201}: "TECOM Co., Ltd.",
- [3]byte{0, 3, 202}: "MTS Systems Corp.",
- [3]byte{0, 3, 203}: "Nippon Systems Development Co., Ltd.",
- [3]byte{0, 3, 204}: "Momentum Computer, Inc.",
- [3]byte{0, 3, 205}: "Clovertech, Inc.",
- [3]byte{0, 3, 206}: "ETEN Technologies, Inc.",
- [3]byte{0, 3, 207}: "Muxcom, Inc.",
- [3]byte{0, 3, 208}: "KOANKEISO Co., Ltd.",
- [3]byte{0, 3, 209}: "Takaya Corporation",
- [3]byte{0, 3, 210}: "Crossbeam Systems, Inc.",
- [3]byte{0, 3, 211}: "Internet Energy Systems, Inc.",
- [3]byte{0, 3, 212}: "Alloptic, Inc.",
- [3]byte{0, 3, 213}: "Advanced Communications Co., Ltd.",
- [3]byte{0, 3, 214}: "RADVision, Ltd.",
- [3]byte{0, 3, 215}: "NextNet Wireless, Inc.",
- [3]byte{0, 3, 216}: "iMPath Networks, Inc.",
- [3]byte{0, 3, 217}: "Secheron SA",
- [3]byte{0, 3, 218}: "Takamisawa Cybernetics Co., Ltd.",
- [3]byte{0, 3, 219}: "Apogee Electronics Corp.",
- [3]byte{0, 3, 220}: "Lexar Media, Inc.",
- [3]byte{0, 3, 221}: "Comark Interactive Solutions",
- [3]byte{0, 3, 222}: "OTC Wireless",
- [3]byte{0, 3, 223}: "Desana Systems",
- [3]byte{0, 3, 224}: "ARRIS Group, Inc.",
- [3]byte{0, 3, 225}: "Winmate Communication, Inc.",
- [3]byte{0, 3, 226}: "Comspace Corporation",
- [3]byte{0, 3, 227}: "Cisco Systems, Inc",
- [3]byte{0, 3, 228}: "Cisco Systems, Inc",
- [3]byte{0, 3, 229}: "Hermstedt SG",
- [3]byte{0, 3, 230}: "Entone, Inc.",
- [3]byte{0, 3, 231}: "Logostek Co. Ltd.",
- [3]byte{0, 3, 232}: "Wavelength Digital Limited",
- [3]byte{0, 3, 233}: "Akara Canada, Inc.",
- [3]byte{0, 3, 234}: "Mega System Technologies, Inc.",
- [3]byte{0, 3, 235}: "Atrica",
- [3]byte{0, 3, 236}: "ICG Research, Inc.",
- [3]byte{0, 3, 237}: "Shinkawa Electric Co., Ltd.",
- [3]byte{0, 3, 238}: "MKNet Corporation",
- [3]byte{0, 3, 239}: "Oneline AG",
- [3]byte{0, 3, 240}: "Redfern Broadband Networks",
- [3]byte{0, 3, 241}: "Cicada Semiconductor, Inc.",
- [3]byte{0, 3, 242}: "Seneca Networks",
- [3]byte{0, 3, 243}: "Dazzle Multimedia, Inc.",
- [3]byte{0, 3, 244}: "NetBurner",
- [3]byte{0, 3, 245}: "Chip2Chip",
- [3]byte{0, 3, 246}: "Allegro Networks, Inc.",
- [3]byte{0, 3, 247}: "Plast-Control GmbH",
- [3]byte{0, 3, 248}: "SanCastle Technologies, Inc.",
- [3]byte{0, 3, 249}: "Pleiades Communications, Inc.",
- [3]byte{0, 3, 250}: "TiMetra Networks",
- [3]byte{0, 3, 251}: "ENEGATE Co.,Ltd.",
- [3]byte{0, 3, 252}: "Intertex Data AB",
- [3]byte{0, 3, 253}: "Cisco Systems, Inc",
- [3]byte{0, 3, 254}: "Cisco Systems, Inc",
- [3]byte{0, 3, 255}: "Microsoft Corporation",
- [3]byte{0, 4, 0}: "LEXMARK INTERNATIONAL, INC.",
- [3]byte{0, 4, 1}: "Osaki Electric Co., Ltd.",
- [3]byte{0, 4, 2}: "Nexsan Technologies, Ltd.",
- [3]byte{0, 4, 3}: "Nexsi Corporation",
- [3]byte{0, 4, 4}: "Makino Milling Machine Co., Ltd.",
- [3]byte{0, 4, 5}: "ACN Technologies",
- [3]byte{0, 4, 6}: "Fa. Metabox AG",
- [3]byte{0, 4, 7}: "Topcon Positioning Systems, Inc.",
- [3]byte{0, 4, 8}: "Sanko Electronics Co., Ltd.",
- [3]byte{0, 4, 9}: "Cratos Networks",
- [3]byte{0, 4, 10}: "Sage Systems",
- [3]byte{0, 4, 11}: "3COM EUROPE LTD.",
- [3]byte{0, 4, 12}: "Kanno Works, Ltd.",
- [3]byte{0, 4, 13}: "Avaya Inc",
- [3]byte{0, 4, 14}: "AVM GmbH",
- [3]byte{0, 4, 15}: "Asus Network Technologies, Inc.",
- [3]byte{0, 4, 16}: "Spinnaker Networks, Inc.",
- [3]byte{0, 4, 17}: "Inkra Networks, Inc.",
- [3]byte{0, 4, 18}: "WaveSmith Networks, Inc.",
- [3]byte{0, 4, 19}: "SNOM Technology AG",
- [3]byte{0, 4, 20}: "Umezawa Musen Denki Co., Ltd.",
- [3]byte{0, 4, 21}: "Rasteme Systems Co., Ltd.",
- [3]byte{0, 4, 22}: "Parks S/A Comunicacoes Digitais",
- [3]byte{0, 4, 23}: "ELAU AG",
- [3]byte{0, 4, 24}: "Teltronic S.A.U.",
- [3]byte{0, 4, 25}: "Fibercycle Networks, Inc.",
- [3]byte{0, 4, 26}: "Ines Test and Measurement GmbH & CoKG",
- [3]byte{0, 4, 27}: "Bridgeworks Ltd.",
- [3]byte{0, 4, 28}: "ipDialog, Inc.",
- [3]byte{0, 4, 29}: "Corega of America",
- [3]byte{0, 4, 30}: "Shikoku Instrumentation Co., Ltd.",
- [3]byte{0, 4, 31}: "Sony Interactive Entertainment Inc.",
- [3]byte{0, 4, 32}: "Slim Devices, Inc.",
- [3]byte{0, 4, 33}: "Ocular Networks",
- [3]byte{0, 4, 34}: "Studio Technologies, Inc",
- [3]byte{0, 4, 35}: "Intel Corporation",
- [3]byte{0, 4, 36}: "TMC s.r.l.",
- [3]byte{0, 4, 37}: "Atmel Corporation",
- [3]byte{0, 4, 38}: "Autosys",
- [3]byte{0, 4, 39}: "Cisco Systems, Inc",
- [3]byte{0, 4, 40}: "Cisco Systems, Inc",
- [3]byte{0, 4, 41}: "Pixord Corporation",
- [3]byte{0, 4, 42}: "Wireless Networks, Inc.",
- [3]byte{0, 4, 43}: "IT Access Co., Ltd.",
- [3]byte{0, 4, 44}: "Minet, Inc.",
- [3]byte{0, 4, 45}: "Sarian Systems, Ltd.",
- [3]byte{0, 4, 46}: "Netous Technologies, Ltd.",
- [3]byte{0, 4, 47}: "International Communications Products, Inc.",
- [3]byte{0, 4, 48}: "Netgem",
- [3]byte{0, 4, 49}: "GlobalStreams, Inc.",
- [3]byte{0, 4, 50}: "Voyetra Turtle Beach, Inc.",
- [3]byte{0, 4, 51}: "Cyberboard A/S",
- [3]byte{0, 4, 52}: "Accelent Systems, Inc.",
- [3]byte{0, 4, 53}: "InfiNet LLC",
- [3]byte{0, 4, 54}: "ELANsat Technologies, Inc.",
- [3]byte{0, 4, 55}: "Powin Information Technology, Inc.",
- [3]byte{0, 4, 56}: "Nortel Networks",
- [3]byte{0, 4, 57}: "Rosco Entertainment Technology, Inc.",
- [3]byte{0, 4, 58}: "Intelligent Telecommunications, Inc.",
- [3]byte{0, 4, 59}: "Lava Computer Mfg., Inc.",
- [3]byte{0, 4, 60}: "SONOS Co., Ltd.",
- [3]byte{0, 4, 61}: "INDEL AG",
- [3]byte{0, 4, 62}: "Telencomm",
- [3]byte{0, 4, 63}: "ESTeem Wireless Modems, Inc",
- [3]byte{0, 4, 64}: "cyberPIXIE, Inc.",
- [3]byte{0, 4, 65}: "Half Dome Systems, Inc.",
- [3]byte{0, 4, 66}: "NACT",
- [3]byte{0, 4, 67}: "Agilent Technologies, Inc.",
- [3]byte{0, 4, 68}: "Western Multiplex Corporation",
- [3]byte{0, 4, 69}: "LMS Skalar Instruments GmbH",
- [3]byte{0, 4, 70}: "CYZENTECH Co., Ltd.",
- [3]byte{0, 4, 71}: "Acrowave Systems Co., Ltd.",
- [3]byte{0, 4, 72}: "Polaroid Corporation",
- [3]byte{0, 4, 73}: "Mapletree Networks",
- [3]byte{0, 4, 74}: "iPolicy Networks, Inc.",
- [3]byte{0, 4, 75}: "NVIDIA",
- [3]byte{0, 4, 76}: "JENOPTIK",
- [3]byte{0, 4, 77}: "Cisco Systems, Inc",
- [3]byte{0, 4, 78}: "Cisco Systems, Inc",
- [3]byte{0, 4, 79}: "Schubert System Elektronik Gmbh",
- [3]byte{0, 4, 80}: "DMD Computers SRL",
- [3]byte{0, 4, 81}: "Medrad, Inc.",
- [3]byte{0, 4, 82}: "RocketLogix, Inc.",
- [3]byte{0, 4, 83}: "YottaYotta, Inc.",
- [3]byte{0, 4, 84}: "Quadriga UK",
- [3]byte{0, 4, 85}: "ANTARA.net",
- [3]byte{0, 4, 86}: "Cambium Networks Limited",
- [3]byte{0, 4, 87}: "Universal Access Technology, Inc.",
- [3]byte{0, 4, 88}: "Fusion X Co., Ltd.",
- [3]byte{0, 4, 89}: "Veristar Corporation",
- [3]byte{0, 4, 90}: "The Linksys Group, Inc.",
- [3]byte{0, 4, 91}: "Techsan Electronics Co., Ltd.",
- [3]byte{0, 4, 92}: "Mobiwave Pte Ltd",
- [3]byte{0, 4, 93}: "BEKA Elektronik",
- [3]byte{0, 4, 94}: "PolyTrax Information Technology AG",
- [3]byte{0, 4, 95}: "Avalue Technology, Inc.",
- [3]byte{0, 4, 96}: "Knilink Technology, Inc.",
- [3]byte{0, 4, 97}: "EPOX Computer Co., Ltd.",
- [3]byte{0, 4, 98}: "DAKOS Data & Communication Co., Ltd.",
- [3]byte{0, 4, 99}: "Bosch Security Systems",
- [3]byte{0, 4, 100}: "Pulse-Link Inc",
- [3]byte{0, 4, 101}: "i.s.t isdn-support technik GmbH",
- [3]byte{0, 4, 102}: "ARMITEL Co.",
- [3]byte{0, 4, 103}: "Wuhan Research Institute of MII",
- [3]byte{0, 4, 104}: "Vivity, Inc.",
- [3]byte{0, 4, 105}: "Innocom, Inc.",
- [3]byte{0, 4, 106}: "Navini Networks",
- [3]byte{0, 4, 107}: "Palm Wireless, Inc.",
- [3]byte{0, 4, 108}: "Cyber Technology Co., Ltd.",
- [3]byte{0, 4, 109}: "Cisco Systems, Inc",
- [3]byte{0, 4, 110}: "Cisco Systems, Inc",
- [3]byte{0, 4, 111}: "Digitel S/A Industria Eletronica",
- [3]byte{0, 4, 112}: "ipUnplugged AB",
- [3]byte{0, 4, 113}: "IPrad",
- [3]byte{0, 4, 114}: "Telelynx, Inc.",
- [3]byte{0, 4, 115}: "Photonex Corporation",
- [3]byte{0, 4, 116}: "LEGRAND",
- [3]byte{0, 4, 117}: "3 Com Corporation",
- [3]byte{0, 4, 118}: "3 Com Corporation",
- [3]byte{0, 4, 119}: "Scalant Systems, Inc.",
- [3]byte{0, 4, 120}: "G. Star Technology Corporation",
- [3]byte{0, 4, 121}: "Radius Co., Ltd.",
- [3]byte{0, 4, 122}: "AXXESSIT ASA",
- [3]byte{0, 4, 123}: "Schlumberger",
- [3]byte{0, 4, 124}: "Skidata AG",
- [3]byte{0, 4, 125}: "Pelco",
- [3]byte{0, 4, 126}: "Siqura B.V.",
- [3]byte{0, 4, 127}: "Chr. Mayr GmbH & Co. KG",
- [3]byte{0, 4, 128}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 4, 129}: "Econolite Control Products, Inc.",
- [3]byte{0, 4, 130}: "Medialogic Corp.",
- [3]byte{0, 4, 131}: "Deltron Technology, Inc.",
- [3]byte{0, 4, 132}: "Amann GmbH",
- [3]byte{0, 4, 133}: "PicoLight",
- [3]byte{0, 4, 134}: "ITTC, University of Kansas",
- [3]byte{0, 4, 135}: "Cogency Semiconductor, Inc.",
- [3]byte{0, 4, 136}: "Eurotherm Controls",
- [3]byte{0, 4, 137}: "YAFO Networks, Inc.",
- [3]byte{0, 4, 138}: "Temia Vertriebs GmbH",
- [3]byte{0, 4, 139}: "Poscon Corporation",
- [3]byte{0, 4, 140}: "Nayna Networks, Inc.",
- [3]byte{0, 4, 141}: "Teo Technologies, Inc",
- [3]byte{0, 4, 142}: "Ohm Tech Labs, Inc.",
- [3]byte{0, 4, 143}: "TD Systems Corporation",
- [3]byte{0, 4, 144}: "Optical Access",
- [3]byte{0, 4, 145}: "Technovision, Inc.",
- [3]byte{0, 4, 146}: "Hive Internet, Ltd.",
- [3]byte{0, 4, 147}: "Tsinghua Unisplendour Co., Ltd.",
- [3]byte{0, 4, 148}: "Breezecom, Ltd.",
- [3]byte{0, 4, 149}: "Tejas Networks India Limited",
- [3]byte{0, 4, 150}: "Extreme Networks, Inc.",
- [3]byte{0, 4, 151}: "MacroSystem Digital Video AG",
- [3]byte{0, 4, 152}: "Mahi Networks",
- [3]byte{0, 4, 153}: "Chino Corporation",
- [3]byte{0, 4, 154}: "Cisco Systems, Inc",
- [3]byte{0, 4, 155}: "Cisco Systems, Inc",
- [3]byte{0, 4, 156}: "Surgient Networks, Inc.",
- [3]byte{0, 4, 157}: "Ipanema Technologies",
- [3]byte{0, 4, 158}: "Wirelink Co., Ltd.",
- [3]byte{0, 4, 159}: "Freescale Semiconductor",
- [3]byte{0, 4, 160}: "Verity Instruments, Inc.",
- [3]byte{0, 4, 161}: "Pathway Connectivity",
- [3]byte{0, 4, 162}: "L.S.I. Japan Co., Ltd.",
- [3]byte{0, 4, 163}: "Microchip Technology Inc.",
- [3]byte{0, 4, 164}: "NetEnabled, Inc.",
- [3]byte{0, 4, 165}: "Barco Projection Systems NV",
- [3]byte{0, 4, 166}: "SAF Tehnika Ltd.",
- [3]byte{0, 4, 167}: "FabiaTech Corporation",
- [3]byte{0, 4, 168}: "Broadmax Technologies, Inc.",
- [3]byte{0, 4, 169}: "SandStream Technologies, Inc.",
- [3]byte{0, 4, 170}: "Jetstream Communications",
- [3]byte{0, 4, 171}: "Comverse Network Systems, Inc.",
- [3]byte{0, 4, 172}: "IBM Corp",
- [3]byte{0, 4, 173}: "Malibu Networks",
- [3]byte{0, 4, 174}: "Sullair Corporation",
- [3]byte{0, 4, 175}: "Digital Fountain, Inc.",
- [3]byte{0, 4, 176}: "ELESIGN Co., Ltd.",
- [3]byte{0, 4, 177}: "Signal Technology, Inc.",
- [3]byte{0, 4, 178}: "ESSEGI SRL",
- [3]byte{0, 4, 179}: "Videotek, Inc.",
- [3]byte{0, 4, 180}: "CIAC",
- [3]byte{0, 4, 181}: "Equitrac Corporation",
- [3]byte{0, 4, 182}: "Stratex Networks, Inc.",
- [3]byte{0, 4, 183}: "AMB i.t. Holding",
- [3]byte{0, 4, 184}: "Kumahira Co., Ltd.",
- [3]byte{0, 4, 185}: "S.I. Soubou, Inc.",
- [3]byte{0, 4, 186}: "KDD Media Will Corporation",
- [3]byte{0, 4, 187}: "Bardac Corporation",
- [3]byte{0, 4, 188}: "Giantec, Inc.",
- [3]byte{0, 4, 189}: "ARRIS Group, Inc.",
- [3]byte{0, 4, 190}: "OptXCon, Inc.",
- [3]byte{0, 4, 191}: "VersaLogic Corp.",
- [3]byte{0, 4, 192}: "Cisco Systems, Inc",
- [3]byte{0, 4, 193}: "Cisco Systems, Inc",
- [3]byte{0, 4, 194}: "Magnipix, Inc.",
- [3]byte{0, 4, 195}: "CASTOR Informatique",
- [3]byte{0, 4, 196}: "Allen & Heath Limited",
- [3]byte{0, 4, 197}: "ASE Technologies, USA",
- [3]byte{0, 4, 198}: "YAMAHA MOTOR CO.,LTD",
- [3]byte{0, 4, 199}: "NetMount",
- [3]byte{0, 4, 200}: "LIBA Maschinenfabrik GmbH",
- [3]byte{0, 4, 201}: "Micro Electron Co., Ltd.",
- [3]byte{0, 4, 202}: "FreeMs Corp.",
- [3]byte{0, 4, 203}: "Tdsoft Communication, Ltd.",
- [3]byte{0, 4, 204}: "Peek Traffic B.V.",
- [3]byte{0, 4, 205}: "Extenway Solutions Inc",
- [3]byte{0, 4, 206}: "Patria Ailon",
- [3]byte{0, 4, 207}: "Seagate Technology",
- [3]byte{0, 4, 208}: "Softlink s.r.o.",
- [3]byte{0, 4, 209}: "Drew Technologies, Inc.",
- [3]byte{0, 4, 210}: "Adcon Telemetry GmbH",
- [3]byte{0, 4, 211}: "Toyokeiki Co., Ltd.",
- [3]byte{0, 4, 212}: "Proview Electronics Co., Ltd.",
- [3]byte{0, 4, 213}: "Hitachi Information & Communication Engineering, Ltd.",
- [3]byte{0, 4, 214}: "Takagi Industrial Co., Ltd.",
- [3]byte{0, 4, 215}: "Omitec Instrumentation Ltd.",
- [3]byte{0, 4, 216}: "IPWireless, Inc.",
- [3]byte{0, 4, 217}: "Titan Electronics, Inc.",
- [3]byte{0, 4, 218}: "Relax Technology, Inc.",
- [3]byte{0, 4, 219}: "Tellus Group Corp.",
- [3]byte{0, 4, 220}: "Nortel Networks",
- [3]byte{0, 4, 221}: "Cisco Systems, Inc",
- [3]byte{0, 4, 222}: "Cisco Systems, Inc",
- [3]byte{0, 4, 223}: "Teracom Telematica Ltda.",
- [3]byte{0, 4, 224}: "Procket Networks",
- [3]byte{0, 4, 225}: "Infinior Microsystems",
- [3]byte{0, 4, 226}: "SMC Networks, Inc.",
- [3]byte{0, 4, 227}: "Accton Technology Corp",
- [3]byte{0, 4, 228}: "Daeryung Ind., Inc.",
- [3]byte{0, 4, 229}: "Glonet Systems, Inc.",
- [3]byte{0, 4, 230}: "Banyan Network Private Limited",
- [3]byte{0, 4, 231}: "Lightpointe Communications, Inc",
- [3]byte{0, 4, 232}: "IER, Inc.",
- [3]byte{0, 4, 233}: "Infiniswitch Corporation",
- [3]byte{0, 4, 234}: "Hewlett Packard",
- [3]byte{0, 4, 235}: "Paxonet Communications, Inc.",
- [3]byte{0, 4, 236}: "Memobox SA",
- [3]byte{0, 4, 237}: "Billion Electric Co., Ltd.",
- [3]byte{0, 4, 238}: "Lincoln Electric Company",
- [3]byte{0, 4, 239}: "Polestar Corp.",
- [3]byte{0, 4, 240}: "International Computers, Ltd",
- [3]byte{0, 4, 241}: "WhereNet",
- [3]byte{0, 4, 242}: "Polycom",
- [3]byte{0, 4, 243}: "FS FORTH-SYSTEME GmbH",
- [3]byte{0, 4, 244}: "Infinite Electronics Inc.",
- [3]byte{0, 4, 245}: "SnowShore Networks, Inc.",
- [3]byte{0, 4, 246}: "Amphus",
- [3]byte{0, 4, 247}: "Omega Band, Inc.",
- [3]byte{0, 4, 248}: "QUALICABLE TV Industria E Com., Ltda",
- [3]byte{0, 4, 249}: "Xtera Communications, Inc.",
- [3]byte{0, 4, 250}: "NBS Technologies Inc.",
- [3]byte{0, 4, 251}: "Commtech, Inc.",
- [3]byte{0, 4, 252}: "Stratus Computer (DE), Inc.",
- [3]byte{0, 4, 253}: "Japan Control Engineering Co., Ltd.",
- [3]byte{0, 4, 254}: "Pelago Networks",
- [3]byte{0, 4, 255}: "Acronet Co., Ltd.",
- [3]byte{0, 5, 0}: "Cisco Systems, Inc",
- [3]byte{0, 5, 1}: "Cisco Systems, Inc",
- [3]byte{0, 5, 2}: "Apple, Inc.",
- [3]byte{0, 5, 3}: "ICONAG",
- [3]byte{0, 5, 4}: "Naray Information & Communication Enterprise",
- [3]byte{0, 5, 5}: "Systems Integration Solutions, Inc.",
- [3]byte{0, 5, 6}: "Reddo Networks AB",
- [3]byte{0, 5, 7}: "Fine Appliance Corp.",
- [3]byte{0, 5, 8}: "Inetcam, Inc.",
- [3]byte{0, 5, 9}: "AVOC Nishimura Ltd.",
- [3]byte{0, 5, 10}: "ICS Spa",
- [3]byte{0, 5, 11}: "SICOM Systems, Inc.",
- [3]byte{0, 5, 12}: "Network Photonics, Inc.",
- [3]byte{0, 5, 13}: "Midstream Technologies, Inc.",
- [3]byte{0, 5, 14}: "3ware, Inc.",
- [3]byte{0, 5, 15}: "Tanaka S/S Ltd.",
- [3]byte{0, 5, 16}: "Infinite Shanghai Communication Terminals Ltd.",
- [3]byte{0, 5, 17}: "Complementary Technologies Ltd",
- [3]byte{0, 5, 18}: "Zebra Technologies Inc",
- [3]byte{0, 5, 19}: "VTLinx Multimedia Systems, Inc.",
- [3]byte{0, 5, 20}: "KDT Systems Co., Ltd.",
- [3]byte{0, 5, 21}: "Nuark Co., Ltd.",
- [3]byte{0, 5, 22}: "SMART Modular Technologies",
- [3]byte{0, 5, 23}: "Shellcomm, Inc.",
- [3]byte{0, 5, 24}: "Jupiters Technology",
- [3]byte{0, 5, 25}: "Siemens Building Technologies AG,",
- [3]byte{0, 5, 26}: "3COM EUROPE LTD.",
- [3]byte{0, 5, 27}: "Magic Control Technology Corporation",
- [3]byte{0, 5, 28}: "Xnet Technology Corp.",
- [3]byte{0, 5, 29}: "Airocon, Inc.",
- [3]byte{0, 5, 30}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 5, 31}: "Taijin Media Co., Ltd.",
- [3]byte{0, 5, 32}: "Smartronix, Inc.",
- [3]byte{0, 5, 33}: "Control Microsystems",
- [3]byte{0, 5, 34}: "LEA*D Corporation, Inc.",
- [3]byte{0, 5, 35}: "AVL List GmbH",
- [3]byte{0, 5, 36}: "BTL System (HK) Limited",
- [3]byte{0, 5, 37}: "Puretek Industrial Co., Ltd.",
- [3]byte{0, 5, 38}: "IPAS GmbH",
- [3]byte{0, 5, 39}: "SJ Tek Co. Ltd",
- [3]byte{0, 5, 40}: "New Focus, Inc.",
- [3]byte{0, 5, 41}: "Shanghai Broadan Communication Technology Co., Ltd",
- [3]byte{0, 5, 42}: "Ikegami Tsushinki Co., Ltd.",
- [3]byte{0, 5, 43}: "HORIBA, Ltd.",
- [3]byte{0, 5, 44}: "Supreme Magic Corporation",
- [3]byte{0, 5, 45}: "Zoltrix International Limited",
- [3]byte{0, 5, 46}: "Cinta Networks",
- [3]byte{0, 5, 47}: "Leviton Network Solutions",
- [3]byte{0, 5, 48}: "Andiamo Systems, Inc.",
- [3]byte{0, 5, 49}: "Cisco Systems, Inc",
- [3]byte{0, 5, 50}: "Cisco Systems, Inc",
- [3]byte{0, 5, 51}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 5, 52}: "Northstar Engineering Ltd.",
- [3]byte{0, 5, 53}: "Chip PC Ltd.",
- [3]byte{0, 5, 54}: "Danam Communications, Inc.",
- [3]byte{0, 5, 55}: "Nets Technology Co., Ltd.",
- [3]byte{0, 5, 56}: "Merilus, Inc.",
- [3]byte{0, 5, 57}: "A Brand New World in Sweden AB",
- [3]byte{0, 5, 58}: "Willowglen Services Pte Ltd",
- [3]byte{0, 5, 59}: "Harbour Networks Ltd., Co. Beijing",
- [3]byte{0, 5, 60}: "XIRCOM",
- [3]byte{0, 5, 61}: "Agere Systems",
- [3]byte{0, 5, 62}: "KID Systeme GmbH",
- [3]byte{0, 5, 63}: "VisionTek, Inc.",
- [3]byte{0, 5, 64}: "FAST Corporation",
- [3]byte{0, 5, 65}: "Advanced Systems Co., Ltd.",
- [3]byte{0, 5, 66}: "Otari, Inc.",
- [3]byte{0, 5, 67}: "IQ Wireless GmbH",
- [3]byte{0, 5, 68}: "Valley Technologies, Inc.",
- [3]byte{0, 5, 69}: "Internet Photonics",
- [3]byte{0, 5, 70}: "KDDI Network & Solultions Inc.",
- [3]byte{0, 5, 71}: "Starent Networks",
- [3]byte{0, 5, 72}: "Disco Corporation",
- [3]byte{0, 5, 73}: "Salira Optical Network Systems",
- [3]byte{0, 5, 74}: "Ario Data Networks, Inc.",
- [3]byte{0, 5, 75}: "Eaton Automation AG",
- [3]byte{0, 5, 76}: "RF Innovations Pty Ltd",
- [3]byte{0, 5, 77}: "Brans Technologies, Inc.",
- [3]byte{0, 5, 78}: "Philips",
- [3]byte{0, 5, 79}: "Garmin International",
- [3]byte{0, 5, 80}: "Vcomms Connect Limited",
- [3]byte{0, 5, 81}: "F & S Elektronik Systeme GmbH",
- [3]byte{0, 5, 82}: "Xycotec Computer GmbH",
- [3]byte{0, 5, 83}: "DVC Company, Inc.",
- [3]byte{0, 5, 84}: "Rangestar Wireless",
- [3]byte{0, 5, 85}: "Japan Cash Machine Co., Ltd.",
- [3]byte{0, 5, 86}: "360 Systems",
- [3]byte{0, 5, 87}: "Agile TV Corporation",
- [3]byte{0, 5, 88}: "Synchronous, Inc.",
- [3]byte{0, 5, 89}: "Intracom S.A.",
- [3]byte{0, 5, 90}: "Power Dsine Ltd.",
- [3]byte{0, 5, 91}: "Charles Industries, Ltd.",
- [3]byte{0, 5, 92}: "Kowa Company, Ltd.",
- [3]byte{0, 5, 93}: "D-LINK SYSTEMS, INC.",
- [3]byte{0, 5, 94}: "Cisco Systems, Inc",
- [3]byte{0, 5, 95}: "Cisco Systems, Inc",
- [3]byte{0, 5, 96}: "LEADER COMM.CO., LTD",
- [3]byte{0, 5, 97}: "nac Image Technology, Inc.",
- [3]byte{0, 5, 98}: "Digital View Limited",
- [3]byte{0, 5, 99}: "J-Works, Inc.",
- [3]byte{0, 5, 100}: "Tsinghua Bitway Co., Ltd.",
- [3]byte{0, 5, 101}: "Tailyn Communication Company Ltd.",
- [3]byte{0, 5, 102}: "Secui.com Corporation",
- [3]byte{0, 5, 103}: "Etymonic Design, Inc.",
- [3]byte{0, 5, 104}: "Piltofish Networks AB",
- [3]byte{0, 5, 105}: "VMware, Inc.",
- [3]byte{0, 5, 106}: "Heuft Systemtechnik GmbH",
- [3]byte{0, 5, 107}: "C.P. Technology Co., Ltd.",
- [3]byte{0, 5, 108}: "Hung Chang Co., Ltd.",
- [3]byte{0, 5, 109}: "Pacific Corporation",
- [3]byte{0, 5, 110}: "National Enhance Technology, Inc.",
- [3]byte{0, 5, 111}: "Innomedia Technologies Pvt. Ltd.",
- [3]byte{0, 5, 112}: "Baydel Ltd.",
- [3]byte{0, 5, 113}: "Seiwa Electronics Co.",
- [3]byte{0, 5, 114}: "Deonet Co., Ltd.",
- [3]byte{0, 5, 115}: "Cisco Systems, Inc",
- [3]byte{0, 5, 116}: "Cisco Systems, Inc",
- [3]byte{0, 5, 117}: "CDS-Electronics BV",
- [3]byte{0, 5, 118}: "NSM Technology Ltd.",
- [3]byte{0, 5, 119}: "SM Information & Communication",
- [3]byte{0, 5, 120}: "Private",
- [3]byte{0, 5, 121}: "Universal Control Solution Corp.",
- [3]byte{0, 5, 122}: "Overture Networks",
- [3]byte{0, 5, 123}: "Chung Nam Electronic Co., Ltd.",
- [3]byte{0, 5, 124}: "RCO Security AB",
- [3]byte{0, 5, 125}: "Sun Communications, Inc.",
- [3]byte{0, 5, 126}: "Eckelmann Steuerungstechnik GmbH",
- [3]byte{0, 5, 127}: "Acqis Technology",
- [3]byte{0, 5, 128}: "FibroLAN Ltd.",
- [3]byte{0, 5, 129}: "Snell",
- [3]byte{0, 5, 130}: "ClearCube Technology",
- [3]byte{0, 5, 131}: "ImageCom Limited",
- [3]byte{0, 5, 132}: "AbsoluteValue Systems, Inc.",
- [3]byte{0, 5, 133}: "Juniper Networks",
- [3]byte{0, 5, 134}: "Lucent Technologies",
- [3]byte{0, 5, 135}: "Locus, Incorporated",
- [3]byte{0, 5, 136}: "Sensoria Corp.",
- [3]byte{0, 5, 137}: "National Datacomputer",
- [3]byte{0, 5, 138}: "Netcom Co., Ltd.",
- [3]byte{0, 5, 139}: "IPmental, Inc.",
- [3]byte{0, 5, 140}: "Opentech Inc.",
- [3]byte{0, 5, 141}: "Lynx Photonic Networks, Inc.",
- [3]byte{0, 5, 142}: "Flextronics International GmbH & Co. Nfg. KG",
- [3]byte{0, 5, 143}: "CLCsoft co.",
- [3]byte{0, 5, 144}: "Swissvoice Ltd.",
- [3]byte{0, 5, 145}: "Active Silicon Ltd",
- [3]byte{0, 5, 146}: "Pultek Corp.",
- [3]byte{0, 5, 147}: "Grammar Engine Inc.",
- [3]byte{0, 5, 148}: "HMS Industrial Networks",
- [3]byte{0, 5, 149}: "Alesis Corporation",
- [3]byte{0, 5, 150}: "Genotech Co., Ltd.",
- [3]byte{0, 5, 151}: "Eagle Traffic Control Systems",
- [3]byte{0, 5, 152}: "CRONOS S.r.l.",
- [3]byte{0, 5, 153}: "DRS Test and Energy Management or DRS-TEM",
- [3]byte{0, 5, 154}: "Cisco Systems, Inc",
- [3]byte{0, 5, 155}: "Cisco Systems, Inc",
- [3]byte{0, 5, 156}: "Kleinknecht GmbH, Ing. Büro",
- [3]byte{0, 5, 157}: "Daniel Computing Systems, Inc.",
- [3]byte{0, 5, 158}: "Zinwell Corporation",
- [3]byte{0, 5, 159}: "Yotta Networks, Inc.",
- [3]byte{0, 5, 160}: "MOBILINE Kft.",
- [3]byte{0, 5, 161}: "Zenocom",
- [3]byte{0, 5, 162}: "CELOX Networks",
- [3]byte{0, 5, 163}: "QEI, Inc.",
- [3]byte{0, 5, 164}: "Lucid Voice Ltd.",
- [3]byte{0, 5, 165}: "KOTT",
- [3]byte{0, 5, 166}: "Extron Electronics",
- [3]byte{0, 5, 167}: "HYPERCHIP Inc.",
- [3]byte{0, 5, 168}: "WYLE ELECTRONICS",
- [3]byte{0, 5, 169}: "Princeton Networks, Inc.",
- [3]byte{0, 5, 170}: "Moore Industries International Inc.",
- [3]byte{0, 5, 171}: "Cyber Fone, Inc.",
- [3]byte{0, 5, 172}: "Northern Digital, Inc.",
- [3]byte{0, 5, 173}: "Topspin Communications, Inc.",
- [3]byte{0, 5, 174}: "Mediaport USA",
- [3]byte{0, 5, 175}: "InnoScan Computing A/S",
- [3]byte{0, 5, 176}: "Korea Computer Technology Co., Ltd.",
- [3]byte{0, 5, 177}: "ASB Technology BV",
- [3]byte{0, 5, 178}: "Medison Co., Ltd.",
- [3]byte{0, 5, 179}: "Asahi-Engineering Co., Ltd.",
- [3]byte{0, 5, 180}: "Aceex Corporation",
- [3]byte{0, 5, 181}: "Broadcom Technologies",
- [3]byte{0, 5, 182}: "INSYS Microelectronics GmbH",
- [3]byte{0, 5, 183}: "Arbor Technology Corp.",
- [3]byte{0, 5, 184}: "Electronic Design Associates, Inc.",
- [3]byte{0, 5, 185}: "Airvana, Inc.",
- [3]byte{0, 5, 186}: "Area Netwoeks, Inc.",
- [3]byte{0, 5, 187}: "Myspace AB",
- [3]byte{0, 5, 188}: "Resource Data Management Ltd",
- [3]byte{0, 5, 189}: "ROAX BV",
- [3]byte{0, 5, 190}: "Kongsberg Seatex AS",
- [3]byte{0, 5, 191}: "JustEzy Technology, Inc.",
- [3]byte{0, 5, 192}: "Digital Network Alacarte Co., Ltd.",
- [3]byte{0, 5, 193}: "A-Kyung Motion, Inc.",
- [3]byte{0, 5, 194}: "Soronti, Inc.",
- [3]byte{0, 5, 195}: "Pacific Instruments, Inc.",
- [3]byte{0, 5, 196}: "Telect, Inc.",
- [3]byte{0, 5, 197}: "Flaga HF",
- [3]byte{0, 5, 198}: "Triz Communications",
- [3]byte{0, 5, 199}: "I/F-COM A/S",
- [3]byte{0, 5, 200}: "VERYTECH",
- [3]byte{0, 5, 201}: "LG Innotek Co., Ltd.",
- [3]byte{0, 5, 202}: "Hitron Technology, Inc.",
- [3]byte{0, 5, 203}: "ROIS Technologies, Inc.",
- [3]byte{0, 5, 204}: "Sumtel Communications, Inc.",
- [3]byte{0, 5, 205}: "D&M Holdings Inc.",
- [3]byte{0, 5, 206}: "Prolink Microsystems Corporation",
- [3]byte{0, 5, 207}: "Thunder River Technologies, Inc.",
- [3]byte{0, 5, 208}: "Solinet Systems",
- [3]byte{0, 5, 209}: "Metavector Technologies",
- [3]byte{0, 5, 210}: "DAP Technologies",
- [3]byte{0, 5, 211}: "eProduction Solutions, Inc.",
- [3]byte{0, 5, 212}: "FutureSmart Networks, Inc.",
- [3]byte{0, 5, 213}: "Speedcom Wireless",
- [3]byte{0, 5, 214}: "L-3 Linkabit",
- [3]byte{0, 5, 215}: "Vista Imaging, Inc.",
- [3]byte{0, 5, 216}: "Arescom, Inc.",
- [3]byte{0, 5, 217}: "Techno Valley, Inc.",
- [3]byte{0, 5, 218}: "Apex Automationstechnik",
- [3]byte{0, 5, 219}: "PSI Nentec GmbH",
- [3]byte{0, 5, 220}: "Cisco Systems, Inc",
- [3]byte{0, 5, 221}: "Cisco Systems, Inc",
- [3]byte{0, 5, 222}: "Gi Fone Korea, Inc.",
- [3]byte{0, 5, 223}: "Electronic Innovation, Inc.",
- [3]byte{0, 5, 224}: "Empirix Corp.",
- [3]byte{0, 5, 225}: "Trellis Photonics, Ltd.",
- [3]byte{0, 5, 226}: "Creativ Network Technologies",
- [3]byte{0, 5, 227}: "LightSand Communications, Inc.",
- [3]byte{0, 5, 228}: "Red Lion Controls Inc.",
- [3]byte{0, 5, 229}: "Renishaw PLC",
- [3]byte{0, 5, 230}: "Egenera, Inc.",
- [3]byte{0, 5, 231}: "Netrake an AudioCodes Company",
- [3]byte{0, 5, 232}: "TurboWave, Inc.",
- [3]byte{0, 5, 233}: "Unicess Network, Inc.",
- [3]byte{0, 5, 234}: "Rednix",
- [3]byte{0, 5, 235}: "Blue Ridge Networks, Inc.",
- [3]byte{0, 5, 236}: "Mosaic Systems Inc.",
- [3]byte{0, 5, 237}: "Technikum Joanneum GmbH",
- [3]byte{0, 5, 238}: "Vanderbilt International (SWE) AB",
- [3]byte{0, 5, 239}: "ADOIR Digital Technology",
- [3]byte{0, 5, 240}: "SATEC",
- [3]byte{0, 5, 241}: "Vrcom, Inc.",
- [3]byte{0, 5, 242}: "Power R, Inc.",
- [3]byte{0, 5, 243}: "Webyn",
- [3]byte{0, 5, 244}: "System Base Co., Ltd.",
- [3]byte{0, 5, 245}: "Geospace Technologies",
- [3]byte{0, 5, 246}: "Young Chang Co. Ltd.",
- [3]byte{0, 5, 247}: "Analog Devices, Inc.",
- [3]byte{0, 5, 248}: "Real Time Access, Inc.",
- [3]byte{0, 5, 249}: "TOA Corporation",
- [3]byte{0, 5, 250}: "IPOptical, Inc.",
- [3]byte{0, 5, 251}: "ShareGate, Inc.",
- [3]byte{0, 5, 252}: "Schenck Pegasus Corp.",
- [3]byte{0, 5, 253}: "PacketLight Networks Ltd.",
- [3]byte{0, 5, 254}: "Traficon N.V.",
- [3]byte{0, 5, 255}: "SNS Solutions, Inc.",
- [3]byte{0, 6, 0}: "Toshiba Teli Corporation",
- [3]byte{0, 6, 1}: "Otanikeiki Co., Ltd.",
- [3]byte{0, 6, 2}: "Cirkitech Electronics Co.",
- [3]byte{0, 6, 3}: "Baker Hughes Inc.",
- [3]byte{0, 6, 4}: "@Track Communications, Inc.",
- [3]byte{0, 6, 5}: "Inncom International, Inc.",
- [3]byte{0, 6, 6}: "RapidWAN, Inc.",
- [3]byte{0, 6, 7}: "Omni Directional Control Technology Inc.",
- [3]byte{0, 6, 8}: "At-Sky SAS",
- [3]byte{0, 6, 9}: "Crossport Systems",
- [3]byte{0, 6, 10}: "Blue2space",
- [3]byte{0, 6, 11}: "Artesyn Embedded Technologies",
- [3]byte{0, 6, 12}: "Melco Industries, Inc.",
- [3]byte{0, 6, 13}: "Wave7 Optics",
- [3]byte{0, 6, 14}: "IGYS Systems, Inc.",
- [3]byte{0, 6, 15}: "Narad Networks Inc",
- [3]byte{0, 6, 16}: "Abeona Networks Inc",
- [3]byte{0, 6, 17}: "Zeus Wireless, Inc.",
- [3]byte{0, 6, 18}: "Accusys, Inc.",
- [3]byte{0, 6, 19}: "Kawasaki Microelectronics Incorporated",
- [3]byte{0, 6, 20}: "Prism Holdings",
- [3]byte{0, 6, 21}: "Kimoto Electric Co., Ltd.",
- [3]byte{0, 6, 22}: "Tel Net Co., Ltd.",
- [3]byte{0, 6, 23}: "Redswitch Inc.",
- [3]byte{0, 6, 24}: "DigiPower Manufacturing Inc.",
- [3]byte{0, 6, 25}: "Connection Technology Systems",
- [3]byte{0, 6, 26}: "Zetari Inc.",
- [3]byte{0, 6, 27}: "Notebook Development Lab. Lenovo Japan Ltd.",
- [3]byte{0, 6, 28}: "Hoshino Metal Industries, Ltd.",
- [3]byte{0, 6, 29}: "MIP Telecom, Inc.",
- [3]byte{0, 6, 30}: "Maxan Systems",
- [3]byte{0, 6, 31}: "Vision Components GmbH",
- [3]byte{0, 6, 32}: "Serial System Ltd.",
- [3]byte{0, 6, 33}: "Hinox, Co., Ltd.",
- [3]byte{0, 6, 34}: "Chung Fu Chen Yeh Enterprise Corp.",
- [3]byte{0, 6, 35}: "MGE UPS Systems France",
- [3]byte{0, 6, 36}: "Gentner Communications Corp.",
- [3]byte{0, 6, 37}: "The Linksys Group, Inc.",
- [3]byte{0, 6, 38}: "MWE GmbH",
- [3]byte{0, 6, 39}: "Uniwide Technologies, Inc.",
- [3]byte{0, 6, 40}: "Cisco Systems, Inc",
- [3]byte{0, 6, 41}: "IBM Corp",
- [3]byte{0, 6, 42}: "Cisco Systems, Inc",
- [3]byte{0, 6, 43}: "INTRASERVER TECHNOLOGY",
- [3]byte{0, 6, 44}: "Bivio Networks",
- [3]byte{0, 6, 45}: "TouchStar Technologies, L.L.C.",
- [3]byte{0, 6, 46}: "Aristos Logic Corp.",
- [3]byte{0, 6, 47}: "Pivotech Systems Inc.",
- [3]byte{0, 6, 48}: "Adtranz Sweden",
- [3]byte{0, 6, 49}: "Calix Inc.",
- [3]byte{0, 6, 50}: "Mesco Engineering GmbH",
- [3]byte{0, 6, 51}: "Cross Match Technologies GmbH",
- [3]byte{0, 6, 52}: "GTE Airfone Inc.",
- [3]byte{0, 6, 53}: "PacketAir Networks, Inc.",
- [3]byte{0, 6, 54}: "Jedai Broadband Networks",
- [3]byte{0, 6, 55}: "Toptrend-Meta Information (ShenZhen) Inc.",
- [3]byte{0, 6, 56}: "Sungjin C&C Co., Ltd.",
- [3]byte{0, 6, 57}: "Newtec",
- [3]byte{0, 6, 58}: "Dura Micro, Inc.",
- [3]byte{0, 6, 59}: "Arcturus Networks Inc.",
- [3]byte{0, 6, 60}: "Intrinsyc Software International Inc.",
- [3]byte{0, 6, 61}: "Microwave Data Systems Inc.",
- [3]byte{0, 6, 62}: "Opthos Inc.",
- [3]byte{0, 6, 63}: "Everex Communications Inc.",
- [3]byte{0, 6, 64}: "White Rock Networks",
- [3]byte{0, 6, 65}: "ITCN",
- [3]byte{0, 6, 66}: "Genetel Systems Inc.",
- [3]byte{0, 6, 67}: "SONO Computer Co., Ltd.",
- [3]byte{0, 6, 68}: "neix,Inc",
- [3]byte{0, 6, 69}: "Meisei Electric Co. Ltd.",
- [3]byte{0, 6, 70}: "ShenZhen XunBao Network Technology Co Ltd",
- [3]byte{0, 6, 71}: "Etrali S.A.",
- [3]byte{0, 6, 72}: "Seedsware, Inc.",
- [3]byte{0, 6, 73}: "3M Deutschland GmbH",
- [3]byte{0, 6, 74}: "Honeywell Co., Ltd. (KOREA)",
- [3]byte{0, 6, 75}: "Alexon Co., Ltd.",
- [3]byte{0, 6, 76}: "Invicta Networks, Inc.",
- [3]byte{0, 6, 77}: "Sencore",
- [3]byte{0, 6, 78}: "Broad Net Technology Inc.",
- [3]byte{0, 6, 79}: "PRO-NETS Technology Corporation",
- [3]byte{0, 6, 80}: "Tiburon Networks, Inc.",
- [3]byte{0, 6, 81}: "Aspen Networks Inc.",
- [3]byte{0, 6, 82}: "Cisco Systems, Inc",
- [3]byte{0, 6, 83}: "Cisco Systems, Inc",
- [3]byte{0, 6, 84}: "Winpresa Building Automation Technologies GmbH",
- [3]byte{0, 6, 85}: "Yipee, Inc.",
- [3]byte{0, 6, 86}: "Tactel AB",
- [3]byte{0, 6, 87}: "Market Central, Inc.",
- [3]byte{0, 6, 88}: "Helmut Fischer GmbH Institut für Elektronik und Messtechnik",
- [3]byte{0, 6, 89}: "EAL (Apeldoorn) B.V.",
- [3]byte{0, 6, 90}: "Strix Systems",
- [3]byte{0, 6, 91}: "Dell Inc.",
- [3]byte{0, 6, 92}: "Malachite Technologies, Inc.",
- [3]byte{0, 6, 93}: "Heidelberg Web Systems",
- [3]byte{0, 6, 94}: "Photuris, Inc.",
- [3]byte{0, 6, 95}: "ECI Telecom Ltd.",
- [3]byte{0, 6, 96}: "NADEX Co., Ltd.",
- [3]byte{0, 6, 97}: "NIA Home Technologies Corp.",
- [3]byte{0, 6, 98}: "MBM Technology Ltd.",
- [3]byte{0, 6, 99}: "Human Technology Co., Ltd.",
- [3]byte{0, 6, 100}: "Fostex Corporation",
- [3]byte{0, 6, 101}: "Sunny Giken, Inc.",
- [3]byte{0, 6, 102}: "Roving Networks",
- [3]byte{0, 6, 103}: "Tripp Lite",
- [3]byte{0, 6, 104}: "Vicon Industries Inc.",
- [3]byte{0, 6, 105}: "Datasound Laboratories Ltd",
- [3]byte{0, 6, 106}: "InfiniCon Systems, Inc.",
- [3]byte{0, 6, 107}: "Sysmex Corporation",
- [3]byte{0, 6, 108}: "Robinson Corporation",
- [3]byte{0, 6, 109}: "Compuprint S.P.A.",
- [3]byte{0, 6, 110}: "Delta Electronics, Inc.",
- [3]byte{0, 6, 111}: "Korea Data Systems",
- [3]byte{0, 6, 112}: "Upponetti Oy",
- [3]byte{0, 6, 113}: "Softing AG",
- [3]byte{0, 6, 114}: "Netezza",
- [3]byte{0, 6, 115}: "TKH Security Solutions USA",
- [3]byte{0, 6, 116}: "Spectrum Control, Inc.",
- [3]byte{0, 6, 117}: "Banderacom, Inc.",
- [3]byte{0, 6, 118}: "Novra Technologies Inc.",
- [3]byte{0, 6, 119}: "SICK AG",
- [3]byte{0, 6, 120}: "D&M Holdings Inc.",
- [3]byte{0, 6, 121}: "Konami Corporation",
- [3]byte{0, 6, 122}: "JMP Systems",
- [3]byte{0, 6, 123}: "Toplink C&C Corporation",
- [3]byte{0, 6, 124}: "Cisco Systems, Inc",
- [3]byte{0, 6, 125}: "Takasago Ltd.",
- [3]byte{0, 6, 126}: "WinCom Systems, Inc.",
- [3]byte{0, 6, 127}: "Digeo, Inc.",
- [3]byte{0, 6, 128}: "Card Access, Inc.",
- [3]byte{0, 6, 129}: "Goepel Electronic GmbH",
- [3]byte{0, 6, 130}: "Convedia",
- [3]byte{0, 6, 131}: "Bravara Communications, Inc.",
- [3]byte{0, 6, 132}: "Biacore AB",
- [3]byte{0, 6, 133}: "NetNearU Corporation",
- [3]byte{0, 6, 134}: "ZARDCOM Co., Ltd.",
- [3]byte{0, 6, 135}: "Omnitron Systems Technology, Inc.",
- [3]byte{0, 6, 136}: "Telways Communication Co., Ltd.",
- [3]byte{0, 6, 137}: "yLez Technologies Pte Ltd",
- [3]byte{0, 6, 138}: "NeuronNet Co. Ltd. R&D Center",
- [3]byte{0, 6, 139}: "AirRunner Technologies, Inc.",
- [3]byte{0, 6, 140}: "3COM CORPORATION",
- [3]byte{0, 6, 141}: "SEPATON, Inc.",
- [3]byte{0, 6, 142}: "HID Corporation",
- [3]byte{0, 6, 143}: "Telemonitor, Inc.",
- [3]byte{0, 6, 144}: "Euracom Communication GmbH",
- [3]byte{0, 6, 145}: "PT Inovacao",
- [3]byte{0, 6, 146}: "Intruvert Networks, Inc.",
- [3]byte{0, 6, 147}: "Flexus Computer Technology, Inc.",
- [3]byte{0, 6, 148}: "Mobillian Corporation",
- [3]byte{0, 6, 149}: "Ensure Technologies, Inc.",
- [3]byte{0, 6, 150}: "Advent Networks",
- [3]byte{0, 6, 151}: "R & D Center",
- [3]byte{0, 6, 152}: "egnite GmbH",
- [3]byte{0, 6, 153}: "Vida Design Co.",
- [3]byte{0, 6, 154}: "e & Tel",
- [3]byte{0, 6, 155}: "AVT Audio Video Technologies GmbH",
- [3]byte{0, 6, 156}: "Transmode Systems AB",
- [3]byte{0, 6, 157}: "Petards Ltd",
- [3]byte{0, 6, 158}: "UNIQA, Inc.",
- [3]byte{0, 6, 159}: "Kuokoa Networks",
- [3]byte{0, 6, 160}: "Mx Imaging",
- [3]byte{0, 6, 161}: "Celsian Technologies, Inc.",
- [3]byte{0, 6, 162}: "Microtune, Inc.",
- [3]byte{0, 6, 163}: "Bitran Corporation",
- [3]byte{0, 6, 164}: "INNOWELL Corp.",
- [3]byte{0, 6, 165}: "PINON Corp.",
- [3]byte{0, 6, 166}: "Artistic Licence Engineering Ltd",
- [3]byte{0, 6, 167}: "Primarion",
- [3]byte{0, 6, 168}: "KC Technology, Inc.",
- [3]byte{0, 6, 169}: "Universal Instruments Corp.",
- [3]byte{0, 6, 170}: "VT Miltope",
- [3]byte{0, 6, 171}: "W-Link Systems, Inc.",
- [3]byte{0, 6, 172}: "Intersoft Co.",
- [3]byte{0, 6, 173}: "KB Electronics Ltd.",
- [3]byte{0, 6, 174}: "Himachal Futuristic Communications Ltd",
- [3]byte{0, 6, 175}: "Xalted Networks",
- [3]byte{0, 6, 176}: "Comtech EF Data Corp.",
- [3]byte{0, 6, 177}: "Sonicwall",
- [3]byte{0, 6, 178}: "Linxtek Co.",
- [3]byte{0, 6, 179}: "Diagraph Corporation",
- [3]byte{0, 6, 180}: "Vorne Industries, Inc.",
- [3]byte{0, 6, 181}: "Source Photonics, Inc.",
- [3]byte{0, 6, 182}: "Nir-Or Israel Ltd.",
- [3]byte{0, 6, 183}: "TELEM GmbH",
- [3]byte{0, 6, 184}: "Bandspeed Pty Ltd",
- [3]byte{0, 6, 185}: "A5TEK Corp.",
- [3]byte{0, 6, 186}: "Westwave Communications",
- [3]byte{0, 6, 187}: "ATI Technologies Inc.",
- [3]byte{0, 6, 188}: "Macrolink, Inc.",
- [3]byte{0, 6, 189}: "BNTECHNOLOGY Co., Ltd.",
- [3]byte{0, 6, 190}: "Baumer Optronic GmbH",
- [3]byte{0, 6, 191}: "Accella Technologies Co., Ltd.",
- [3]byte{0, 6, 192}: "United Internetworks, Inc.",
- [3]byte{0, 6, 193}: "Cisco Systems, Inc",
- [3]byte{0, 6, 194}: "Smartmatic Corporation",
- [3]byte{0, 6, 195}: "Schindler Elevator Ltd.",
- [3]byte{0, 6, 196}: "Piolink Inc.",
- [3]byte{0, 6, 197}: "INNOVI Technologies Limited",
- [3]byte{0, 6, 198}: "lesswire AG",
- [3]byte{0, 6, 199}: "RFNET Technologies Pte Ltd (S)",
- [3]byte{0, 6, 200}: "Sumitomo Metal Micro Devices, Inc.",
- [3]byte{0, 6, 201}: "Technical Marketing Research, Inc.",
- [3]byte{0, 6, 202}: "American Computer & Digital Components, Inc. (ACDC)",
- [3]byte{0, 6, 203}: "Jotron Electronics A/S",
- [3]byte{0, 6, 204}: "JMI Electronics Co., Ltd.",
- [3]byte{0, 6, 205}: "Leaf Imaging Ltd.",
- [3]byte{0, 6, 206}: "DATENO",
- [3]byte{0, 6, 207}: "Thales Avionics In-Flight Systems, LLC",
- [3]byte{0, 6, 208}: "Elgar Electronics Corp.",
- [3]byte{0, 6, 209}: "Tahoe Networks, Inc.",
- [3]byte{0, 6, 210}: "Tundra Semiconductor Corp.",
- [3]byte{0, 6, 211}: "Alpha Telecom, Inc. U.S.A.",
- [3]byte{0, 6, 212}: "Interactive Objects, Inc.",
- [3]byte{0, 6, 213}: "Diamond Systems Corp.",
- [3]byte{0, 6, 214}: "Cisco Systems, Inc",
- [3]byte{0, 6, 215}: "Cisco Systems, Inc",
- [3]byte{0, 6, 216}: "Maple Optical Systems",
- [3]byte{0, 6, 217}: "IPM-Net S.p.A.",
- [3]byte{0, 6, 218}: "ITRAN Communications Ltd.",
- [3]byte{0, 6, 219}: "ICHIPS Co., Ltd.",
- [3]byte{0, 6, 220}: "Syabas Technology (Amquest)",
- [3]byte{0, 6, 221}: "AT & T Laboratories - Cambridge Ltd",
- [3]byte{0, 6, 222}: "Flash Technology",
- [3]byte{0, 6, 223}: "AIDONIC Corporation",
- [3]byte{0, 6, 224}: "MAT Co., Ltd.",
- [3]byte{0, 6, 225}: "Techno Trade s.a",
- [3]byte{0, 6, 226}: "Ceemax Technology Co., Ltd.",
- [3]byte{0, 6, 227}: "Quantitative Imaging Corporation",
- [3]byte{0, 6, 228}: "Citel Technologies Ltd.",
- [3]byte{0, 6, 229}: "Fujian Newland Computer Ltd. Co.",
- [3]byte{0, 6, 230}: "DongYang Telecom Co., Ltd.",
- [3]byte{0, 6, 231}: "Bit Blitz Communications Inc.",
- [3]byte{0, 6, 232}: "Optical Network Testing, Inc.",
- [3]byte{0, 6, 233}: "Intime Corp.",
- [3]byte{0, 6, 234}: "ELZET80 Mikrocomputer GmbH&Co. KG",
- [3]byte{0, 6, 235}: "Global Data",
- [3]byte{0, 6, 236}: "Harris Corporation",
- [3]byte{0, 6, 237}: "Inara Networks",
- [3]byte{0, 6, 238}: "Shenyang Neu-era Information & Technology Stock Co., Ltd",
- [3]byte{0, 6, 239}: "Maxxan Systems, Inc.",
- [3]byte{0, 6, 240}: "Digeo, Inc.",
- [3]byte{0, 6, 241}: "Optillion",
- [3]byte{0, 6, 242}: "Platys Communications",
- [3]byte{0, 6, 243}: "AcceLight Networks",
- [3]byte{0, 6, 244}: "Prime Electronics & Satellitics Inc.",
- [3]byte{0, 6, 245}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 6, 246}: "Cisco Systems, Inc",
- [3]byte{0, 6, 247}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 6, 248}: "The Boeing Company",
- [3]byte{0, 6, 249}: "Mitsui Zosen Systems Research Inc.",
- [3]byte{0, 6, 250}: "IP SQUARE Co, Ltd.",
- [3]byte{0, 6, 251}: "Hitachi Printing Solutions, Ltd.",
- [3]byte{0, 6, 252}: "Fnet Co., Ltd.",
- [3]byte{0, 6, 253}: "Comjet Information Systems Corp.",
- [3]byte{0, 6, 254}: "Ambrado, Inc",
- [3]byte{0, 6, 255}: "Sheba Systems Co., Ltd.",
- [3]byte{0, 7, 0}: "Zettamedia Korea",
- [3]byte{0, 7, 1}: "RACAL-DATACOM",
- [3]byte{0, 7, 2}: "Varian Medical Systems",
- [3]byte{0, 7, 3}: "CSEE Transport",
- [3]byte{0, 7, 4}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 7, 5}: "Endress & Hauser GmbH & Co",
- [3]byte{0, 7, 6}: "Sanritz Corporation",
- [3]byte{0, 7, 7}: "Interalia Inc.",
- [3]byte{0, 7, 8}: "Bitrage Inc.",
- [3]byte{0, 7, 9}: "Westerstrand Urfabrik AB",
- [3]byte{0, 7, 10}: "Unicom Automation Co., Ltd.",
- [3]byte{0, 7, 11}: "Novabase SGPS, SA",
- [3]byte{0, 7, 12}: "SVA-Intrusion.com Co. Ltd.",
- [3]byte{0, 7, 13}: "Cisco Systems, Inc",
- [3]byte{0, 7, 14}: "Cisco Systems, Inc",
- [3]byte{0, 7, 15}: "Fujant, Inc.",
- [3]byte{0, 7, 16}: "Adax, Inc.",
- [3]byte{0, 7, 17}: "Acterna",
- [3]byte{0, 7, 18}: "JAL Information Technology",
- [3]byte{0, 7, 19}: "IP One, Inc.",
- [3]byte{0, 7, 20}: "Brightcom",
- [3]byte{0, 7, 21}: "General Research of Electronics, Inc.",
- [3]byte{0, 7, 22}: "J & S Marine Ltd.",
- [3]byte{0, 7, 23}: "Wieland Electric GmbH",
- [3]byte{0, 7, 24}: "iCanTek Co., Ltd.",
- [3]byte{0, 7, 25}: "Mobiis Co., Ltd.",
- [3]byte{0, 7, 26}: "Finedigital Inc.",
- [3]byte{0, 7, 27}: "CDVI Americas Ltd",
- [3]byte{0, 7, 28}: "AT&T",
- [3]byte{0, 7, 29}: "Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.A.",
- [3]byte{0, 7, 30}: "Tri-M Engineering / Nupak Dev. Corp.",
- [3]byte{0, 7, 31}: "European Systems Integration",
- [3]byte{0, 7, 32}: "Trutzschler GmbH & Co. KG",
- [3]byte{0, 7, 33}: "Formac Elektronik GmbH",
- [3]byte{0, 7, 34}: "The Nielsen Company",
- [3]byte{0, 7, 35}: "ELCON Systemtechnik GmbH",
- [3]byte{0, 7, 36}: "Telemax Co., Ltd.",
- [3]byte{0, 7, 37}: "Bematech International Corp.",
- [3]byte{0, 7, 38}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{0, 7, 39}: "Zi Corporation (HK) Ltd.",
- [3]byte{0, 7, 40}: "Neo Telecom",
- [3]byte{0, 7, 41}: "Kistler Instrumente AG",
- [3]byte{0, 7, 42}: "Innovance Networks",
- [3]byte{0, 7, 43}: "Jung Myung Telecom Co., Ltd.",
- [3]byte{0, 7, 44}: "Fabricom",
- [3]byte{0, 7, 45}: "CNSystems",
- [3]byte{0, 7, 46}: "North Node AB",
- [3]byte{0, 7, 47}: "Intransa, Inc.",
- [3]byte{0, 7, 48}: "Hutchison OPTEL Telecom Technology Co., Ltd.",
- [3]byte{0, 7, 49}: "Ophir-Spiricon LLC",
- [3]byte{0, 7, 50}: "AAEON Technology Inc.",
- [3]byte{0, 7, 51}: "DANCONTROL Engineering",
- [3]byte{0, 7, 52}: "ONStor, Inc.",
- [3]byte{0, 7, 53}: "Flarion Technologies, Inc.",
- [3]byte{0, 7, 54}: "Data Video Technologies Co., Ltd.",
- [3]byte{0, 7, 55}: "Soriya Co. Ltd.",
- [3]byte{0, 7, 56}: "Young Technology Co., Ltd.",
- [3]byte{0, 7, 57}: "Scotty Group Austria Gmbh",
- [3]byte{0, 7, 58}: "Inventel Systemes",
- [3]byte{0, 7, 59}: "Tenovis GmbH & Co KG",
- [3]byte{0, 7, 60}: "Telecom Design",
- [3]byte{0, 7, 61}: "Nanjing Postel Telecommunications Co., Ltd.",
- [3]byte{0, 7, 62}: "China Great-Wall Computer Shenzhen Co., Ltd.",
- [3]byte{0, 7, 63}: "Woojyun Systec Co., Ltd.",
- [3]byte{0, 7, 64}: "BUFFALO.INC",
- [3]byte{0, 7, 65}: "Sierra Automated Systems",
- [3]byte{0, 7, 66}: "Ormazabal",
- [3]byte{0, 7, 67}: "Chelsio Communications",
- [3]byte{0, 7, 68}: "Unico, Inc.",
- [3]byte{0, 7, 69}: "Radlan Computer Communications Ltd.",
- [3]byte{0, 7, 70}: "TURCK, Inc.",
- [3]byte{0, 7, 71}: "Mecalc",
- [3]byte{0, 7, 72}: "The Imaging Source Europe",
- [3]byte{0, 7, 73}: "CENiX Inc.",
- [3]byte{0, 7, 74}: "Carl Valentin GmbH",
- [3]byte{0, 7, 75}: "Daihen Corporation",
- [3]byte{0, 7, 76}: "Beicom Inc.",
- [3]byte{0, 7, 77}: "Zebra Technologies Corp.",
- [3]byte{0, 7, 78}: "IPFRONT Inc",
- [3]byte{0, 7, 79}: "Cisco Systems, Inc",
- [3]byte{0, 7, 80}: "Cisco Systems, Inc",
- [3]byte{0, 7, 81}: "m-u-t AG",
- [3]byte{0, 7, 82}: "Rhythm Watch Co., Ltd.",
- [3]byte{0, 7, 83}: "Beijing Qxcomm Technology Co., Ltd.",
- [3]byte{0, 7, 84}: "Xyterra Computing, Inc.",
- [3]byte{0, 7, 85}: "Lafon",
- [3]byte{0, 7, 86}: "Juyoung Telecom",
- [3]byte{0, 7, 87}: "Topcall International AG",
- [3]byte{0, 7, 88}: "Dragonwave",
- [3]byte{0, 7, 89}: "Boris Manufacturing Corp.",
- [3]byte{0, 7, 90}: "Air Products and Chemicals, Inc.",
- [3]byte{0, 7, 91}: "Gibson Guitars",
- [3]byte{0, 7, 92}: "Eastman Kodak Company",
- [3]byte{0, 7, 93}: "Celleritas Inc.",
- [3]byte{0, 7, 94}: "Ametek Power Instruments",
- [3]byte{0, 7, 95}: "VCS Video Communication Systems AG",
- [3]byte{0, 7, 96}: "TOMIS Information & Telecom Corp.",
- [3]byte{0, 7, 97}: "29530",
- [3]byte{0, 7, 98}: "Group Sense Limited",
- [3]byte{0, 7, 99}: "Sunniwell Cyber Tech. Co., Ltd.",
- [3]byte{0, 7, 100}: "YoungWoo Telecom Co. Ltd.",
- [3]byte{0, 7, 101}: "Jade Quantum Technologies, Inc.",
- [3]byte{0, 7, 102}: "Chou Chin Industrial Co., Ltd.",
- [3]byte{0, 7, 103}: "Yuxing Electronics Company Limited",
- [3]byte{0, 7, 104}: "Danfoss A/S",
- [3]byte{0, 7, 105}: "Italiana Macchi SpA",
- [3]byte{0, 7, 106}: "NEXTEYE Co., Ltd.",
- [3]byte{0, 7, 107}: "Stralfors AB",
- [3]byte{0, 7, 108}: "Daehanet, Inc.",
- [3]byte{0, 7, 109}: "Flexlight Networks",
- [3]byte{0, 7, 110}: "Sinetica Corporation Limited",
- [3]byte{0, 7, 111}: "Synoptics Limited",
- [3]byte{0, 7, 112}: "Ubiquoss Inc",
- [3]byte{0, 7, 113}: "Embedded System Corporation",
- [3]byte{0, 7, 114}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{0, 7, 115}: "Ascom Powerline Communications Ltd.",
- [3]byte{0, 7, 116}: "GuangZhou Thinker Technology Co. Ltd.",
- [3]byte{0, 7, 117}: "Valence Semiconductor, Inc.",
- [3]byte{0, 7, 118}: "Federal APD",
- [3]byte{0, 7, 119}: "Motah Ltd.",
- [3]byte{0, 7, 120}: "GERSTEL GmbH & Co. KG",
- [3]byte{0, 7, 121}: "Sungil Telecom Co., Ltd.",
- [3]byte{0, 7, 122}: "Infoware System Co., Ltd.",
- [3]byte{0, 7, 123}: "Millimetrix Broadband Networks",
- [3]byte{0, 7, 124}: "Westermo Teleindustri AB",
- [3]byte{0, 7, 125}: "Cisco Systems, Inc",
- [3]byte{0, 7, 126}: "Elrest GmbH",
- [3]byte{0, 7, 127}: "J Communications Co., Ltd.",
- [3]byte{0, 7, 128}: "Bluegiga Technologies OY",
- [3]byte{0, 7, 129}: "Itron Inc.",
- [3]byte{0, 7, 130}: "Oracle Corporation",
- [3]byte{0, 7, 131}: "SynCom Network, Inc.",
- [3]byte{0, 7, 132}: "Cisco Systems, Inc",
- [3]byte{0, 7, 133}: "Cisco Systems, Inc",
- [3]byte{0, 7, 134}: "Wireless Networks Inc.",
- [3]byte{0, 7, 135}: "Idea System Co., Ltd.",
- [3]byte{0, 7, 136}: "Clipcomm, Inc.",
- [3]byte{0, 7, 137}: "DONGWON SYSTEMS",
- [3]byte{0, 7, 138}: "Mentor Data System Inc.",
- [3]byte{0, 7, 139}: "Wegener Communications, Inc.",
- [3]byte{0, 7, 140}: "Elektronikspecialisten i Borlange AB",
- [3]byte{0, 7, 141}: "NetEngines Ltd.",
- [3]byte{0, 7, 142}: "Garz & Friche GmbH",
- [3]byte{0, 7, 143}: "Emkay Innovative Products",
- [3]byte{0, 7, 144}: "Tri-M Technologies (s) Limited",
- [3]byte{0, 7, 145}: "International Data Communications, Inc.",
- [3]byte{0, 7, 146}: "Sütron Electronic GmbH",
- [3]byte{0, 7, 147}: "Shin Satellite Public Company Limited",
- [3]byte{0, 7, 148}: "Simple Devices, Inc.",
- [3]byte{0, 7, 149}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 7, 150}: "LSI Systems, Inc.",
- [3]byte{0, 7, 151}: "Netpower Co., Ltd.",
- [3]byte{0, 7, 152}: "Selea SRL",
- [3]byte{0, 7, 153}: "Tipping Point Technologies, Inc.",
- [3]byte{0, 7, 154}: "Verint Systems Inc",
- [3]byte{0, 7, 155}: "Aurora Networks",
- [3]byte{0, 7, 156}: "Golden Electronics Technology Co., Ltd.",
- [3]byte{0, 7, 157}: "Musashi Co., Ltd.",
- [3]byte{0, 7, 158}: "Ilinx Co., Ltd.",
- [3]byte{0, 7, 159}: "Action Digital Inc.",
- [3]byte{0, 7, 160}: "e-Watch Inc.",
- [3]byte{0, 7, 161}: "VIASYS Healthcare GmbH",
- [3]byte{0, 7, 162}: "Opteon Corporation",
- [3]byte{0, 7, 163}: "Ositis Software, Inc.",
- [3]byte{0, 7, 164}: "GN Netcom Ltd.",
- [3]byte{0, 7, 165}: "Y.D.K Co. Ltd.",
- [3]byte{0, 7, 166}: "Leviton Manufacturing Co., Inc.",
- [3]byte{0, 7, 167}: "A-Z Inc.",
- [3]byte{0, 7, 168}: "Haier Group Technologies Ltd.",
- [3]byte{0, 7, 169}: "Novasonics",
- [3]byte{0, 7, 170}: "Quantum Data Inc.",
- [3]byte{0, 7, 171}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 7, 172}: "Eolring",
- [3]byte{0, 7, 173}: "Pentacon GmbH Foto-und Feinwerktechnik",
- [3]byte{0, 7, 174}: "Britestream Networks, Inc.",
- [3]byte{0, 7, 175}: "Red Lion Controls, LP",
- [3]byte{0, 7, 176}: "Office Details, Inc.",
- [3]byte{0, 7, 177}: "Equator Technologies",
- [3]byte{0, 7, 178}: "Transaccess S.A.",
- [3]byte{0, 7, 179}: "Cisco Systems, Inc",
- [3]byte{0, 7, 180}: "Cisco Systems, Inc",
- [3]byte{0, 7, 181}: "Any One Wireless Ltd.",
- [3]byte{0, 7, 182}: "Telecom Technology Ltd.",
- [3]byte{0, 7, 183}: "Samurai Ind. Prods Eletronicos Ltda",
- [3]byte{0, 7, 184}: "Corvalent Corporation",
- [3]byte{0, 7, 185}: "Ginganet Corporation",
- [3]byte{0, 7, 186}: "UTStarcom Inc",
- [3]byte{0, 7, 187}: "Candera Inc.",
- [3]byte{0, 7, 188}: "Identix Inc.",
- [3]byte{0, 7, 189}: "Radionet Ltd.",
- [3]byte{0, 7, 190}: "DataLogic SpA",
- [3]byte{0, 7, 191}: "Armillaire Technologies, Inc.",
- [3]byte{0, 7, 192}: "NetZerver Inc.",
- [3]byte{0, 7, 193}: "Overture Networks, Inc.",
- [3]byte{0, 7, 194}: "Netsys Telecom",
- [3]byte{0, 7, 195}: "Thomson",
- [3]byte{0, 7, 196}: "JEAN Co. Ltd.",
- [3]byte{0, 7, 197}: "Gcom, Inc.",
- [3]byte{0, 7, 198}: "VDS Vosskuhler GmbH",
- [3]byte{0, 7, 199}: "Synectics Systems Limited",
- [3]byte{0, 7, 200}: "Brain21, Inc.",
- [3]byte{0, 7, 201}: "Technol Seven Co., Ltd.",
- [3]byte{0, 7, 202}: "Creatix Polymedia Ges Fur Kommunikaitonssysteme",
- [3]byte{0, 7, 203}: "FREEBOX SAS",
- [3]byte{0, 7, 204}: "Kaba Benzing GmbH",
- [3]byte{0, 7, 205}: "Kumoh Electronic Co, Ltd",
- [3]byte{0, 7, 206}: "Cabletime Limited",
- [3]byte{0, 7, 207}: "Anoto AB",
- [3]byte{0, 7, 208}: "Automat Engenharia de Automação Ltda.",
- [3]byte{0, 7, 209}: "Spectrum Signal Processing Inc.",
- [3]byte{0, 7, 210}: "Logopak Systeme GmbH & Co. KG",
- [3]byte{0, 7, 211}: "SPGPrints B.V.",
- [3]byte{0, 7, 212}: "Zhejiang Yutong Network Communication Co Ltd.",
- [3]byte{0, 7, 213}: "3e Technologies Int;., Inc.",
- [3]byte{0, 7, 214}: "Commil Ltd.",
- [3]byte{0, 7, 215}: "Caporis Networks AG",
- [3]byte{0, 7, 216}: "Hitron Technologies. Inc",
- [3]byte{0, 7, 217}: "Splicecom",
- [3]byte{0, 7, 218}: "Neuro Telecom Co., Ltd.",
- [3]byte{0, 7, 219}: "Kirana Networks, Inc.",
- [3]byte{0, 7, 220}: "Atek Co, Ltd.",
- [3]byte{0, 7, 221}: "Cradle Technologies",
- [3]byte{0, 7, 222}: "eCopilt AB",
- [3]byte{0, 7, 223}: "Vbrick Systems Inc.",
- [3]byte{0, 7, 224}: "Palm Inc.",
- [3]byte{0, 7, 225}: "WIS Communications Co. Ltd.",
- [3]byte{0, 7, 226}: "Bitworks, Inc.",
- [3]byte{0, 7, 227}: "Navcom Technology, Inc.",
- [3]byte{0, 7, 228}: "SoftRadio Co., Ltd.",
- [3]byte{0, 7, 229}: "Coup Corporation",
- [3]byte{0, 7, 230}: "edgeflow Canada Inc.",
- [3]byte{0, 7, 231}: "FreeWave Technologies",
- [3]byte{0, 7, 232}: "EdgeWave",
- [3]byte{0, 7, 233}: "Intel Corporation",
- [3]byte{0, 7, 234}: "Massana, Inc.",
- [3]byte{0, 7, 235}: "Cisco Systems, Inc",
- [3]byte{0, 7, 236}: "Cisco Systems, Inc",
- [3]byte{0, 7, 237}: "Altera Corporation",
- [3]byte{0, 7, 238}: "telco Informationssysteme GmbH",
- [3]byte{0, 7, 239}: "Lockheed Martin Tactical Systems",
- [3]byte{0, 7, 240}: "LogiSync LLC",
- [3]byte{0, 7, 241}: "TeraBurst Networks Inc.",
- [3]byte{0, 7, 242}: "IOA Corporation",
- [3]byte{0, 7, 243}: "Thinkengine Networks",
- [3]byte{0, 7, 244}: "Eletex Co., Ltd.",
- [3]byte{0, 7, 245}: "Bridgeco Co AG",
- [3]byte{0, 7, 246}: "Qqest Software Systems",
- [3]byte{0, 7, 247}: "Galtronics",
- [3]byte{0, 7, 248}: "ITDevices, Inc.",
- [3]byte{0, 7, 249}: "Sensaphone",
- [3]byte{0, 7, 250}: "ITT Co., Ltd.",
- [3]byte{0, 7, 251}: "Giga Stream UMTS Technologies GmbH",
- [3]byte{0, 7, 252}: "Adept Systems Inc.",
- [3]byte{0, 7, 253}: "LANergy Ltd.",
- [3]byte{0, 7, 254}: "Rigaku Corporation",
- [3]byte{0, 7, 255}: "Gluon Networks",
- [3]byte{0, 8, 0}: "MULTITECH SYSTEMS, INC.",
- [3]byte{0, 8, 1}: "HighSpeed Surfing Inc.",
- [3]byte{0, 8, 2}: "Hewlett Packard",
- [3]byte{0, 8, 3}: "Cos Tron",
- [3]byte{0, 8, 4}: "ICA Inc.",
- [3]byte{0, 8, 5}: "Techno-Holon Corporation",
- [3]byte{0, 8, 6}: "Raonet Systems, Inc.",
- [3]byte{0, 8, 7}: "Access Devices Limited",
- [3]byte{0, 8, 8}: "PPT Vision, Inc.",
- [3]byte{0, 8, 9}: "Systemonic AG",
- [3]byte{0, 8, 10}: "Espera-Werke GmbH",
- [3]byte{0, 8, 11}: "Birka BPA Informationssystem AB",
- [3]byte{0, 8, 12}: "VDA Elettronica spa",
- [3]byte{0, 8, 13}: "Toshiba",
- [3]byte{0, 8, 14}: "ARRIS Group, Inc.",
- [3]byte{0, 8, 15}: "Proximion Fiber Optics AB",
- [3]byte{0, 8, 16}: "Key Technology, Inc.",
- [3]byte{0, 8, 17}: "VOIX Corporation",
- [3]byte{0, 8, 18}: "GM-2 Corporation",
- [3]byte{0, 8, 19}: "Diskbank, Inc.",
- [3]byte{0, 8, 20}: "TIL Technologies",
- [3]byte{0, 8, 21}: "CATS Co., Ltd.",
- [3]byte{0, 8, 22}: "Bluelon ApS",
- [3]byte{0, 8, 23}: "EmergeCore Networks LLC",
- [3]byte{0, 8, 24}: "Pixelworks, Inc.",
- [3]byte{0, 8, 25}: "Banksys",
- [3]byte{0, 8, 26}: "Sanrad Intelligence Storage Communications (2000) Ltd.",
- [3]byte{0, 8, 27}: "Windigo Systems",
- [3]byte{0, 8, 28}: "@pos.com",
- [3]byte{0, 8, 29}: "Ipsil, Incorporated",
- [3]byte{0, 8, 30}: "Repeatit AB",
- [3]byte{0, 8, 31}: "Pou Yuen Tech Corp. Ltd.",
- [3]byte{0, 8, 32}: "Cisco Systems, Inc",
- [3]byte{0, 8, 33}: "Cisco Systems, Inc",
- [3]byte{0, 8, 34}: "InPro Comm",
- [3]byte{0, 8, 35}: "Texa Corp.",
- [3]byte{0, 8, 36}: "Nuance Document Imaging",
- [3]byte{0, 8, 37}: "Acme Packet",
- [3]byte{0, 8, 38}: "Colorado Med Tech",
- [3]byte{0, 8, 39}: "ADB Broadband Italia",
- [3]byte{0, 8, 40}: "Koei Engineering Ltd.",
- [3]byte{0, 8, 41}: "Aval Nagasaki Corporation",
- [3]byte{0, 8, 42}: "Powerwallz Network Security",
- [3]byte{0, 8, 43}: "Wooksung Electronics, Inc.",
- [3]byte{0, 8, 44}: "Homag AG",
- [3]byte{0, 8, 45}: "Indus Teqsite Private Limited",
- [3]byte{0, 8, 46}: "Multitone Electronics PLC",
- [3]byte{0, 8, 47}: "Cisco Systems, Inc",
- [3]byte{0, 8, 48}: "Cisco Systems, Inc",
- [3]byte{0, 8, 49}: "Cisco Systems, Inc",
- [3]byte{0, 8, 50}: "Cisco Systems, Inc",
- [3]byte{0, 8, 78}: "DivergeNet, Inc.",
- [3]byte{0, 8, 79}: "Qualstar Corporation",
- [3]byte{0, 8, 80}: "Arizona Instrument Corp.",
- [3]byte{0, 8, 81}: "Canadian Bank Note Company, Ltd.",
- [3]byte{0, 8, 82}: "Davolink Co. Inc.",
- [3]byte{0, 8, 83}: "Schleicher GmbH & Co. Relaiswerke KG",
- [3]byte{0, 8, 84}: "Netronix, Inc.",
- [3]byte{0, 8, 85}: "NASA-Goddard Space Flight Center",
- [3]byte{0, 8, 86}: "Gamatronic Electronic Industries Ltd.",
- [3]byte{0, 8, 87}: "Polaris Networks, Inc.",
- [3]byte{0, 8, 88}: "Novatechnology Inc.",
- [3]byte{0, 8, 89}: "ShenZhen Unitone Electronics Co., Ltd.",
- [3]byte{0, 8, 90}: "IntiGate Inc.",
- [3]byte{0, 8, 91}: "Hanbit Electronics Co., Ltd.",
- [3]byte{0, 8, 92}: "Shanghai Dare Technologies Co. Ltd.",
- [3]byte{0, 8, 93}: "Aastra",
- [3]byte{0, 8, 94}: "PCO AG",
- [3]byte{0, 8, 95}: "Picanol N.V.",
- [3]byte{0, 8, 96}: "LodgeNet Entertainment Corp.",
- [3]byte{0, 8, 97}: "SoftEnergy Co., Ltd.",
- [3]byte{0, 8, 98}: "NEC Eluminant Technologies, Inc.",
- [3]byte{0, 8, 99}: "Entrisphere Inc.",
- [3]byte{0, 8, 100}: "Fasy S.p.A.",
- [3]byte{0, 8, 101}: "JASCOM CO., LTD",
- [3]byte{0, 8, 102}: "DSX Access Systems, Inc.",
- [3]byte{0, 8, 103}: "Uptime Devices",
- [3]byte{0, 8, 104}: "PurOptix",
- [3]byte{0, 8, 105}: "Command-e Technology Co.,Ltd.",
- [3]byte{0, 8, 106}: "Securiton Gmbh",
- [3]byte{0, 8, 107}: "MIPSYS",
- [3]byte{0, 8, 108}: "Plasmon LMS",
- [3]byte{0, 8, 109}: "Missouri FreeNet",
- [3]byte{0, 8, 110}: "Hyglo AB",
- [3]byte{0, 8, 111}: "Resources Computer Network Ltd.",
- [3]byte{0, 8, 112}: "Rasvia Systems, Inc.",
- [3]byte{0, 8, 113}: "NORTHDATA Co., Ltd.",
- [3]byte{0, 8, 114}: "Sorenson Communications",
- [3]byte{0, 8, 115}: "DapTechnology B.V.",
- [3]byte{0, 8, 116}: "Dell Inc.",
- [3]byte{0, 8, 117}: "Acorp Electronics Corp.",
- [3]byte{0, 8, 118}: "SDSystem",
- [3]byte{0, 8, 119}: "Liebert-Hiross Spa",
- [3]byte{0, 8, 120}: "Benchmark Storage Innovations",
- [3]byte{0, 8, 121}: "CEM Corporation",
- [3]byte{0, 8, 122}: "Wipotec GmbH",
- [3]byte{0, 8, 123}: "RTX Telecom A/S",
- [3]byte{0, 8, 124}: "Cisco Systems, Inc",
- [3]byte{0, 8, 125}: "Cisco Systems, Inc",
- [3]byte{0, 8, 126}: "Bon Electro-Telecom Inc.",
- [3]byte{0, 8, 127}: "SPAUN electronic GmbH & Co. KG",
- [3]byte{0, 8, 128}: "BroadTel Canada Communications inc.",
- [3]byte{0, 8, 129}: "DIGITAL HANDS CO.,LTD.",
- [3]byte{0, 8, 130}: "SIGMA CORPORATION",
- [3]byte{0, 8, 131}: "Hewlett Packard",
- [3]byte{0, 8, 132}: "Index Braille AB",
- [3]byte{0, 8, 133}: "EMS Dr. Thomas Wünsche",
- [3]byte{0, 8, 134}: "Hansung Teliann, Inc.",
- [3]byte{0, 8, 135}: "Maschinenfabrik Reinhausen GmbH",
- [3]byte{0, 8, 136}: "OULLIM Information Technology Inc,.",
- [3]byte{0, 8, 137}: "Echostar Technologies Corp",
- [3]byte{0, 8, 138}: "Minds@Work",
- [3]byte{0, 8, 139}: "Tropic Networks Inc.",
- [3]byte{0, 8, 140}: "Quanta Network Systems Inc.",
- [3]byte{0, 8, 141}: "Sigma-Links Inc.",
- [3]byte{0, 8, 142}: "Nihon Computer Co., Ltd.",
- [3]byte{0, 8, 143}: "ADVANCED DIGITAL TECHNOLOGY",
- [3]byte{0, 8, 144}: "AVILINKS SA",
- [3]byte{0, 8, 145}: "Lyan Inc.",
- [3]byte{0, 8, 146}: "EM Solutions",
- [3]byte{0, 8, 147}: "LE INFORMATION COMMUNICATION INC.",
- [3]byte{0, 8, 148}: "InnoVISION Multimedia Ltd.",
- [3]byte{0, 8, 149}: "DIRC Technologie GmbH & Co.KG",
- [3]byte{0, 8, 150}: "Printronix, Inc.",
- [3]byte{0, 8, 151}: "Quake Technologies",
- [3]byte{0, 8, 152}: "Gigabit Optics Corporation",
- [3]byte{0, 8, 153}: "Netbind, Inc.",
- [3]byte{0, 8, 154}: "Alcatel Microelectronics",
- [3]byte{0, 8, 155}: "ICP Electronics Inc.",
- [3]byte{0, 8, 156}: "Elecs Industry Co., Ltd.",
- [3]byte{0, 8, 157}: "UHD-Elektronik",
- [3]byte{0, 8, 158}: "Beijing Enter-Net co.LTD",
- [3]byte{0, 8, 159}: "EFM Networks",
- [3]byte{0, 8, 160}: "Stotz Feinmesstechnik GmbH",
- [3]byte{0, 8, 161}: "CNet Technology Inc.",
- [3]byte{0, 8, 162}: "ADI Engineering, Inc.",
- [3]byte{0, 8, 163}: "Cisco Systems, Inc",
- [3]byte{0, 8, 164}: "Cisco Systems, Inc",
- [3]byte{0, 8, 165}: "Peninsula Systems Inc.",
- [3]byte{0, 8, 166}: "Multiware & Image Co., Ltd.",
- [3]byte{0, 8, 167}: "iLogic Inc.",
- [3]byte{0, 8, 168}: "Systec Co., Ltd.",
- [3]byte{0, 8, 169}: "SangSang Technology, Inc.",
- [3]byte{0, 8, 170}: "KARAM",
- [3]byte{0, 8, 171}: "EnerLinx.com, Inc.",
- [3]byte{0, 8, 172}: "Eltromat GmbH",
- [3]byte{0, 8, 173}: "Toyo-Linx Co., Ltd.",
- [3]byte{0, 8, 174}: "PacketFront Network Products AB",
- [3]byte{0, 8, 175}: "Novatec Corporation",
- [3]byte{0, 8, 176}: "BKtel communications GmbH",
- [3]byte{0, 8, 177}: "ProQuent Systems",
- [3]byte{0, 8, 178}: "SHENZHEN COMPASS TECHNOLOGY DEVELOPMENT CO.,LTD",
- [3]byte{0, 8, 179}: "Fastwel",
- [3]byte{0, 8, 180}: "SYSPOL",
- [3]byte{0, 8, 181}: "TAI GUEN ENTERPRISE CO., LTD",
- [3]byte{0, 8, 182}: "RouteFree, Inc.",
- [3]byte{0, 8, 183}: "HIT Incorporated",
- [3]byte{0, 8, 184}: "E.F. Johnson",
- [3]byte{0, 8, 185}: "Kaonmedia CO., LTD.",
- [3]byte{0, 8, 186}: "Erskine Systems Ltd",
- [3]byte{0, 8, 187}: "NetExcell",
- [3]byte{0, 8, 188}: "Ilevo AB",
- [3]byte{0, 8, 189}: "TEPG-US",
- [3]byte{0, 8, 190}: "XENPAK MSA Group",
- [3]byte{0, 8, 191}: "Aptus Elektronik AB",
- [3]byte{0, 8, 192}: "ASA SYSTEMS",
- [3]byte{0, 8, 193}: "Avistar Communications Corporation",
- [3]byte{0, 8, 194}: "Cisco Systems, Inc",
- [3]byte{0, 8, 195}: "Contex A/S",
- [3]byte{0, 8, 196}: "Hikari Co.,Ltd.",
- [3]byte{0, 8, 197}: "Liontech Co., Ltd.",
- [3]byte{0, 8, 198}: "Philips Consumer Communications",
- [3]byte{0, 8, 199}: "Hewlett Packard",
- [3]byte{0, 8, 200}: "Soneticom, Inc.",
- [3]byte{0, 8, 201}: "TechniSat Digital GmbH Daun",
- [3]byte{0, 8, 202}: "TwinHan Technology Co.,Ltd",
- [3]byte{0, 8, 203}: "Zeta Broadband Inc.",
- [3]byte{0, 8, 204}: "Remotec, Inc.",
- [3]byte{0, 8, 205}: "With-Net Inc",
- [3]byte{0, 8, 206}: "IPMobileNet Inc.",
- [3]byte{0, 8, 207}: "Nippon Koei Power Systems Co., Ltd.",
- [3]byte{0, 8, 208}: "Musashi Engineering Co., LTD.",
- [3]byte{0, 8, 209}: "KAREL INC.",
- [3]byte{0, 8, 210}: "ZOOM Networks Inc.",
- [3]byte{0, 8, 211}: "Hercules Technologies S.A.S.",
- [3]byte{0, 8, 212}: "IneoQuest Technologies, Inc",
- [3]byte{0, 8, 213}: "Vanguard Networks Solutions, LLC",
- [3]byte{0, 8, 214}: "HASSNET Inc.",
- [3]byte{0, 8, 215}: "HOW CORPORATION",
- [3]byte{0, 8, 216}: "Dowkey Microwave",
- [3]byte{0, 8, 217}: "Mitadenshi Co.,LTD",
- [3]byte{0, 8, 218}: "SofaWare Technologies Ltd.",
- [3]byte{0, 8, 219}: "Corrigent Systems",
- [3]byte{0, 8, 220}: "Wiznet",
- [3]byte{0, 8, 221}: "Telena Communications, Inc.",
- [3]byte{0, 8, 222}: "3UP Systems",
- [3]byte{0, 8, 223}: "Alistel Inc.",
- [3]byte{0, 8, 224}: "ATO Technology Ltd.",
- [3]byte{0, 8, 225}: "Barix AG",
- [3]byte{0, 8, 226}: "Cisco Systems, Inc",
- [3]byte{0, 8, 227}: "Cisco Systems, Inc",
- [3]byte{0, 8, 228}: "Envenergy Inc",
- [3]byte{0, 8, 229}: "IDK Corporation",
- [3]byte{0, 8, 230}: "Littlefeet",
- [3]byte{0, 8, 231}: "SHI ControlSystems,Ltd.",
- [3]byte{0, 8, 232}: "Excel Master Ltd.",
- [3]byte{0, 8, 233}: "NextGig",
- [3]byte{0, 8, 234}: "Motion Control Engineering, Inc",
- [3]byte{0, 8, 235}: "ROMWin Co.,Ltd.",
- [3]byte{0, 8, 236}: "Optical Zonu Corporation",
- [3]byte{0, 8, 237}: "ST&T Instrument Corp.",
- [3]byte{0, 8, 238}: "Logic Product Development",
- [3]byte{0, 8, 239}: "DIBAL,S.A.",
- [3]byte{0, 8, 240}: "Next Generation Systems, Inc.",
- [3]byte{0, 8, 241}: "Voltaire",
- [3]byte{0, 8, 242}: "C&S Technology",
- [3]byte{0, 8, 243}: "WANY",
- [3]byte{0, 8, 244}: "Bluetake Technology Co., Ltd.",
- [3]byte{0, 8, 245}: "YESTECHNOLOGY Co.,Ltd.",
- [3]byte{0, 8, 246}: "Sumitomo Electric Industries,Ltd",
- [3]byte{0, 8, 247}: "Hitachi Ltd, Semiconductor & Integrated Circuits Gr",
- [3]byte{0, 8, 248}: "UTC CCS",
- [3]byte{0, 8, 249}: "Artesyn Embedded Technologies",
- [3]byte{0, 8, 250}: "KEB Automation KG",
- [3]byte{0, 8, 251}: "SonoSite, Inc.",
- [3]byte{0, 8, 252}: "Gigaphoton Inc.",
- [3]byte{0, 8, 253}: "BlueKorea Co., Ltd.",
- [3]byte{0, 8, 254}: "UNIK C&C Co.,Ltd.",
- [3]byte{0, 8, 255}: "Trilogy Communications Ltd",
- [3]byte{0, 9, 0}: "TMT",
- [3]byte{0, 9, 1}: "Shenzhen Shixuntong Information & Technoligy Co",
- [3]byte{0, 9, 2}: "Redline Communications Inc.",
- [3]byte{0, 9, 3}: "Panasas, Inc",
- [3]byte{0, 9, 4}: "MONDIAL electronic",
- [3]byte{0, 9, 5}: "iTEC Technologies Ltd.",
- [3]byte{0, 9, 6}: "Esteem Networks",
- [3]byte{0, 9, 7}: "Chrysalis Development",
- [3]byte{0, 9, 8}: "VTech Technology Corp.",
- [3]byte{0, 9, 9}: "Telenor Connect A/S",
- [3]byte{0, 9, 10}: "SnedFar Technology Co., Ltd.",
- [3]byte{0, 9, 11}: "MTL Instruments PLC",
- [3]byte{0, 9, 12}: "Mayekawa Mfg. Co. Ltd.",
- [3]byte{0, 9, 13}: "LEADER ELECTRONICS CORP.",
- [3]byte{0, 9, 14}: "Helix Technology Inc.",
- [3]byte{0, 9, 15}: "Fortinet Inc.",
- [3]byte{0, 9, 16}: "Simple Access Inc.",
- [3]byte{0, 9, 17}: "Cisco Systems, Inc",
- [3]byte{0, 9, 18}: "Cisco Systems, Inc",
- [3]byte{0, 9, 19}: "SystemK Corporation",
- [3]byte{0, 9, 20}: "COMPUTROLS INC.",
- [3]byte{0, 9, 21}: "CAS Corp.",
- [3]byte{0, 9, 22}: "Listman Home Technologies, Inc.",
- [3]byte{0, 9, 23}: "WEM Technology Inc",
- [3]byte{0, 9, 24}: "SAMSUNG TECHWIN CO.,LTD",
- [3]byte{0, 9, 25}: "MDS Gateways",
- [3]byte{0, 9, 26}: "Macat Optics & Electronics Co., Ltd.",
- [3]byte{0, 9, 27}: "Digital Generation Inc.",
- [3]byte{0, 9, 28}: "CacheVision, Inc",
- [3]byte{0, 9, 29}: "Proteam Computer Corporation",
- [3]byte{0, 9, 30}: "Firstech Technology Corp.",
- [3]byte{0, 9, 31}: "A&D Co., Ltd.",
- [3]byte{0, 9, 32}: "EpoX COMPUTER CO.,LTD.",
- [3]byte{0, 9, 33}: "Planmeca Oy",
- [3]byte{0, 9, 34}: "TST Biometrics GmbH",
- [3]byte{0, 9, 35}: "Heaman System Co., Ltd",
- [3]byte{0, 9, 36}: "Telebau GmbH",
- [3]byte{0, 9, 37}: "VSN Systemen BV",
- [3]byte{0, 9, 38}: "YODA COMMUNICATIONS, INC.",
- [3]byte{0, 9, 39}: "TOYOKEIKI CO.,LTD.",
- [3]byte{0, 9, 40}: "Telecore",
- [3]byte{0, 9, 41}: "Sanyo Industries (UK) Limited",
- [3]byte{0, 9, 42}: "MYTECS Co.,Ltd.",
- [3]byte{0, 9, 43}: "iQstor Networks, Inc.",
- [3]byte{0, 9, 44}: "Hitpoint Inc.",
- [3]byte{0, 9, 45}: "HTC Corporation",
- [3]byte{0, 9, 46}: "B&Tech System Inc.",
- [3]byte{0, 9, 47}: "Akom Technology Corporation",
- [3]byte{0, 9, 48}: "AeroConcierge Inc.",
- [3]byte{0, 9, 49}: "Future Internet, Inc.",
- [3]byte{0, 9, 50}: "Omnilux",
- [3]byte{0, 9, 51}: "Ophit Co.Ltd.",
- [3]byte{0, 9, 52}: "Dream-Multimedia-Tv GmbH",
- [3]byte{0, 9, 53}: "Sandvine Incorporated",
- [3]byte{0, 9, 54}: "Ipetronik GmbH & Co. KG",
- [3]byte{0, 9, 55}: "Inventec Appliance Corp",
- [3]byte{0, 9, 56}: "Allot Communications",
- [3]byte{0, 9, 57}: "ShibaSoku Co.,Ltd.",
- [3]byte{0, 9, 58}: "Molex",
- [3]byte{0, 9, 59}: "HYUNDAI NETWORKS INC.",
- [3]byte{0, 9, 60}: "Jacques Technologies P/L",
- [3]byte{0, 9, 61}: "Newisys,Inc.",
- [3]byte{0, 9, 62}: "C&I Technologies",
- [3]byte{0, 9, 63}: "Double-Win Enterpirse CO., LTD",
- [3]byte{0, 9, 64}: "AGFEO GmbH & Co. KG",
- [3]byte{0, 9, 65}: "Allied Telesis R&D Center K.K.",
- [3]byte{0, 9, 66}: "Wireless Technologies, Inc",
- [3]byte{0, 9, 67}: "Cisco Systems, Inc",
- [3]byte{0, 9, 68}: "Cisco Systems, Inc",
- [3]byte{0, 9, 69}: "Palmmicro Communications Inc",
- [3]byte{0, 9, 70}: "Cluster Labs GmbH",
- [3]byte{0, 9, 71}: "Aztek, Inc.",
- [3]byte{0, 9, 72}: "Vista Control Systems, Corp.",
- [3]byte{0, 9, 73}: "Glyph Technologies Inc.",
- [3]byte{0, 9, 74}: "Homenet Communications",
- [3]byte{0, 9, 75}: "FillFactory NV",
- [3]byte{0, 9, 76}: "Communication Weaver Co.,Ltd.",
- [3]byte{0, 9, 77}: "Braintree Communications Pty Ltd",
- [3]byte{0, 9, 78}: "BARTECH SYSTEMS INTERNATIONAL, INC",
- [3]byte{0, 9, 79}: "elmegt GmbH & Co. KG",
- [3]byte{0, 9, 80}: "Independent Storage Corporation",
- [3]byte{0, 9, 81}: "Apogee Imaging Systems",
- [3]byte{0, 9, 82}: "Auerswald GmbH & Co. KG",
- [3]byte{0, 9, 83}: "Linkage System Integration Co.Ltd.",
- [3]byte{0, 9, 84}: "AMiT spol. s. r. o.",
- [3]byte{0, 9, 85}: "Young Generation International Corp.",
- [3]byte{0, 9, 86}: "Network Systems Group, Ltd. (NSG)",
- [3]byte{0, 9, 87}: "Supercaller, Inc.",
- [3]byte{0, 9, 88}: "INTELNET S.A.",
- [3]byte{0, 9, 89}: "Sitecsoft",
- [3]byte{0, 9, 90}: "RACEWOOD TECHNOLOGY",
- [3]byte{0, 9, 91}: "NETGEAR",
- [3]byte{0, 9, 92}: "Philips Medical Systems - Cardiac and Monitoring Systems (CM",
- [3]byte{0, 9, 93}: "Dialogue Technology Corp.",
- [3]byte{0, 9, 94}: "Masstech Group Inc.",
- [3]byte{0, 9, 95}: "Telebyte, Inc.",
- [3]byte{0, 9, 96}: "YOZAN Inc.",
- [3]byte{0, 9, 97}: "Switchgear and Instrumentation Ltd",
- [3]byte{0, 9, 98}: "Sonitor Technologies AS",
- [3]byte{0, 9, 99}: "Dominion Lasercom Inc.",
- [3]byte{0, 9, 100}: "Hi-Techniques, Inc.",
- [3]byte{0, 9, 101}: "HyunJu Computer Co., Ltd.",
- [3]byte{0, 9, 102}: "TRIMBLE EUROPE BV",
- [3]byte{0, 9, 103}: "Tachyon, Inc",
- [3]byte{0, 9, 104}: "TECHNOVENTURE, INC.",
- [3]byte{0, 9, 105}: "Meret Optical Communications",
- [3]byte{0, 9, 106}: "Cloverleaf Communications Inc.",
- [3]byte{0, 9, 107}: "IBM Corp",
- [3]byte{0, 9, 108}: "Imedia Semiconductor Corp.",
- [3]byte{0, 9, 109}: "Powernet Technologies Corp.",
- [3]byte{0, 9, 110}: "GIANT ELECTRONICS LTD.",
- [3]byte{0, 9, 111}: "Beijing Zhongqing Elegant Tech. Corp.,Limited",
- [3]byte{0, 9, 112}: "Vibration Research Corporation",
- [3]byte{0, 9, 113}: "Time Management, Inc.",
- [3]byte{0, 9, 114}: "Securebase,Inc",
- [3]byte{0, 9, 115}: "Lenten Technology Co., Ltd.",
- [3]byte{0, 9, 116}: "Innopia Technologies, Inc.",
- [3]byte{0, 9, 117}: "fSONA Communications Corporation",
- [3]byte{0, 9, 118}: "Datasoft ISDN Systems GmbH",
- [3]byte{0, 9, 119}: "Brunner Elektronik AG",
- [3]byte{0, 9, 120}: "AIJI System Co., Ltd.",
- [3]byte{0, 9, 121}: "Advanced Television Systems Committee, Inc.",
- [3]byte{0, 9, 122}: "Louis Design Labs.",
- [3]byte{0, 9, 123}: "Cisco Systems, Inc",
- [3]byte{0, 9, 124}: "Cisco Systems, Inc",
- [3]byte{0, 9, 125}: "SecWell Networks Oy",
- [3]byte{0, 9, 126}: "IMI TECHNOLOGY CO., LTD",
- [3]byte{0, 9, 127}: "Vsecure 2000 LTD.",
- [3]byte{0, 9, 128}: "Power Zenith Inc.",
- [3]byte{0, 9, 129}: "Newport Networks",
- [3]byte{0, 9, 130}: "Loewe Opta GmbH",
- [3]byte{0, 9, 131}: "GlobalTop Technology, Inc.",
- [3]byte{0, 9, 132}: "MyCasa Network Inc.",
- [3]byte{0, 9, 133}: "Auto Telecom Company",
- [3]byte{0, 9, 134}: "Metalink LTD.",
- [3]byte{0, 9, 135}: "NISHI NIPPON ELECTRIC WIRE & CABLE CO.,LTD.",
- [3]byte{0, 9, 136}: "Nudian Electron Co., Ltd.",
- [3]byte{0, 9, 137}: "VividLogic Inc.",
- [3]byte{0, 9, 138}: "EqualLogic Inc",
- [3]byte{0, 9, 139}: "Entropic Communications, Inc.",
- [3]byte{0, 9, 140}: "Option Wireless Sweden",
- [3]byte{0, 9, 141}: "Velocity Semiconductor",
- [3]byte{0, 9, 142}: "ipcas GmbH",
- [3]byte{0, 9, 143}: "Cetacean Networks",
- [3]byte{0, 9, 144}: "ACKSYS Communications & systems",
- [3]byte{0, 9, 145}: "GE Fanuc Automation Manufacturing, Inc.",
- [3]byte{0, 9, 146}: "InterEpoch Technology,INC.",
- [3]byte{0, 9, 147}: "Visteon Corporation",
- [3]byte{0, 9, 148}: "Cronyx Engineering",
- [3]byte{0, 9, 149}: "Castle Technology Ltd",
- [3]byte{0, 9, 150}: "RDI",
- [3]byte{0, 9, 151}: "Nortel Networks",
- [3]byte{0, 9, 152}: "Capinfo Company Limited",
- [3]byte{0, 9, 153}: "CP GEORGES RENAULT",
- [3]byte{0, 9, 154}: "ELMO COMPANY, LIMITED",
- [3]byte{0, 9, 155}: "Western Telematic Inc.",
- [3]byte{0, 9, 156}: "Naval Research Laboratory",
- [3]byte{0, 9, 157}: "Haliplex Communications",
- [3]byte{0, 9, 158}: "Testech, Inc.",
- [3]byte{0, 9, 159}: "VIDEX INC.",
- [3]byte{0, 9, 160}: "Microtechno Corporation",
- [3]byte{0, 9, 161}: "Telewise Communications, Inc.",
- [3]byte{0, 9, 162}: "Interface Co., Ltd.",
- [3]byte{0, 9, 163}: "Leadfly Techologies Corp. Ltd.",
- [3]byte{0, 9, 164}: "HARTEC Corporation",
- [3]byte{0, 9, 165}: "HANSUNG ELETRONIC INDUSTRIES DEVELOPMENT CO., LTD",
- [3]byte{0, 9, 166}: "Ignis Optics, Inc.",
- [3]byte{0, 9, 167}: "Bang & Olufsen A/S",
- [3]byte{0, 9, 168}: "Eastmode Pte Ltd",
- [3]byte{0, 9, 169}: "Ikanos Communications",
- [3]byte{0, 9, 170}: "Data Comm for Business, Inc.",
- [3]byte{0, 9, 171}: "Netcontrol Oy",
- [3]byte{0, 9, 172}: "LANVOICE",
- [3]byte{0, 9, 173}: "HYUNDAI SYSCOMM, INC.",
- [3]byte{0, 9, 174}: "OKANO ELECTRIC CO.,LTD",
- [3]byte{0, 9, 175}: "e-generis",
- [3]byte{0, 9, 176}: "Onkyo Corporation",
- [3]byte{0, 9, 177}: "Kanematsu Electronics, Ltd.",
- [3]byte{0, 9, 178}: "L&F Inc.",
- [3]byte{0, 9, 179}: "MCM Systems Ltd",
- [3]byte{0, 9, 180}: "KISAN TELECOM CO., LTD.",
- [3]byte{0, 9, 181}: "3J Tech. Co., Ltd.",
- [3]byte{0, 9, 182}: "Cisco Systems, Inc",
- [3]byte{0, 9, 183}: "Cisco Systems, Inc",
- [3]byte{0, 9, 184}: "Entise Systems",
- [3]byte{0, 9, 185}: "Action Imaging Solutions",
- [3]byte{0, 9, 186}: "MAKU Informationstechik GmbH",
- [3]byte{0, 9, 187}: "MathStar, Inc.",
- [3]byte{0, 9, 188}: "Utility, Inc",
- [3]byte{0, 9, 189}: "Epygi Technologies, Ltd.",
- [3]byte{0, 9, 190}: "Mamiya-OP Co.,Ltd.",
- [3]byte{0, 9, 191}: "Nintendo Co., Ltd.",
- [3]byte{0, 9, 192}: "6WIND",
- [3]byte{0, 9, 193}: "PROCES-DATA A/S",
- [3]byte{0, 9, 194}: "Onity, Inc.",
- [3]byte{0, 9, 195}: "NETAS",
- [3]byte{0, 9, 196}: "Medicore Co., Ltd",
- [3]byte{0, 9, 197}: "KINGENE Technology Corporation",
- [3]byte{0, 9, 198}: "Visionics Corporation",
- [3]byte{0, 9, 199}: "Movistec",
- [3]byte{0, 9, 200}: "SINAGAWA TSUSHIN KEISOU SERVICE",
- [3]byte{0, 9, 201}: "BlueWINC Co., Ltd.",
- [3]byte{0, 9, 202}: "iMaxNetworks(Shenzhen)Limited.",
- [3]byte{0, 9, 203}: "HBrain",
- [3]byte{0, 9, 204}: "Moog GmbH",
- [3]byte{0, 9, 205}: "HUDSON SOFT CO.,LTD.",
- [3]byte{0, 9, 206}: "SpaceBridge Semiconductor Corp.",
- [3]byte{0, 9, 207}: "iAd GmbH",
- [3]byte{0, 9, 208}: "Solacom Technologies Inc.",
- [3]byte{0, 9, 209}: "SERANOA NETWORKS INC",
- [3]byte{0, 9, 210}: "Mai Logic Inc.",
- [3]byte{0, 9, 211}: "Western DataCom Co., Inc.",
- [3]byte{0, 9, 212}: "Transtech Networks",
- [3]byte{0, 9, 213}: "Signal Communication, Inc.",
- [3]byte{0, 9, 214}: "KNC One GmbH",
- [3]byte{0, 9, 215}: "DC Security Products",
- [3]byte{0, 9, 216}: "Fält Communications AB",
- [3]byte{0, 9, 217}: "Neoscale Systems, Inc",
- [3]byte{0, 9, 218}: "Control Module Inc.",
- [3]byte{0, 9, 219}: "eSpace",
- [3]byte{0, 9, 220}: "Galaxis Technology AG",
- [3]byte{0, 9, 221}: "Mavin Technology Inc.",
- [3]byte{0, 9, 222}: "Samjin Information & Communications Co., Ltd.",
- [3]byte{0, 9, 223}: "Vestel Komunikasyon Sanayi ve Ticaret A.S.",
- [3]byte{0, 9, 224}: "XEMICS S.A.",
- [3]byte{0, 9, 225}: "Gemtek Technology Co., Ltd.",
- [3]byte{0, 9, 226}: "Sinbon Electronics Co., Ltd.",
- [3]byte{0, 9, 227}: "Angel Iglesias S.A.",
- [3]byte{0, 9, 228}: "K Tech Infosystem Inc.",
- [3]byte{0, 9, 229}: "Hottinger Baldwin Messtechnik GmbH",
- [3]byte{0, 9, 230}: "Cyber Switching Inc.",
- [3]byte{0, 9, 231}: "ADC Techonology",
- [3]byte{0, 9, 232}: "Cisco Systems, Inc",
- [3]byte{0, 9, 233}: "Cisco Systems, Inc",
- [3]byte{0, 9, 234}: "YEM Inc.",
- [3]byte{0, 9, 235}: "HuMANDATA LTD.",
- [3]byte{0, 9, 236}: "Daktronics, Inc.",
- [3]byte{0, 9, 237}: "CipherOptics",
- [3]byte{0, 9, 238}: "MEIKYO ELECTRIC CO.,LTD",
- [3]byte{0, 9, 239}: "Vocera Communications",
- [3]byte{0, 9, 240}: "Shimizu Technology Inc.",
- [3]byte{0, 9, 241}: "Yamaki Electric Corporation",
- [3]byte{0, 9, 242}: "Cohu, Inc., Electronics Division",
- [3]byte{0, 9, 243}: "WELL Communication Corp.",
- [3]byte{0, 9, 244}: "Alcon Laboratories, Inc.",
- [3]byte{0, 9, 245}: "Emerson Network Power Co.,Ltd",
- [3]byte{0, 9, 246}: "Shenzhen Eastern Digital Tech Ltd.",
- [3]byte{0, 9, 247}: "SED, a division of Calian",
- [3]byte{0, 9, 248}: "UNIMO TECHNOLOGY CO., LTD.",
- [3]byte{0, 9, 249}: "ART JAPAN CO., LTD.",
- [3]byte{0, 9, 251}: "Philips Patient Monitoring",
- [3]byte{0, 9, 252}: "IPFLEX Inc.",
- [3]byte{0, 9, 253}: "Ubinetics Limited",
- [3]byte{0, 9, 254}: "Daisy Technologies, Inc.",
- [3]byte{0, 9, 255}: "X.net 2000 GmbH",
- [3]byte{0, 10, 0}: "Mediatek Corp.",
- [3]byte{0, 10, 1}: "SOHOware, Inc.",
- [3]byte{0, 10, 2}: "ANNSO CO., LTD.",
- [3]byte{0, 10, 3}: "ENDESA SERVICIOS, S.L.",
- [3]byte{0, 10, 4}: "3Com Ltd",
- [3]byte{0, 10, 5}: "Widax Corp.",
- [3]byte{0, 10, 6}: "Teledex LLC",
- [3]byte{0, 10, 7}: "WebWayOne Ltd",
- [3]byte{0, 10, 8}: "Alpine Electronics, Inc.",
- [3]byte{0, 10, 9}: "TaraCom Integrated Products, Inc.",
- [3]byte{0, 10, 10}: "SUNIX Co., Ltd.",
- [3]byte{0, 10, 11}: "Sealevel Systems, Inc.",
- [3]byte{0, 10, 12}: "Scientific Research Corporation",
- [3]byte{0, 10, 13}: "FCI Deutschland GmbH",
- [3]byte{0, 10, 14}: "Invivo Research Inc.",
- [3]byte{0, 10, 15}: "Ilryung Telesys, Inc",
- [3]byte{0, 10, 16}: "FAST media integrations AG",
- [3]byte{0, 10, 17}: "ExPet Technologies, Inc",
- [3]byte{0, 10, 18}: "Azylex Technology, Inc",
- [3]byte{0, 10, 19}: "Honeywell Video Systems",
- [3]byte{0, 10, 20}: "TECO a.s.",
- [3]byte{0, 10, 21}: "Silicon Data, Inc",
- [3]byte{0, 10, 22}: "Lassen Research",
- [3]byte{0, 10, 23}: "NESTAR COMMUNICATIONS, INC",
- [3]byte{0, 10, 24}: "Vichel Inc.",
- [3]byte{0, 10, 25}: "Valere Power, Inc.",
- [3]byte{0, 10, 26}: "Imerge Ltd",
- [3]byte{0, 10, 27}: "Stream Labs",
- [3]byte{0, 10, 28}: "Bridge Information Co., Ltd.",
- [3]byte{0, 10, 29}: "Optical Communications Products Inc.",
- [3]byte{0, 10, 30}: "Red-M Products Limited",
- [3]byte{0, 10, 31}: "ART WARE Telecommunication Co., Ltd.",
- [3]byte{0, 10, 32}: "SVA Networks, Inc.",
- [3]byte{0, 10, 33}: "Integra Telecom Co. Ltd",
- [3]byte{0, 10, 34}: "Amperion Inc",
- [3]byte{0, 10, 35}: "Parama Networks Inc",
- [3]byte{0, 10, 36}: "Octave Communications",
- [3]byte{0, 10, 37}: "CERAGON NETWORKS",
- [3]byte{0, 10, 38}: "CEIA S.p.A.",
- [3]byte{0, 10, 39}: "Apple, Inc.",
- [3]byte{0, 10, 40}: "Motorola",
- [3]byte{0, 10, 41}: "Pan Dacom Networking AG",
- [3]byte{0, 10, 42}: "QSI Systems Inc.",
- [3]byte{0, 10, 43}: "Etherstuff",
- [3]byte{0, 10, 44}: "Active Tchnology Corporation",
- [3]byte{0, 10, 45}: "Cabot Communications Limited",
- [3]byte{0, 10, 46}: "MAPLE NETWORKS CO., LTD",
- [3]byte{0, 10, 47}: "Artnix Inc.",
- [3]byte{0, 10, 48}: "Visteon Corporation",
- [3]byte{0, 10, 49}: "HCV Consulting",
- [3]byte{0, 10, 50}: "Xsido Corporation",
- [3]byte{0, 10, 51}: "Emulex Corporation",
- [3]byte{0, 10, 52}: "Identicard Systems Incorporated",
- [3]byte{0, 10, 53}: "Xilinx",
- [3]byte{0, 10, 54}: "Synelec Telecom Multimedia",
- [3]byte{0, 10, 55}: "Procera Networks, Inc.",
- [3]byte{0, 10, 56}: "Apani Networks",
- [3]byte{0, 10, 57}: "LoPA Information Technology",
- [3]byte{0, 10, 58}: "J-THREE INTERNATIONAL Holding Co., Ltd.",
- [3]byte{0, 10, 59}: "GCT Semiconductor, Inc",
- [3]byte{0, 10, 60}: "Enerpoint Ltd.",
- [3]byte{0, 10, 61}: "Elo Sistemas Eletronicos S.A.",
- [3]byte{0, 10, 62}: "EADS Telecom",
- [3]byte{0, 10, 63}: "Data East Corporation",
- [3]byte{0, 10, 64}: "Crown Audio -- Harmanm International",
- [3]byte{0, 10, 65}: "Cisco Systems, Inc",
- [3]byte{0, 10, 66}: "Cisco Systems, Inc",
- [3]byte{0, 10, 67}: "Chunghwa Telecom Co., Ltd.",
- [3]byte{0, 10, 68}: "Avery Dennison Deutschland GmbH",
- [3]byte{0, 10, 69}: "Audio-Technica Corp.",
- [3]byte{0, 10, 70}: "ARO WELDING TECHNOLOGIES SAS",
- [3]byte{0, 10, 71}: "Allied Vision Technologies",
- [3]byte{0, 10, 72}: "Albatron Technology",
- [3]byte{0, 10, 73}: "F5 Networks, Inc.",
- [3]byte{0, 10, 74}: "Targa Systems Ltd.",
- [3]byte{0, 10, 75}: "DataPower Technology, Inc.",
- [3]byte{0, 10, 76}: "Molecular Devices Corporation",
- [3]byte{0, 10, 77}: "Noritz Corporation",
- [3]byte{0, 10, 78}: "UNITEK Electronics INC.",
- [3]byte{0, 10, 79}: "Brain Boxes Limited",
- [3]byte{0, 10, 80}: "REMOTEK CORPORATION",
- [3]byte{0, 10, 81}: "GyroSignal Technology Co., Ltd.",
- [3]byte{0, 10, 82}: "AsiaRF Ltd.",
- [3]byte{0, 10, 83}: "Intronics, Incorporated",
- [3]byte{0, 10, 84}: "Laguna Hills, Inc.",
- [3]byte{0, 10, 85}: "MARKEM Corporation",
- [3]byte{0, 10, 86}: "HITACHI Maxell Ltd.",
- [3]byte{0, 10, 87}: "Hewlett Packard",
- [3]byte{0, 10, 88}: "Freyer & Siegel Elektronik GmbH & Co. KG",
- [3]byte{0, 10, 89}: "HW server",
- [3]byte{0, 10, 90}: "GreenNET Technologies Co.,Ltd.",
- [3]byte{0, 10, 91}: "Power-One as",
- [3]byte{0, 10, 92}: "Carel s.p.a.",
- [3]byte{0, 10, 93}: "FingerTec Worldwide Sdn Bhd",
- [3]byte{0, 10, 94}: "3COM Corporation",
- [3]byte{0, 10, 95}: "almedio inc.",
- [3]byte{0, 10, 96}: "Autostar Technology Pte Ltd",
- [3]byte{0, 10, 97}: "Cellinx Systems Inc.",
- [3]byte{0, 10, 98}: "Crinis Networks, Inc.",
- [3]byte{0, 10, 99}: "DHD GmbH",
- [3]byte{0, 10, 100}: "Eracom Technologies",
- [3]byte{0, 10, 101}: "GentechMedia.co.,ltd.",
- [3]byte{0, 10, 102}: "MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD.",
- [3]byte{0, 10, 103}: "OngCorp",
- [3]byte{0, 10, 104}: "Solarflare Communications Inc",
- [3]byte{0, 10, 105}: "SUNNY bell Technology Co., Ltd.",
- [3]byte{0, 10, 106}: "SVM Microwaves s.r.o.",
- [3]byte{0, 10, 107}: "Tadiran Telecom Business Systems LTD",
- [3]byte{0, 10, 108}: "Walchem Corporation",
- [3]byte{0, 10, 109}: "EKS Elektronikservice GmbH",
- [3]byte{0, 10, 110}: "Harmonic, Inc",
- [3]byte{0, 10, 111}: "ZyFLEX Technologies Inc",
- [3]byte{0, 10, 112}: "MPLS Forum",
- [3]byte{0, 10, 113}: "Avrio Technologies, Inc",
- [3]byte{0, 10, 114}: "STEC, INC.",
- [3]byte{0, 10, 115}: "Scientific Atlanta",
- [3]byte{0, 10, 116}: "Manticom Networks Inc.",
- [3]byte{0, 10, 117}: "Caterpillar, Inc",
- [3]byte{0, 10, 118}: "Beida Jade Bird Huaguang Technology Co.,Ltd",
- [3]byte{0, 10, 119}: "Bluewire Technologies LLC",
- [3]byte{0, 10, 120}: "OLITEC",
- [3]byte{0, 10, 121}: "corega K.K",
- [3]byte{0, 10, 122}: "Kyoritsu Electric Co., Ltd.",
- [3]byte{0, 10, 123}: "Cornelius Consult",
- [3]byte{0, 10, 124}: "Tecton Ltd",
- [3]byte{0, 10, 125}: "Valo, Inc.",
- [3]byte{0, 10, 126}: "The Advantage Group",
- [3]byte{0, 10, 127}: "Teradon Industries, Inc",
- [3]byte{0, 10, 128}: "Telkonet Inc.",
- [3]byte{0, 10, 129}: "TEIMA Audiotex S.L.",
- [3]byte{0, 10, 130}: "TATSUTA SYSTEM ELECTRONICS CO.,LTD.",
- [3]byte{0, 10, 131}: "SALTO SYSTEMS S.L.",
- [3]byte{0, 10, 132}: "Rainsun Enterprise Co., Ltd.",
- [3]byte{0, 10, 133}: "PLAT'C2,Inc",
- [3]byte{0, 10, 134}: "Lenze",
- [3]byte{0, 10, 135}: "Integrated Micromachines Inc.",
- [3]byte{0, 10, 136}: "InCypher S.A.",
- [3]byte{0, 10, 137}: "Creval Systems, Inc.",
- [3]byte{0, 10, 138}: "Cisco Systems, Inc",
- [3]byte{0, 10, 139}: "Cisco Systems, Inc",
- [3]byte{0, 10, 140}: "Guardware Systems Ltd.",
- [3]byte{0, 10, 141}: "EUROTHERM LIMITED",
- [3]byte{0, 10, 142}: "Invacom Ltd",
- [3]byte{0, 10, 143}: "Aska International Inc.",
- [3]byte{0, 10, 144}: "Bayside Interactive, Inc.",
- [3]byte{0, 10, 145}: "HemoCue AB",
- [3]byte{0, 10, 146}: "Presonus Corporation",
- [3]byte{0, 10, 147}: "W2 Networks, Inc.",
- [3]byte{0, 10, 148}: "ShangHai cellink CO., LTD",
- [3]byte{0, 10, 149}: "Apple, Inc.",
- [3]byte{0, 10, 150}: "MEWTEL TECHNOLOGY INC.",
- [3]byte{0, 10, 151}: "SONICblue, Inc.",
- [3]byte{0, 10, 152}: "M+F Gwinner GmbH & Co",
- [3]byte{0, 10, 153}: "Calamp Wireless Networks Inc",
- [3]byte{0, 10, 154}: "Aiptek International Inc",
- [3]byte{0, 10, 155}: "TB Group Inc",
- [3]byte{0, 10, 156}: "Server Technology, Inc.",
- [3]byte{0, 10, 157}: "King Young Technology Co. Ltd.",
- [3]byte{0, 10, 158}: "BroadWeb Corportation",
- [3]byte{0, 10, 159}: "Pannaway Technologies, Inc.",
- [3]byte{0, 10, 160}: "Cedar Point Communications",
- [3]byte{0, 10, 161}: "V V S Limited",
- [3]byte{0, 10, 162}: "SYSTEK INC.",
- [3]byte{0, 10, 163}: "SHIMAFUJI ELECTRIC CO.,LTD.",
- [3]byte{0, 10, 164}: "SHANGHAI SURVEILLANCE TECHNOLOGY CO,LTD",
- [3]byte{0, 10, 165}: "MAXLINK INDUSTRIES LIMITED",
- [3]byte{0, 10, 166}: "Hochiki Corporation",
- [3]byte{0, 10, 167}: "FEI Electron Optics",
- [3]byte{0, 10, 168}: "ePipe Pty. Ltd.",
- [3]byte{0, 10, 169}: "Brooks Automation GmbH",
- [3]byte{0, 10, 170}: "AltiGen Communications Inc.",
- [3]byte{0, 10, 171}: "Toyota Technical Development Corporation",
- [3]byte{0, 10, 172}: "TerraTec Electronic GmbH",
- [3]byte{0, 10, 173}: "Stargames Corporation",
- [3]byte{0, 10, 174}: "Rosemount Process Analytical",
- [3]byte{0, 10, 175}: "Pipal Systems",
- [3]byte{0, 10, 176}: "LOYTEC electronics GmbH",
- [3]byte{0, 10, 177}: "GENETEC Corporation",
- [3]byte{0, 10, 178}: "Fresnel Wireless Systems",
- [3]byte{0, 10, 179}: "Fa. GIRA",
- [3]byte{0, 10, 180}: "ETIC Telecommunications",
- [3]byte{0, 10, 181}: "Digital Electronic Network",
- [3]byte{0, 10, 182}: "COMPUNETIX, INC",
- [3]byte{0, 10, 183}: "Cisco Systems, Inc",
- [3]byte{0, 10, 184}: "Cisco Systems, Inc",
- [3]byte{0, 10, 185}: "Astera Technologies Corp.",
- [3]byte{0, 10, 186}: "Arcon Technology Limited",
- [3]byte{0, 10, 187}: "Taiwan Secom Co,. Ltd",
- [3]byte{0, 10, 188}: "Seabridge Ltd.",
- [3]byte{0, 10, 189}: "Rupprecht & Patashnick Co.",
- [3]byte{0, 10, 190}: "OPNET Technologies CO., LTD.",
- [3]byte{0, 10, 191}: "HIROTA SS",
- [3]byte{0, 10, 192}: "Fuyoh Video Industry CO., LTD.",
- [3]byte{0, 10, 193}: "Futuretel",
- [3]byte{0, 10, 194}: "Wuhan FiberHome Digital Technology Co.,Ltd.",
- [3]byte{0, 10, 195}: "eM Technics Co., Ltd.",
- [3]byte{0, 10, 196}: "Daewoo Teletech Co., Ltd",
- [3]byte{0, 10, 197}: "Color Kinetics",
- [3]byte{0, 10, 198}: "Overture Networks.",
- [3]byte{0, 10, 199}: "Unication Group",
- [3]byte{0, 10, 200}: "ZPSYS CO.,LTD. (Planning&Management)",
- [3]byte{0, 10, 201}: "Zambeel Inc",
- [3]byte{0, 10, 202}: "YOKOYAMA SHOKAI CO.,Ltd.",
- [3]byte{0, 10, 203}: "XPAK MSA Group",
- [3]byte{0, 10, 204}: "Winnow Networks, Inc.",
- [3]byte{0, 10, 205}: "Sunrich Technology Limited",
- [3]byte{0, 10, 206}: "RADIANTECH, INC.",
- [3]byte{0, 10, 207}: "PROVIDEO Multimedia Co. Ltd.",
- [3]byte{0, 10, 208}: "Niigata Develoment Center, F.I.T. Co., Ltd.",
- [3]byte{0, 10, 209}: "MWS",
- [3]byte{0, 10, 210}: "JEPICO Corporation",
- [3]byte{0, 10, 211}: "INITECH Co., Ltd",
- [3]byte{0, 10, 212}: "CoreBell Systems Inc.",
- [3]byte{0, 10, 213}: "Brainchild Electronic Co., Ltd.",
- [3]byte{0, 10, 214}: "BeamReach Networks",
- [3]byte{0, 10, 215}: "Origin ELECTRIC CO.,LTD.",
- [3]byte{0, 10, 216}: "IPCserv Technology Corp.",
- [3]byte{0, 10, 217}: "Sony Mobile Communications AB",
- [3]byte{0, 10, 218}: "Vindicator Technologies",
- [3]byte{0, 10, 219}: "SkyPilot Network, Inc",
- [3]byte{0, 10, 220}: "RuggedCom Inc.",
- [3]byte{0, 10, 221}: "Allworx Corp.",
- [3]byte{0, 10, 222}: "Happy Communication Co., Ltd.",
- [3]byte{0, 10, 223}: "Gennum Corporation",
- [3]byte{0, 10, 224}: "Fujitsu Softek",
- [3]byte{0, 10, 225}: "EG Technology",
- [3]byte{0, 10, 226}: "Binatone Electronics International, Ltd",
- [3]byte{0, 10, 227}: "YANG MEI TECHNOLOGY CO., LTD",
- [3]byte{0, 10, 228}: "Wistron Corporation",
- [3]byte{0, 10, 229}: "ScottCare Corporation",
- [3]byte{0, 10, 230}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 10, 231}: "ELIOP S.A.",
- [3]byte{0, 10, 232}: "Cathay Roxus Information Technology Co. LTD",
- [3]byte{0, 10, 233}: "AirVast Technology Inc.",
- [3]byte{0, 10, 234}: "ADAM ELEKTRONIK LTD. ŞTI",
- [3]byte{0, 10, 235}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{0, 10, 236}: "Koatsu Gas Kogyo Co., Ltd.",
- [3]byte{0, 10, 237}: "HARTING Electronics GmbH",
- [3]byte{0, 10, 238}: "GCD Hard- & Software GmbH",
- [3]byte{0, 10, 239}: "OTRUM ASA",
- [3]byte{0, 10, 240}: "SHIN-OH ELECTRONICS CO., LTD. R&D",
- [3]byte{0, 10, 241}: "Clarity Design, Inc.",
- [3]byte{0, 10, 242}: "NeoAxiom Corp.",
- [3]byte{0, 10, 243}: "Cisco Systems, Inc",
- [3]byte{0, 10, 244}: "Cisco Systems, Inc",
- [3]byte{0, 10, 245}: "Airgo Networks, Inc.",
- [3]byte{0, 10, 246}: "Emerson Climate Technologies Retail Solutions, Inc.",
- [3]byte{0, 10, 247}: "Broadcom",
- [3]byte{0, 10, 248}: "American Telecare Inc.",
- [3]byte{0, 10, 249}: "HiConnect, Inc.",
- [3]byte{0, 10, 250}: "Traverse Technologies Australia",
- [3]byte{0, 10, 251}: "Ambri Limited",
- [3]byte{0, 10, 252}: "Core Tec Communications, LLC",
- [3]byte{0, 10, 253}: "Kentec Electronics",
- [3]byte{0, 10, 254}: "NovaPal Ltd",
- [3]byte{0, 10, 255}: "Kilchherr Elektronik AG",
- [3]byte{0, 11, 0}: "FUJIAN START COMPUTER EQUIPMENT CO.,LTD",
- [3]byte{0, 11, 1}: "DAIICHI ELECTRONICS CO., LTD.",
- [3]byte{0, 11, 2}: "Dallmeier electronic",
- [3]byte{0, 11, 3}: "Taekwang Industrial Co., Ltd",
- [3]byte{0, 11, 4}: "Volktek Corporation",
- [3]byte{0, 11, 5}: "Pacific Broadband Networks",
- [3]byte{0, 11, 6}: "ARRIS Group, Inc.",
- [3]byte{0, 11, 7}: "Voxpath Networks",
- [3]byte{0, 11, 8}: "Pillar Data Systems",
- [3]byte{0, 11, 9}: "Ifoundry Systems Singapore",
- [3]byte{0, 11, 10}: "dBm Optics",
- [3]byte{0, 11, 11}: "Corrent Corporation",
- [3]byte{0, 11, 12}: "Agile Systems Inc.",
- [3]byte{0, 11, 13}: "Air2U, Inc.",
- [3]byte{0, 11, 14}: "Trapeze Networks",
- [3]byte{0, 11, 15}: "Bosch Rexroth",
- [3]byte{0, 11, 16}: "11wave Technonlogy Co.,Ltd",
- [3]byte{0, 11, 17}: "HIMEJI ABC TRADING CO.,LTD.",
- [3]byte{0, 11, 18}: "NURI Telecom Co., Ltd.",
- [3]byte{0, 11, 19}: "ZETRON INC",
- [3]byte{0, 11, 20}: "ViewSonic Corporation",
- [3]byte{0, 11, 21}: "Platypus Technology",
- [3]byte{0, 11, 22}: "Communication Machinery Corporation",
- [3]byte{0, 11, 23}: "MKS Instruments",
- [3]byte{0, 11, 24}: "Private",
- [3]byte{0, 11, 25}: "Vernier Networks, Inc.",
- [3]byte{0, 11, 26}: "Industrial Defender, Inc.",
- [3]byte{0, 11, 27}: "Systronix, Inc.",
- [3]byte{0, 11, 28}: "SIBCO bv",
- [3]byte{0, 11, 29}: "LayerZero Power Systems, Inc.",
- [3]byte{0, 11, 30}: "KAPPA opto-electronics GmbH",
- [3]byte{0, 11, 31}: "I CON Computer Co.",
- [3]byte{0, 11, 32}: "Hirata corporation",
- [3]byte{0, 11, 33}: "G-Star Communications Inc.",
- [3]byte{0, 11, 34}: "Environmental Systems and Services",
- [3]byte{0, 11, 35}: "Siemens Subscriber Networks",
- [3]byte{0, 11, 36}: "AirLogic",
- [3]byte{0, 11, 37}: "Aeluros",
- [3]byte{0, 11, 38}: "Wetek Corporation",
- [3]byte{0, 11, 39}: "Scion Corporation",
- [3]byte{0, 11, 40}: "Quatech Inc.",
- [3]byte{0, 11, 41}: "LS(LG) Industrial Systems co.,Ltd",
- [3]byte{0, 11, 42}: "HOWTEL Co., Ltd.",
- [3]byte{0, 11, 43}: "HOSTNET CORPORATION",
- [3]byte{0, 11, 44}: "Eiki Industrial Co. Ltd.",
- [3]byte{0, 11, 45}: "Danfoss Inc.",
- [3]byte{0, 11, 46}: "Cal-Comp Electronics & Communications Company Ltd.",
- [3]byte{0, 11, 47}: "bplan GmbH",
- [3]byte{0, 11, 48}: "Beijing Gongye Science & Technology Co.,Ltd",
- [3]byte{0, 11, 49}: "Yantai ZhiYang Scientific and technology industry CO., LTD",
- [3]byte{0, 11, 50}: "VORMETRIC, INC.",
- [3]byte{0, 11, 51}: "Vivato Technologies",
- [3]byte{0, 11, 52}: "ShangHai Broadband Technologies CO.LTD",
- [3]byte{0, 11, 53}: "Quad Bit System co., Ltd.",
- [3]byte{0, 11, 54}: "Productivity Systems, Inc.",
- [3]byte{0, 11, 55}: "MANUFACTURE DES MONTRES ROLEX SA",
- [3]byte{0, 11, 56}: "Knürr GmbH",
- [3]byte{0, 11, 57}: "Keisoku Giken Co.,Ltd.",
- [3]byte{0, 11, 58}: "QuStream Corporation",
- [3]byte{0, 11, 59}: "devolo AG",
- [3]byte{0, 11, 60}: "Cygnal Integrated Products, Inc.",
- [3]byte{0, 11, 61}: "CONTAL OK Ltd.",
- [3]byte{0, 11, 62}: "BittWare, Inc",
- [3]byte{0, 11, 63}: "Anthology Solutions Inc.",
- [3]byte{0, 11, 64}: "Oclaro",
- [3]byte{0, 11, 65}: "Ing. Büro Dr. Beutlhauser",
- [3]byte{0, 11, 66}: "commax Co., Ltd.",
- [3]byte{0, 11, 67}: "Microscan Systems, Inc.",
- [3]byte{0, 11, 68}: "Concord IDea Corp.",
- [3]byte{0, 11, 69}: "Cisco Systems, Inc",
- [3]byte{0, 11, 70}: "Cisco Systems, Inc",
- [3]byte{0, 11, 71}: "Advanced Energy",
- [3]byte{0, 11, 72}: "sofrel",
- [3]byte{0, 11, 73}: "RF-Link System Inc.",
- [3]byte{0, 11, 74}: "Visimetrics (UK) Ltd",
- [3]byte{0, 11, 75}: "VISIOWAVE SA",
- [3]byte{0, 11, 76}: "Clarion (M) Sdn Bhd",
- [3]byte{0, 11, 77}: "Emuzed",
- [3]byte{0, 11, 78}: "VertexRSI, General Dynamics SatCOM Technologies, Inc.",
- [3]byte{0, 11, 79}: "Verifone",
- [3]byte{0, 11, 80}: "Oxygnet",
- [3]byte{0, 11, 81}: "Micetek International Inc.",
- [3]byte{0, 11, 82}: "JOYMAX ELECTRONICS CO. LTD.",
- [3]byte{0, 11, 83}: "INITIUM Co., Ltd.",
- [3]byte{0, 11, 84}: "BiTMICRO Networks, Inc.",
- [3]byte{0, 11, 85}: "ADInstruments",
- [3]byte{0, 11, 86}: "Cybernetics",
- [3]byte{0, 11, 87}: "Silicon Laboratories",
- [3]byte{0, 11, 88}: "Astronautics C.A LTD",
- [3]byte{0, 11, 89}: "ScriptPro, LLC",
- [3]byte{0, 11, 90}: "HyperEdge",
- [3]byte{0, 11, 91}: "Rincon Research Corporation",
- [3]byte{0, 11, 92}: "Newtech Co.,Ltd",
- [3]byte{0, 11, 93}: "FUJITSU LIMITED",
- [3]byte{0, 11, 94}: "Audio Engineering Society Inc.",
- [3]byte{0, 11, 95}: "Cisco Systems, Inc",
- [3]byte{0, 11, 96}: "Cisco Systems, Inc",
- [3]byte{0, 11, 97}: "Friedrich Lütze GmbH & Co. KG",
- [3]byte{0, 11, 98}: "ib-mohnen KG",
- [3]byte{0, 11, 99}: "Kaleidescape",
- [3]byte{0, 11, 100}: "Kieback & Peter GmbH & Co KG",
- [3]byte{0, 11, 101}: "Sy.A.C. srl",
- [3]byte{0, 11, 102}: "Teralink Communications",
- [3]byte{0, 11, 103}: "Topview Technology Corporation",
- [3]byte{0, 11, 104}: "Addvalue Communications Pte Ltd",
- [3]byte{0, 11, 105}: "Franke Finland Oy",
- [3]byte{0, 11, 106}: "Asiarock Technology Limited",
- [3]byte{0, 11, 107}: "Wistron Neweb Corporation",
- [3]byte{0, 11, 108}: "Sychip Inc.",
- [3]byte{0, 11, 109}: "SOLECTRON JAPAN NAKANIIDA",
- [3]byte{0, 11, 110}: "Neff Instrument Corp.",
- [3]byte{0, 11, 111}: "Media Streaming Networks Inc",
- [3]byte{0, 11, 112}: "Load Technology, Inc.",
- [3]byte{0, 11, 113}: "Litchfield Communications Inc.",
- [3]byte{0, 11, 114}: "Lawo AG",
- [3]byte{0, 11, 115}: "Kodeos Communications",
- [3]byte{0, 11, 116}: "Kingwave Technology Co., Ltd.",
- [3]byte{0, 11, 117}: "Iosoft Ltd.",
- [3]byte{0, 11, 118}: "ET&T Technology Co. Ltd.",
- [3]byte{0, 11, 119}: "Cogent Systems, Inc.",
- [3]byte{0, 11, 120}: "TAIFATECH INC.",
- [3]byte{0, 11, 121}: "X-COM, Inc.",
- [3]byte{0, 11, 122}: "L-3 Linkabit",
- [3]byte{0, 11, 123}: "Test-Um Inc.",
- [3]byte{0, 11, 124}: "Telex Communications",
- [3]byte{0, 11, 125}: "SOLOMON EXTREME INTERNATIONAL LTD.",
- [3]byte{0, 11, 126}: "SAGINOMIYA Seisakusho Inc.",
- [3]byte{0, 11, 127}: "Align Engineering LLC",
- [3]byte{0, 11, 128}: "Lycium Networks",
- [3]byte{0, 11, 129}: "Kaparel Corporation",
- [3]byte{0, 11, 130}: "Grandstream Networks, Inc.",
- [3]byte{0, 11, 131}: "DATAWATT B.V.",
- [3]byte{0, 11, 132}: "BODET",
- [3]byte{0, 11, 133}: "Cisco Systems, Inc",
- [3]byte{0, 11, 134}: "Aruba Networks",
- [3]byte{0, 11, 135}: "American Reliance Inc.",
- [3]byte{0, 11, 136}: "Vidisco ltd.",
- [3]byte{0, 11, 137}: "Top Global Technology, Ltd.",
- [3]byte{0, 11, 138}: "MITEQ Inc.",
- [3]byte{0, 11, 139}: "KERAJET, S.A.",
- [3]byte{0, 11, 140}: "Flextronics",
- [3]byte{0, 11, 141}: "Avvio Networks",
- [3]byte{0, 11, 142}: "Ascent Corporation",
- [3]byte{0, 11, 143}: "AKITA ELECTRONICS SYSTEMS CO.,LTD.",
- [3]byte{0, 11, 144}: "ADVA Optical Networking Ltd.",
- [3]byte{0, 11, 145}: "Aglaia Gesellschaft für Bildverarbeitung und Kommunikation mbH",
- [3]byte{0, 11, 146}: "Ascom Danmark A/S",
- [3]byte{0, 11, 147}: "Ritter Elektronik",
- [3]byte{0, 11, 148}: "Digital Monitoring Products, Inc.",
- [3]byte{0, 11, 149}: "eBet Gaming Systems Pty Ltd",
- [3]byte{0, 11, 150}: "Innotrac Diagnostics Oy",
- [3]byte{0, 11, 151}: "Matsushita Electric Industrial Co.,Ltd.",
- [3]byte{0, 11, 152}: "NiceTechVision",
- [3]byte{0, 11, 153}: "SensAble Technologies, Inc.",
- [3]byte{0, 11, 154}: "Shanghai Ulink Telecom Equipment Co. Ltd.",
- [3]byte{0, 11, 155}: "Sirius System Co, Ltd.",
- [3]byte{0, 11, 156}: "TriBeam Technologies, Inc.",
- [3]byte{0, 11, 157}: "TwinMOS Technologies Inc.",
- [3]byte{0, 11, 158}: "Yasing Technology Corp.",
- [3]byte{0, 11, 159}: "Neue ELSA GmbH",
- [3]byte{0, 11, 160}: "T&L Information Inc.",
- [3]byte{0, 11, 161}: "Fujikura Solutions Ltd.",
- [3]byte{0, 11, 162}: "Sumitomo Electric Industries,Ltd",
- [3]byte{0, 11, 163}: "Siemens AG, I&S",
- [3]byte{0, 11, 164}: "Shiron Satellite Communications Ltd. (1996)",
- [3]byte{0, 11, 165}: "Quasar Cipta Mandiri, PT",
- [3]byte{0, 11, 166}: "Miyakawa Electric Works Ltd.",
- [3]byte{0, 11, 167}: "Maranti Networks",
- [3]byte{0, 11, 168}: "HANBACK ELECTRONICS CO., LTD.",
- [3]byte{0, 11, 169}: "CloudShield Technologies, Inc.",
- [3]byte{0, 11, 170}: "Aiphone co.,Ltd",
- [3]byte{0, 11, 171}: "Advantech Technology (CHINA) Co., Ltd.",
- [3]byte{0, 11, 172}: "3Com Ltd",
- [3]byte{0, 11, 173}: "PC-PoS Inc.",
- [3]byte{0, 11, 174}: "Vitals System Inc.",
- [3]byte{0, 11, 175}: "WOOJU COMMUNICATIONS Co,.Ltd",
- [3]byte{0, 11, 176}: "Sysnet Telematica srl",
- [3]byte{0, 11, 177}: "Super Star Technology Co., Ltd.",
- [3]byte{0, 11, 178}: "SMALLBIG TECHNOLOGY",
- [3]byte{0, 11, 179}: "RiT technologies Ltd.",
- [3]byte{0, 11, 180}: "RDC Semiconductor Inc.,",
- [3]byte{0, 11, 181}: "nStor Technologies, Inc.",
- [3]byte{0, 11, 182}: "Metalligence Technology Corp.",
- [3]byte{0, 11, 183}: "Micro Systems Co.,Ltd.",
- [3]byte{0, 11, 184}: "Kihoku Electronic Co.",
- [3]byte{0, 11, 185}: "Imsys AB",
- [3]byte{0, 11, 186}: "Harmonic, Inc",
- [3]byte{0, 11, 187}: "Etin Systems Co., Ltd",
- [3]byte{0, 11, 188}: "En Garde Systems, Inc.",
- [3]byte{0, 11, 189}: "Connexionz Limited",
- [3]byte{0, 11, 190}: "Cisco Systems, Inc",
- [3]byte{0, 11, 191}: "Cisco Systems, Inc",
- [3]byte{0, 11, 192}: "China IWNComm Co., Ltd.",
- [3]byte{0, 11, 193}: "Bay Microsystems, Inc.",
- [3]byte{0, 11, 194}: "Corinex Communication Corp.",
- [3]byte{0, 11, 195}: "Multiplex, Inc.",
- [3]byte{0, 11, 196}: "BIOTRONIK GmbH & Co",
- [3]byte{0, 11, 197}: "SMC Networks, Inc.",
- [3]byte{0, 11, 198}: "ISAC, Inc.",
- [3]byte{0, 11, 199}: "ICET S.p.A.",
- [3]byte{0, 11, 200}: "AirFlow Networks",
- [3]byte{0, 11, 201}: "Electroline Equipment",
- [3]byte{0, 11, 202}: "DATAVAN TC",
- [3]byte{0, 11, 203}: "Fagor Automation , S. Coop",
- [3]byte{0, 11, 204}: "JUSAN, S.A.",
- [3]byte{0, 11, 205}: "Hewlett Packard",
- [3]byte{0, 11, 206}: "Free2move AB",
- [3]byte{0, 11, 207}: "AGFA NDT INC.",
- [3]byte{0, 11, 208}: "XiMeta Technology Americas Inc.",
- [3]byte{0, 11, 209}: "Aeronix, Inc.",
- [3]byte{0, 11, 210}: "Remopro Technology Inc.",
- [3]byte{0, 11, 211}: "cd3o",
- [3]byte{0, 11, 212}: "Beijing Wise Technology & Science Development Co.Ltd",
- [3]byte{0, 11, 213}: "Nvergence, Inc.",
- [3]byte{0, 11, 214}: "Paxton Access Ltd",
- [3]byte{0, 11, 215}: "DORMA Time + Access GmbH",
- [3]byte{0, 11, 216}: "Industrial Scientific Corp.",
- [3]byte{0, 11, 217}: "General Hydrogen",
- [3]byte{0, 11, 218}: "EyeCross Co.,Inc.",
- [3]byte{0, 11, 219}: "Dell Inc.",
- [3]byte{0, 11, 220}: "AKCP",
- [3]byte{0, 11, 221}: "TOHOKU RICOH Co., LTD.",
- [3]byte{0, 11, 222}: "TELDIX GmbH",
- [3]byte{0, 11, 223}: "Shenzhen RouterD Networks Limited",
- [3]byte{0, 11, 224}: "SercoNet Ltd.",
- [3]byte{0, 11, 225}: "Nokia NET Product Operations",
- [3]byte{0, 11, 226}: "Lumenera Corporation",
- [3]byte{0, 11, 227}: "Key Stream Co., Ltd.",
- [3]byte{0, 11, 228}: "Hosiden Corporation",
- [3]byte{0, 11, 229}: "HIMS International Corporation",
- [3]byte{0, 11, 230}: "Datel Electronics",
- [3]byte{0, 11, 231}: "COMFLUX TECHNOLOGY INC.",
- [3]byte{0, 11, 232}: "AOIP",
- [3]byte{0, 11, 233}: "Actel Corporation",
- [3]byte{0, 11, 234}: "Zultys Technologies",
- [3]byte{0, 11, 235}: "Systegra AG",
- [3]byte{0, 11, 236}: "NIPPON ELECTRIC INSTRUMENT, INC.",
- [3]byte{0, 11, 237}: "ELM Inc.",
- [3]byte{0, 11, 238}: "inc.jet, Incorporated",
- [3]byte{0, 11, 239}: "Code Corporation",
- [3]byte{0, 11, 240}: "MoTEX Products Co., Ltd.",
- [3]byte{0, 11, 241}: "LAP Laser Applikations",
- [3]byte{0, 11, 242}: "Chih-Kan Technology Co., Ltd.",
- [3]byte{0, 11, 243}: "BAE SYSTEMS",
- [3]byte{0, 11, 244}: "Private",
- [3]byte{0, 11, 245}: "Shanghai Sibo Telecom Technology Co.,Ltd",
- [3]byte{0, 11, 246}: "Nitgen Co., Ltd",
- [3]byte{0, 11, 247}: "NIDEK CO.,LTD",
- [3]byte{0, 11, 248}: "Infinera",
- [3]byte{0, 11, 249}: "Gemstone Communications, Inc.",
- [3]byte{0, 11, 250}: "EXEMYS SRL",
- [3]byte{0, 11, 251}: "D-NET International Corporation",
- [3]byte{0, 11, 252}: "Cisco Systems, Inc",
- [3]byte{0, 11, 253}: "Cisco Systems, Inc",
- [3]byte{0, 11, 254}: "CASTEL Broadband Limited",
- [3]byte{0, 11, 255}: "Berkeley Camera Engineering",
- [3]byte{0, 12, 0}: "BEB Industrie-Elektronik AG",
- [3]byte{0, 12, 1}: "Abatron AG",
- [3]byte{0, 12, 2}: "ABB Oy",
- [3]byte{0, 12, 3}: "HDMI Licensing, LLC",
- [3]byte{0, 12, 4}: "Tecnova",
- [3]byte{0, 12, 5}: "RPA Reserch Co., Ltd.",
- [3]byte{0, 12, 6}: "Nixvue Systems Pte Ltd",
- [3]byte{0, 12, 7}: "Iftest AG",
- [3]byte{0, 12, 8}: "HUMEX Technologies Corp.",
- [3]byte{0, 12, 9}: "Hitachi IE Systems Co., Ltd",
- [3]byte{0, 12, 10}: "Guangdong Province Electronic Technology Research Institute",
- [3]byte{0, 12, 11}: "Broadbus Technologies",
- [3]byte{0, 12, 12}: "APPRO TECHNOLOGY INC.",
- [3]byte{0, 12, 13}: "Communications & Power Industries / Satcom Division",
- [3]byte{0, 12, 14}: "XtremeSpectrum, Inc.",
- [3]byte{0, 12, 15}: "Techno-One Co., Ltd",
- [3]byte{0, 12, 16}: "PNI Corporation",
- [3]byte{0, 12, 17}: "NIPPON DEMPA CO.,LTD.",
- [3]byte{0, 12, 18}: "Micro-Optronic-Messtechnik GmbH",
- [3]byte{0, 12, 19}: "MediaQ",
- [3]byte{0, 12, 20}: "Diagnostic Instruments, Inc.",
- [3]byte{0, 12, 21}: "CyberPower Systems, Inc.",
- [3]byte{0, 12, 22}: "Concorde Microsystems Inc.",
- [3]byte{0, 12, 23}: "AJA Video Systems Inc",
- [3]byte{0, 12, 24}: "Zenisu Keisoku Inc.",
- [3]byte{0, 12, 25}: "Telio Communications GmbH",
- [3]byte{0, 12, 26}: "Quest Technical Solutions Inc.",
- [3]byte{0, 12, 27}: "ORACOM Co, Ltd.",
- [3]byte{0, 12, 28}: "MicroWeb Co., Ltd.",
- [3]byte{0, 12, 29}: "Mettler & Fuchs AG",
- [3]byte{0, 12, 30}: "Global Cache",
- [3]byte{0, 12, 31}: "Glimmerglass Networks",
- [3]byte{0, 12, 32}: "Fi WIn, Inc.",
- [3]byte{0, 12, 33}: "Faculty of Science and Technology, Keio University",
- [3]byte{0, 12, 34}: "Double D Electronics Ltd",
- [3]byte{0, 12, 35}: "Beijing Lanchuan Tech. Co., Ltd.",
- [3]byte{0, 12, 36}: "ANATOR",
- [3]byte{0, 12, 37}: "Allied Telesis Labs, Inc.",
- [3]byte{0, 12, 38}: "Weintek Labs. Inc.",
- [3]byte{0, 12, 39}: "Sammy Corporation",
- [3]byte{0, 12, 40}: "RIFATRON",
- [3]byte{0, 12, 41}: "VMware, Inc.",
- [3]byte{0, 12, 42}: "OCTTEL Communication Co., Ltd.",
- [3]byte{0, 12, 43}: "ELIAS Technology, Inc.",
- [3]byte{0, 12, 44}: "Enwiser Inc.",
- [3]byte{0, 12, 45}: "FullWave Technology Co., Ltd.",
- [3]byte{0, 12, 46}: "Openet information technology(shenzhen) Co., Ltd.",
- [3]byte{0, 12, 47}: "SeorimTechnology Co.,Ltd.",
- [3]byte{0, 12, 48}: "Cisco Systems, Inc",
- [3]byte{0, 12, 49}: "Cisco Systems, Inc",
- [3]byte{0, 12, 50}: "Avionic Design Development GmbH",
- [3]byte{0, 12, 51}: "Compucase Enterprise Co. Ltd.",
- [3]byte{0, 12, 52}: "Vixen Co., Ltd.",
- [3]byte{0, 12, 53}: "KaVo Dental GmbH & Co. KG",
- [3]byte{0, 12, 54}: "SHARP TAKAYA ELECTRONICS INDUSTRY CO.,LTD.",
- [3]byte{0, 12, 55}: "Geomation, Inc.",
- [3]byte{0, 12, 56}: "TelcoBridges Inc.",
- [3]byte{0, 12, 57}: "Sentinel Wireless Inc.",
- [3]byte{0, 12, 58}: "Oxance",
- [3]byte{0, 12, 59}: "Orion Electric Co., Ltd.",
- [3]byte{0, 12, 60}: "MediaChorus, Inc.",
- [3]byte{0, 12, 61}: "Glsystech Co., Ltd.",
- [3]byte{0, 12, 62}: "Crest Audio",
- [3]byte{0, 12, 63}: "Cogent Defence & Security Networks,",
- [3]byte{0, 12, 64}: "Altech Controls",
- [3]byte{0, 12, 65}: "Cisco-Linksys, LLC",
- [3]byte{0, 12, 66}: "Routerboard.com",
- [3]byte{0, 12, 67}: "Ralink Technology, Corp.",
- [3]byte{0, 12, 68}: "Automated Interfaces, Inc.",
- [3]byte{0, 12, 69}: "Animation Technologies Inc.",
- [3]byte{0, 12, 70}: "Allied Telesyn Inc.",
- [3]byte{0, 12, 71}: "SK Teletech(R&D Planning Team)",
- [3]byte{0, 12, 72}: "QoStek Corporation",
- [3]byte{0, 12, 73}: "Dangaard Telecom Denmark A/S",
- [3]byte{0, 12, 74}: "Cygnus Microsystems (P) Limited",
- [3]byte{0, 12, 75}: "Cheops Elektronik",
- [3]byte{0, 12, 76}: "Arcor AG&Co.",
- [3]byte{0, 12, 77}: "Curtiss-Wright Controls Avionics & Electronics",
- [3]byte{0, 12, 78}: "Winbest Technology CO,LT",
- [3]byte{0, 12, 79}: "UDTech Japan Corporation",
- [3]byte{0, 12, 80}: "Seagate Technology",
- [3]byte{0, 12, 81}: "Scientific Technologies Inc.",
- [3]byte{0, 12, 82}: "Roll Systems Inc.",
- [3]byte{0, 12, 83}: "Private",
- [3]byte{0, 12, 84}: "Pedestal Networks, Inc",
- [3]byte{0, 12, 85}: "Microlink Communications Inc.",
- [3]byte{0, 12, 86}: "Megatel Computer (1986) Corp.",
- [3]byte{0, 12, 87}: "MACKIE Engineering Services Belgium BVBA",
- [3]byte{0, 12, 88}: "M&S Systems",
- [3]byte{0, 12, 89}: "Indyme Electronics, Inc.",
- [3]byte{0, 12, 90}: "IBSmm Embedded Electronics Consulting",
- [3]byte{0, 12, 91}: "HANWANG TECHNOLOGY CO.,LTD",
- [3]byte{0, 12, 92}: "GTN Systems B.V.",
- [3]byte{0, 12, 93}: "CHIC TECHNOLOGY (CHINA) CORP.",
- [3]byte{0, 12, 94}: "Calypso Medical",
- [3]byte{0, 12, 95}: "Avtec, Inc.",
- [3]byte{0, 12, 96}: "ACM Systems",
- [3]byte{0, 12, 97}: "AC Tech corporation DBA Advanced Digital",
- [3]byte{0, 12, 98}: "ABB AB, Cewe-Control",
- [3]byte{0, 12, 99}: "Zenith Electronics Corporation",
- [3]byte{0, 12, 100}: "X2 MSA Group",
- [3]byte{0, 12, 101}: "Sunin Telecom",
- [3]byte{0, 12, 102}: "Pronto Networks Inc",
- [3]byte{0, 12, 103}: "OYO ELECTRIC CO.,LTD",
- [3]byte{0, 12, 104}: "SigmaTel, Inc.",
- [3]byte{0, 12, 105}: "National Radio Astronomy Observatory",
- [3]byte{0, 12, 106}: "MBARI",
- [3]byte{0, 12, 107}: "Kurz Industrie-Elektronik GmbH",
- [3]byte{0, 12, 108}: "Elgato Systems LLC",
- [3]byte{0, 12, 109}: "Edwards Ltd.",
- [3]byte{0, 12, 110}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 12, 111}: "Amtek system co.,LTD.",
- [3]byte{0, 12, 112}: "ACC GmbH",
- [3]byte{0, 12, 113}: "Wybron, Inc",
- [3]byte{0, 12, 114}: "Tempearl Industrial Co., Ltd.",
- [3]byte{0, 12, 115}: "TELSON ELECTRONICS CO., LTD",
- [3]byte{0, 12, 116}: "RIVERTEC CORPORATION",
- [3]byte{0, 12, 117}: "Oriental integrated electronics. LTD",
- [3]byte{0, 12, 118}: "MICRO-STAR INTERNATIONAL CO., LTD.",
- [3]byte{0, 12, 119}: "Life Racing Ltd",
- [3]byte{0, 12, 120}: "In-Tech Electronics Limited",
- [3]byte{0, 12, 121}: "Extel Communications P/L",
- [3]byte{0, 12, 122}: "DaTARIUS Technologies GmbH",
- [3]byte{0, 12, 123}: "ALPHA PROJECT Co.,Ltd.",
- [3]byte{0, 12, 124}: "Internet Information Image Inc.",
- [3]byte{0, 12, 125}: "TEIKOKU ELECTRIC MFG. CO., LTD",
- [3]byte{0, 12, 126}: "Tellium Incorporated",
- [3]byte{0, 12, 127}: "synertronixx GmbH",
- [3]byte{0, 12, 128}: "Opelcomm Inc.",
- [3]byte{0, 12, 129}: "Schneider Electric (Australia)",
- [3]byte{0, 12, 130}: "NETWORK TECHNOLOGIES INC",
- [3]byte{0, 12, 131}: "Logical Solutions",
- [3]byte{0, 12, 132}: "Eazix, Inc.",
- [3]byte{0, 12, 133}: "Cisco Systems, Inc",
- [3]byte{0, 12, 134}: "Cisco Systems, Inc",
- [3]byte{0, 12, 135}: "AMD",
- [3]byte{0, 12, 136}: "Apache Micro Peripherals, Inc.",
- [3]byte{0, 12, 137}: "AC Electric Vehicles, Ltd.",
- [3]byte{0, 12, 138}: "Bose Corporation",
- [3]byte{0, 12, 139}: "Connect Tech Inc",
- [3]byte{0, 12, 140}: "KODICOM CO.,LTD.",
- [3]byte{0, 12, 141}: "MATRIX VISION GmbH",
- [3]byte{0, 12, 142}: "Mentor Engineering Inc",
- [3]byte{0, 12, 143}: "Nergal s.r.l.",
- [3]byte{0, 12, 144}: "Octasic Inc.",
- [3]byte{0, 12, 145}: "Riverhead Networks Inc.",
- [3]byte{0, 12, 146}: "WolfVision Gmbh",
- [3]byte{0, 12, 147}: "Xeline Co., Ltd.",
- [3]byte{0, 12, 148}: "United Electronic Industries, Inc. (EUI)",
- [3]byte{0, 12, 149}: "PrimeNet",
- [3]byte{0, 12, 150}: "OQO, Inc.",
- [3]byte{0, 12, 151}: "NV ADB TTV Technologies SA",
- [3]byte{0, 12, 152}: "LETEK Communications Inc.",
- [3]byte{0, 12, 153}: "HITEL LINK Co.,Ltd",
- [3]byte{0, 12, 154}: "Hitech Electronics Corp.",
- [3]byte{0, 12, 155}: "EE Solutions, Inc",
- [3]byte{0, 12, 156}: "Chongho information & communications",
- [3]byte{0, 12, 157}: "UbeeAirWalk, Inc.",
- [3]byte{0, 12, 158}: "MemoryLink Corp.",
- [3]byte{0, 12, 159}: "NKE Corporation",
- [3]byte{0, 12, 160}: "StorCase Technology, Inc.",
- [3]byte{0, 12, 161}: "SIGMACOM Co., LTD.",
- [3]byte{0, 12, 162}: "Harmonic Video Network",
- [3]byte{0, 12, 163}: "Rancho Technology, Inc.",
- [3]byte{0, 12, 164}: "Prompttec Product Management GmbH",
- [3]byte{0, 12, 165}: "Naman NZ LTd",
- [3]byte{0, 12, 166}: "Mintera Corporation",
- [3]byte{0, 12, 167}: "Metro (Suzhou) Technologies Co., Ltd.",
- [3]byte{0, 12, 168}: "Garuda Networks Corporation",
- [3]byte{0, 12, 169}: "Ebtron Inc.",
- [3]byte{0, 12, 170}: "Cubic Transportation Systems Inc",
- [3]byte{0, 12, 171}: "Commend International GmbH",
- [3]byte{0, 12, 172}: "Citizen Watch Co., Ltd.",
- [3]byte{0, 12, 173}: "BTU International",
- [3]byte{0, 12, 174}: "Ailocom Oy",
- [3]byte{0, 12, 175}: "TRI TERM CO.,LTD.",
- [3]byte{0, 12, 176}: "Star Semiconductor Corporation",
- [3]byte{0, 12, 177}: "Salland Engineering (Europe) BV",
- [3]byte{0, 12, 178}: "UNION co., ltd.",
- [3]byte{0, 12, 179}: "ROUND Co.,Ltd.",
- [3]byte{0, 12, 180}: "AutoCell Laboratories, Inc.",
- [3]byte{0, 12, 181}: "Premier Technolgies, Inc",
- [3]byte{0, 12, 182}: "NANJING SEU MOBILE & INTERNET TECHNOLOGY CO.,LTD",
- [3]byte{0, 12, 183}: "Nanjing Huazhuo Electronics Co., Ltd.",
- [3]byte{0, 12, 184}: "MEDION AG",
- [3]byte{0, 12, 185}: "LEA",
- [3]byte{0, 12, 186}: "Jamex, Inc.",
- [3]byte{0, 12, 187}: "ISKRAEMECO",
- [3]byte{0, 12, 188}: "Iscutum",
- [3]byte{0, 12, 189}: "Interface Masters, Inc",
- [3]byte{0, 12, 190}: "Innominate Security Technologies AG",
- [3]byte{0, 12, 191}: "Holy Stone Ent. Co., Ltd.",
- [3]byte{0, 12, 192}: "Genera Oy",
- [3]byte{0, 12, 193}: "Eaton Corporation",
- [3]byte{0, 12, 194}: "ControlNet (India) Private Limited",
- [3]byte{0, 12, 195}: "BeWAN systems",
- [3]byte{0, 12, 196}: "Tiptel AG",
- [3]byte{0, 12, 197}: "Nextlink Co., Ltd.",
- [3]byte{0, 12, 198}: "Ka-Ro electronics GmbH",
- [3]byte{0, 12, 199}: "Intelligent Computer Solutions Inc.",
- [3]byte{0, 12, 200}: "Xytronix Research & Design, Inc.",
- [3]byte{0, 12, 201}: "ILWOO DATA & TECHNOLOGY CO.,LTD",
- [3]byte{0, 12, 202}: "HGST a Western Digital Company",
- [3]byte{0, 12, 203}: "Design Combus Ltd",
- [3]byte{0, 12, 204}: "Aeroscout Ltd.",
- [3]byte{0, 12, 205}: "IEC - TC57",
- [3]byte{0, 12, 206}: "Cisco Systems, Inc",
- [3]byte{0, 12, 207}: "Cisco Systems, Inc",
- [3]byte{0, 12, 208}: "Symetrix",
- [3]byte{0, 12, 209}: "SFOM Technology Corp.",
- [3]byte{0, 12, 210}: "Schaffner EMV AG",
- [3]byte{0, 12, 211}: "Prettl Elektronik Radeberg GmbH",
- [3]byte{0, 12, 212}: "Positron Public Safety Systems inc.",
- [3]byte{0, 12, 213}: "Passave Inc.",
- [3]byte{0, 12, 214}: "PARTNER TECH",
- [3]byte{0, 12, 215}: "Nallatech Ltd",
- [3]byte{0, 12, 216}: "M. K. Juchheim GmbH & Co",
- [3]byte{0, 12, 217}: "Itcare Co., Ltd",
- [3]byte{0, 12, 218}: "FreeHand Systems, Inc.",
- [3]byte{0, 12, 219}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 12, 220}: "BECS Technology, Inc",
- [3]byte{0, 12, 221}: "AOS technologies AG",
- [3]byte{0, 12, 222}: "ABB STOTZ-KONTAKT GmbH",
- [3]byte{0, 12, 223}: "PULNiX America, Inc",
- [3]byte{0, 12, 224}: "Trek Diagnostics Inc.",
- [3]byte{0, 12, 225}: "The Open Group",
- [3]byte{0, 12, 226}: "Rolls-Royce",
- [3]byte{0, 12, 227}: "Option International N.V.",
- [3]byte{0, 12, 228}: "NeuroCom International, Inc.",
- [3]byte{0, 12, 229}: "ARRIS Group, Inc.",
- [3]byte{0, 12, 230}: "Meru Networks Inc",
- [3]byte{0, 12, 231}: "MediaTek Inc.",
- [3]byte{0, 12, 232}: "GuangZhou AnJuBao Co., Ltd",
- [3]byte{0, 12, 233}: "BLOOMBERG L.P.",
- [3]byte{0, 12, 234}: "aphona Kommunikationssysteme",
- [3]byte{0, 12, 235}: "CNMP Networks, Inc.",
- [3]byte{0, 12, 236}: "Spectracom Corp.",
- [3]byte{0, 12, 237}: "Real Digital Media",
- [3]byte{0, 12, 238}: "jp-embedded",
- [3]byte{0, 12, 239}: "Open Networks Engineering Ltd",
- [3]byte{0, 12, 240}: "M & N GmbH",
- [3]byte{0, 12, 241}: "Intel Corporation",
- [3]byte{0, 12, 242}: "GAMESA Eólica",
- [3]byte{0, 12, 243}: "CALL IMAGE SA",
- [3]byte{0, 12, 244}: "AKATSUKI ELECTRIC MFG.CO.,LTD.",
- [3]byte{0, 12, 245}: "InfoExpress",
- [3]byte{0, 12, 246}: "Sitecom Europe BV",
- [3]byte{0, 12, 247}: "Nortel Networks",
- [3]byte{0, 12, 248}: "Nortel Networks",
- [3]byte{0, 12, 249}: "Xylem Water Solutions",
- [3]byte{0, 12, 250}: "Digital Systems Corp",
- [3]byte{0, 12, 251}: "Korea Network Systems",
- [3]byte{0, 12, 252}: "S2io Technologies Corp",
- [3]byte{0, 12, 253}: "Hyundai ImageQuest Co.,Ltd.",
- [3]byte{0, 12, 254}: "Grand Electronic Co., Ltd",
- [3]byte{0, 12, 255}: "MRO-TEK LIMITED",
- [3]byte{0, 13, 0}: "Seaway Networks Inc.",
- [3]byte{0, 13, 1}: "P&E Microcomputer Systems, Inc.",
- [3]byte{0, 13, 2}: "NEC Platforms, Ltd.",
- [3]byte{0, 13, 3}: "Matrics, Inc.",
- [3]byte{0, 13, 4}: "Foxboro Eckardt Development GmbH",
- [3]byte{0, 13, 5}: "cybernet manufacturing inc.",
- [3]byte{0, 13, 6}: "Compulogic Limited",
- [3]byte{0, 13, 7}: "Calrec Audio Ltd",
- [3]byte{0, 13, 8}: "AboveCable, Inc.",
- [3]byte{0, 13, 9}: "Yuehua(Zhuhai) Electronic CO. LTD",
- [3]byte{0, 13, 10}: "Projectiondesign as",
- [3]byte{0, 13, 11}: "BUFFALO.INC",
- [3]byte{0, 13, 12}: "MDI Security Systems",
- [3]byte{0, 13, 13}: "ITSupported, LLC",
- [3]byte{0, 13, 14}: "Inqnet Systems, Inc.",
- [3]byte{0, 13, 15}: "Finlux Ltd",
- [3]byte{0, 13, 16}: "Embedtronics Oy",
- [3]byte{0, 13, 17}: "DENTSPLY - Gendex",
- [3]byte{0, 13, 18}: "AXELL Corporation",
- [3]byte{0, 13, 19}: "Wilhelm Rutenbeck GmbH&Co.KG",
- [3]byte{0, 13, 20}: "Vtech Innovation LP dba Advanced American Telephones",
- [3]byte{0, 13, 21}: "Voipac s.r.o.",
- [3]byte{0, 13, 22}: "UHS Systems Pty Ltd",
- [3]byte{0, 13, 23}: "Turbo Networks Co.Ltd",
- [3]byte{0, 13, 24}: "Mega-Trend Electronics CO., LTD.",
- [3]byte{0, 13, 25}: "ROBE Show lighting",
- [3]byte{0, 13, 26}: "Mustek System Inc.",
- [3]byte{0, 13, 27}: "Kyoto Electronics Manufacturing Co., Ltd.",
- [3]byte{0, 13, 28}: "Amesys Defense",
- [3]byte{0, 13, 29}: "HIGH-TEK HARNESS ENT. CO., LTD.",
- [3]byte{0, 13, 30}: "Control Techniques",
- [3]byte{0, 13, 31}: "AV Digital",
- [3]byte{0, 13, 32}: "ASAHIKASEI TECHNOSYSTEM CO.,LTD.",
- [3]byte{0, 13, 33}: "WISCORE Inc.",
- [3]byte{0, 13, 34}: "Unitronics LTD",
- [3]byte{0, 13, 35}: "Smart Solution, Inc",
- [3]byte{0, 13, 36}: "SENTEC E&E CO., LTD.",
- [3]byte{0, 13, 37}: "SANDEN CORPORATION",
- [3]byte{0, 13, 38}: "Primagraphics Limited",
- [3]byte{0, 13, 39}: "MICROPLEX Printware AG",
- [3]byte{0, 13, 40}: "Cisco Systems, Inc",
- [3]byte{0, 13, 41}: "Cisco Systems, Inc",
- [3]byte{0, 13, 42}: "Scanmatic AS",
- [3]byte{0, 13, 43}: "Racal Instruments",
- [3]byte{0, 13, 44}: "Net2Edge Limited",
- [3]byte{0, 13, 45}: "NCT Deutschland GmbH",
- [3]byte{0, 13, 46}: "Matsushita Avionics Systems Corporation",
- [3]byte{0, 13, 47}: "AIN Comm.Tech.Co., LTD",
- [3]byte{0, 13, 48}: "IceFyre Semiconductor",
- [3]byte{0, 13, 49}: "Compellent Technologies, Inc.",
- [3]byte{0, 13, 50}: "DispenseSource, Inc.",
- [3]byte{0, 13, 51}: "Prediwave Corp.",
- [3]byte{0, 13, 52}: "Shell International Exploration and Production, Inc.",
- [3]byte{0, 13, 53}: "PAC International Ltd",
- [3]byte{0, 13, 54}: "Wu Han Routon Electronic Co., Ltd",
- [3]byte{0, 13, 55}: "WIPLUG",
- [3]byte{0, 13, 56}: "NISSIN INC.",
- [3]byte{0, 13, 57}: "Network Electronics",
- [3]byte{0, 13, 58}: "Microsoft Corp.",
- [3]byte{0, 13, 59}: "Microelectronics Technology Inc.",
- [3]byte{0, 13, 60}: "i.Tech Dynamic Ltd",
- [3]byte{0, 13, 61}: "Hammerhead Systems, Inc.",
- [3]byte{0, 13, 62}: "APLUX Communications Ltd.",
- [3]byte{0, 13, 63}: "VTI Instruments Corporation",
- [3]byte{0, 13, 64}: "Verint Loronix Video Solutions",
- [3]byte{0, 13, 65}: "Siemens AG ICM MP UC RD IT KLF1",
- [3]byte{0, 13, 66}: "Newbest Development Limited",
- [3]byte{0, 13, 67}: "DRS Tactical Systems Inc.",
- [3]byte{0, 13, 68}: "Audio BU - Logitech",
- [3]byte{0, 13, 69}: "Tottori SANYO Electric Co., Ltd.",
- [3]byte{0, 13, 70}: "Parker SSD Drives",
- [3]byte{0, 13, 71}: "Collex",
- [3]byte{0, 13, 72}: "AEWIN Technologies Co., Ltd.",
- [3]byte{0, 13, 73}: "Triton Systems of Delaware, Inc.",
- [3]byte{0, 13, 74}: "Steag ETA-Optik",
- [3]byte{0, 13, 75}: "Roku, Inc.",
- [3]byte{0, 13, 76}: "Outline Electronics Ltd.",
- [3]byte{0, 13, 77}: "Ninelanes",
- [3]byte{0, 13, 78}: "NDR Co.,LTD.",
- [3]byte{0, 13, 79}: "Kenwood Corporation",
- [3]byte{0, 13, 80}: "Galazar Networks",
- [3]byte{0, 13, 81}: "DIVR Systems, Inc.",
- [3]byte{0, 13, 82}: "Comart system",
- [3]byte{0, 13, 83}: "Beijing 5w Communication Corp.",
- [3]byte{0, 13, 84}: "3Com Ltd",
- [3]byte{0, 13, 85}: "SANYCOM Technology Co.,Ltd",
- [3]byte{0, 13, 86}: "Dell Inc.",
- [3]byte{0, 13, 87}: "Fujitsu I-Network Systems Limited.",
- [3]byte{0, 13, 88}: "Private",
- [3]byte{0, 13, 89}: "Amity Systems, Inc.",
- [3]byte{0, 13, 90}: "Tiesse SpA",
- [3]byte{0, 13, 91}: "Smart Empire Investments Limited",
- [3]byte{0, 13, 92}: "Robert Bosch GmbH, VT-ATMO",
- [3]byte{0, 13, 93}: "Raritan Computer, Inc",
- [3]byte{0, 13, 94}: "NEC Personal Products",
- [3]byte{0, 13, 95}: "Minds Inc",
- [3]byte{0, 13, 96}: "IBM Corp",
- [3]byte{0, 13, 97}: "Giga-Byte Technology Co., Ltd.",
- [3]byte{0, 13, 98}: "Funkwerk Dabendorf GmbH",
- [3]byte{0, 13, 99}: "DENT Instruments, Inc.",
- [3]byte{0, 13, 100}: "COMAG Handels AG",
- [3]byte{0, 13, 101}: "Cisco Systems, Inc",
- [3]byte{0, 13, 102}: "Cisco Systems, Inc",
- [3]byte{0, 13, 103}: "Ericsson",
- [3]byte{0, 13, 104}: "Vinci Systems, Inc.",
- [3]byte{0, 13, 105}: "TMT&D Corporation",
- [3]byte{0, 13, 106}: "Redwood Technologies LTD",
- [3]byte{0, 13, 107}: "Mita-Teknik A/S",
- [3]byte{0, 13, 108}: "M-Audio",
- [3]byte{0, 13, 109}: "K-Tech Devices Corp.",
- [3]byte{0, 13, 110}: "K-Patents Oy",
- [3]byte{0, 13, 111}: "Ember Corporation",
- [3]byte{0, 13, 112}: "Datamax Corporation",
- [3]byte{0, 13, 113}: "boca systems",
- [3]byte{0, 13, 114}: "2Wire Inc",
- [3]byte{0, 13, 115}: "Technical Support, Inc.",
- [3]byte{0, 13, 116}: "Sand Network Systems, Inc.",
- [3]byte{0, 13, 117}: "Kobian Pte Ltd - Taiwan Branch",
- [3]byte{0, 13, 118}: "Hokuto Denshi Co,. Ltd.",
- [3]byte{0, 13, 119}: "FalconStor Software",
- [3]byte{0, 13, 120}: "Engineering & Security",
- [3]byte{0, 13, 121}: "Dynamic Solutions Co,.Ltd.",
- [3]byte{0, 13, 122}: "DiGATTO Asia Pacific Pte Ltd",
- [3]byte{0, 13, 123}: "Consensys Computers Inc.",
- [3]byte{0, 13, 124}: "Codian Ltd",
- [3]byte{0, 13, 125}: "Afco Systems",
- [3]byte{0, 13, 126}: "Axiowave Networks, Inc.",
- [3]byte{0, 13, 127}: "MIDAS COMMUNICATION TECHNOLOGIES PTE LTD ( Foreign Branch)",
- [3]byte{0, 13, 128}: "Online Development Inc",
- [3]byte{0, 13, 129}: "Pepperl+Fuchs GmbH",
- [3]byte{0, 13, 130}: "PHS srl",
- [3]byte{0, 13, 131}: "Sanmina-SCI Hungary Ltd.",
- [3]byte{0, 13, 132}: "Makus Inc.",
- [3]byte{0, 13, 133}: "Tapwave, Inc.",
- [3]byte{0, 13, 134}: "Huber + Suhner AG",
- [3]byte{0, 13, 135}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 13, 136}: "D-Link Corporation",
- [3]byte{0, 13, 137}: "Bils Technology Inc",
- [3]byte{0, 13, 138}: "Winners Electronics Co., Ltd.",
- [3]byte{0, 13, 139}: "T&D Corporation",
- [3]byte{0, 13, 140}: "Shanghai Wedone Digital Ltd. CO.",
- [3]byte{0, 13, 141}: "Prosoft Technology, Inc",
- [3]byte{0, 13, 142}: "Koden Electronics Co., Ltd.",
- [3]byte{0, 13, 143}: "King Tsushin Kogyo Co., LTD.",
- [3]byte{0, 13, 144}: "Factum Electronics AB",
- [3]byte{0, 13, 145}: "Eclipse (HQ Espana) S.L.",
- [3]byte{0, 13, 146}: "ARIMA Communications Corp.",
- [3]byte{0, 13, 147}: "Apple, Inc.",
- [3]byte{0, 13, 148}: "AFAR Communications,Inc",
- [3]byte{0, 13, 149}: "Opti-cell, Inc.",
- [3]byte{0, 13, 150}: "Vtera Technology Inc.",
- [3]byte{0, 13, 151}: "ABB Inc./Tropos",
- [3]byte{0, 13, 152}: "S.W.A.C. Schmitt-Walter Automation Consult GmbH",
- [3]byte{0, 13, 153}: "Orbital Sciences Corp.; Launch Systems Group",
- [3]byte{0, 13, 154}: "INFOTEC LTD",
- [3]byte{0, 13, 155}: "Heraeus Electro-Nite International N.V.",
- [3]byte{0, 13, 156}: "Elan GmbH & Co KG",
- [3]byte{0, 13, 157}: "Hewlett Packard",
- [3]byte{0, 13, 158}: "TOKUDEN OHIZUMI SEISAKUSYO Co.,Ltd.",
- [3]byte{0, 13, 159}: "RF Micro Devices",
- [3]byte{0, 13, 160}: "NEDAP N.V.",
- [3]byte{0, 13, 161}: "MIRAE ITS Co.,LTD.",
- [3]byte{0, 13, 162}: "Infrant Technologies, Inc.",
- [3]byte{0, 13, 163}: "Emerging Technologies Limited",
- [3]byte{0, 13, 164}: "DOSCH & AMAND SYSTEMS AG",
- [3]byte{0, 13, 165}: "Fabric7 Systems, Inc",
- [3]byte{0, 13, 166}: "Universal Switching Corporation",
- [3]byte{0, 13, 167}: "Private",
- [3]byte{0, 13, 168}: "Teletronics Technology Corporation",
- [3]byte{0, 13, 169}: "T.E.A.M. S.L.",
- [3]byte{0, 13, 170}: "S.A.Tehnology co.,Ltd.",
- [3]byte{0, 13, 171}: "Parker Hannifin GmbH Electromechanical Division Europe",
- [3]byte{0, 13, 172}: "Japan CBM Corporation",
- [3]byte{0, 13, 173}: "Dataprobe, Inc.",
- [3]byte{0, 13, 174}: "SAMSUNG HEAVY INDUSTRIES CO., LTD.",
- [3]byte{0, 13, 175}: "Plexus Corp (UK) Ltd",
- [3]byte{0, 13, 176}: "Olym-tech Co.,Ltd.",
- [3]byte{0, 13, 177}: "Japan Network Service Co., Ltd.",
- [3]byte{0, 13, 178}: "Ammasso, Inc.",
- [3]byte{0, 13, 179}: "SDO Communication Corperation",
- [3]byte{0, 13, 180}: "NETASQ",
- [3]byte{0, 13, 181}: "GLOBALSAT TECHNOLOGY CORPORATION",
- [3]byte{0, 13, 182}: "Broadcom",
- [3]byte{0, 13, 183}: "SANKO ELECTRIC CO,.LTD",
- [3]byte{0, 13, 184}: "SCHILLER AG",
- [3]byte{0, 13, 185}: "PC Engines GmbH",
- [3]byte{0, 13, 186}: "Océ Document Technologies GmbH",
- [3]byte{0, 13, 187}: "Nippon Dentsu Co.,Ltd.",
- [3]byte{0, 13, 188}: "Cisco Systems, Inc",
- [3]byte{0, 13, 189}: "Cisco Systems, Inc",
- [3]byte{0, 13, 190}: "Bel Fuse Europe Ltd.,UK",
- [3]byte{0, 13, 191}: "TekTone Sound & Signal Mfg., Inc.",
- [3]byte{0, 13, 192}: "Spagat AS",
- [3]byte{0, 13, 193}: "SafeWeb Inc",
- [3]byte{0, 13, 194}: "Private",
- [3]byte{0, 13, 195}: "First Communication, Inc.",
- [3]byte{0, 13, 196}: "Emcore Corporation",
- [3]byte{0, 13, 197}: "EchoStar Global B.V.",
- [3]byte{0, 13, 198}: "DigiRose Technology Co., Ltd.",
- [3]byte{0, 13, 199}: "COSMIC ENGINEERING INC.",
- [3]byte{0, 13, 200}: "AirMagnet, Inc",
- [3]byte{0, 13, 201}: "THALES Elektronik Systeme GmbH",
- [3]byte{0, 13, 202}: "Tait Electronics",
- [3]byte{0, 13, 203}: "Petcomkorea Co., Ltd.",
- [3]byte{0, 13, 204}: "NEOSMART Corp.",
- [3]byte{0, 13, 205}: "GROUPE TXCOM",
- [3]byte{0, 13, 206}: "Dynavac Technology Pte Ltd",
- [3]byte{0, 13, 207}: "Cidra Corp.",
- [3]byte{0, 13, 208}: "TetraTec Instruments GmbH",
- [3]byte{0, 13, 209}: "Stryker Corporation",
- [3]byte{0, 13, 210}: "Simrad Optronics ASA",
- [3]byte{0, 13, 211}: "SAMWOO Telecommunication Co.,Ltd.",
- [3]byte{0, 13, 212}: "Symantec Corporation",
- [3]byte{0, 13, 213}: "O'RITE TECHNOLOGY CO.,LTD",
- [3]byte{0, 13, 214}: "ITI LTD",
- [3]byte{0, 13, 215}: "Bright",
- [3]byte{0, 13, 216}: "BBN",
- [3]byte{0, 13, 217}: "Anton Paar GmbH",
- [3]byte{0, 13, 218}: "ALLIED TELESIS K.K.",
- [3]byte{0, 13, 219}: "AIRWAVE TECHNOLOGIES INC.",
- [3]byte{0, 13, 220}: "VAC",
- [3]byte{0, 13, 221}: "Profilo Telra Elektronik Sanayi ve Ticaret. A.Ş",
- [3]byte{0, 13, 222}: "Joyteck Co., Ltd.",
- [3]byte{0, 13, 223}: "Japan Image & Network Inc.",
- [3]byte{0, 13, 224}: "ICPDAS Co.,LTD",
- [3]byte{0, 13, 225}: "Control Products, Inc.",
- [3]byte{0, 13, 226}: "CMZ Sistemi Elettronici",
- [3]byte{0, 13, 227}: "AT Sweden AB",
- [3]byte{0, 13, 228}: "DIGINICS, Inc.",
- [3]byte{0, 13, 229}: "Samsung Thales",
- [3]byte{0, 13, 230}: "YOUNGBO ENGINEERING CO.,LTD",
- [3]byte{0, 13, 231}: "Snap-on OEM Group",
- [3]byte{0, 13, 232}: "Nasaco Electronics Pte. Ltd",
- [3]byte{0, 13, 233}: "Napatech Aps",
- [3]byte{0, 13, 234}: "Kingtel Telecommunication Corp.",
- [3]byte{0, 13, 235}: "CompXs Limited",
- [3]byte{0, 13, 236}: "Cisco Systems, Inc",
- [3]byte{0, 13, 237}: "Cisco Systems, Inc",
- [3]byte{0, 13, 238}: "Andrew RF Power Amplifier Group",
- [3]byte{0, 13, 239}: "Soc. Coop. Bilanciai",
- [3]byte{0, 13, 240}: "QCOM TECHNOLOGY INC.",
- [3]byte{0, 13, 241}: "IONIX INC.",
- [3]byte{0, 13, 242}: "Private",
- [3]byte{0, 13, 243}: "Asmax Solutions",
- [3]byte{0, 13, 244}: "Watertek Co.",
- [3]byte{0, 13, 245}: "Teletronics International Inc.",
- [3]byte{0, 13, 246}: "Technology Thesaurus Corp.",
- [3]byte{0, 13, 247}: "Space Dynamics Lab",
- [3]byte{0, 13, 248}: "ORGA Kartensysteme GmbH",
- [3]byte{0, 13, 249}: "NDS Limited",
- [3]byte{0, 13, 250}: "Micro Control Systems Ltd.",
- [3]byte{0, 13, 251}: "Komax AG",
- [3]byte{0, 13, 252}: "ITFOR Inc.",
- [3]byte{0, 13, 253}: "Huges Hi-Tech Inc.,",
- [3]byte{0, 13, 254}: "Hauppauge Computer Works, Inc.",
- [3]byte{0, 13, 255}: "CHENMING MOLD INDUSTRY CORP.",
- [3]byte{0, 14, 0}: "Atrie",
- [3]byte{0, 14, 1}: "ASIP Technologies Inc.",
- [3]byte{0, 14, 2}: "Advantech AMT Inc.",
- [3]byte{0, 14, 3}: "Emulex Corporation",
- [3]byte{0, 14, 4}: "CMA/Microdialysis AB",
- [3]byte{0, 14, 5}: "WIRELESS MATRIX CORP.",
- [3]byte{0, 14, 6}: "Team Simoco Ltd",
- [3]byte{0, 14, 7}: "Sony Mobile Communications AB",
- [3]byte{0, 14, 8}: "Cisco-Linksys, LLC",
- [3]byte{0, 14, 9}: "Shenzhen Coship Software Co.,LTD.",
- [3]byte{0, 14, 10}: "SAKUMA DESIGN OFFICE",
- [3]byte{0, 14, 11}: "Netac Technology Co., Ltd.",
- [3]byte{0, 14, 12}: "Intel Corporation",
- [3]byte{0, 14, 13}: "Hesch Schröder GmbH",
- [3]byte{0, 14, 14}: "ESA elettronica S.P.A.",
- [3]byte{0, 14, 15}: "ERMME",
- [3]byte{0, 14, 16}: "C-guys, Inc.",
- [3]byte{0, 14, 17}: "BDT Büro und Datentechnik GmbH & Co.KG",
- [3]byte{0, 14, 18}: "Adaptive Micro Systems Inc.",
- [3]byte{0, 14, 19}: "Accu-Sort Systems inc.",
- [3]byte{0, 14, 20}: "Visionary Solutions, Inc.",
- [3]byte{0, 14, 21}: "Tadlys LTD",
- [3]byte{0, 14, 22}: "SouthWing S.L.",
- [3]byte{0, 14, 23}: "Private",
- [3]byte{0, 14, 24}: "MyA Technology",
- [3]byte{0, 14, 25}: "LogicaCMG Pty Ltd",
- [3]byte{0, 14, 26}: "JPS Communications",
- [3]byte{0, 14, 27}: "IAV GmbH",
- [3]byte{0, 14, 28}: "Hach Company",
- [3]byte{0, 14, 29}: "ARION Technology Inc.",
- [3]byte{0, 14, 30}: "QLogic Corporation",
- [3]byte{0, 14, 31}: "TCL Networks Equipment Co., Ltd.",
- [3]byte{0, 14, 32}: "ACCESS Systems Americas, Inc.",
- [3]byte{0, 14, 33}: "MTU Friedrichshafen GmbH",
- [3]byte{0, 14, 34}: "Private",
- [3]byte{0, 14, 35}: "Incipient, Inc.",
- [3]byte{0, 14, 36}: "Huwell Technology Inc.",
- [3]byte{0, 14, 37}: "Hannae Technology Co., Ltd",
- [3]byte{0, 14, 38}: "Gincom Technology Corp.",
- [3]byte{0, 14, 39}: "Crere Networks, Inc.",
- [3]byte{0, 14, 40}: "Dynamic Ratings P/L",
- [3]byte{0, 14, 41}: "Shester Communications Inc",
- [3]byte{0, 14, 42}: "Private",
- [3]byte{0, 14, 43}: "Safari Technologies",
- [3]byte{0, 14, 44}: "Netcodec co.",
- [3]byte{0, 14, 45}: "Hyundai Digital Technology Co.,Ltd.",
- [3]byte{0, 14, 46}: "Edimax Technology Co. Ltd.",
- [3]byte{0, 14, 47}: "Roche Diagnostics GmbH",
- [3]byte{0, 14, 48}: "AERAS Networks, Inc.",
- [3]byte{0, 14, 49}: "Olympus Soft Imaging Solutions GmbH",
- [3]byte{0, 14, 50}: "Kontron Medical",
- [3]byte{0, 14, 51}: "Shuko Electronics Co.,Ltd",
- [3]byte{0, 14, 52}: "NexGen City, LP",
- [3]byte{0, 14, 53}: "Intel Corporation",
- [3]byte{0, 14, 54}: "HEINESYS, Inc.",
- [3]byte{0, 14, 55}: "Harms & Wende GmbH & Co.KG",
- [3]byte{0, 14, 56}: "Cisco Systems, Inc",
- [3]byte{0, 14, 57}: "Cisco Systems, Inc",
- [3]byte{0, 14, 58}: "Cirrus Logic",
- [3]byte{0, 14, 59}: "Hawking Technologies, Inc.",
- [3]byte{0, 14, 60}: "Transact Technologies Inc",
- [3]byte{0, 14, 61}: "Televic N.V.",
- [3]byte{0, 14, 62}: "Sun Optronics Inc",
- [3]byte{0, 14, 63}: "Soronti, Inc.",
- [3]byte{0, 14, 64}: "Nortel Networks",
- [3]byte{0, 14, 65}: "NIHON MECHATRONICS CO.,LTD.",
- [3]byte{0, 14, 66}: "Motic Incoporation Ltd.",
- [3]byte{0, 14, 67}: "G-Tek Electronics Sdn. Bhd.",
- [3]byte{0, 14, 68}: "Digital 5, Inc.",
- [3]byte{0, 14, 69}: "Beijing Newtry Electronic Technology Ltd",
- [3]byte{0, 14, 70}: "Niigata Seimitsu Co.,Ltd.",
- [3]byte{0, 14, 71}: "NCI System Co.,Ltd.",
- [3]byte{0, 14, 72}: "Lipman TransAction Solutions",
- [3]byte{0, 14, 73}: "Forsway Scandinavia AB",
- [3]byte{0, 14, 74}: "Changchun Huayu WEBPAD Co.,LTD",
- [3]byte{0, 14, 75}: "atrium c and i",
- [3]byte{0, 14, 76}: "Bermai Inc.",
- [3]byte{0, 14, 77}: "Numesa Inc.",
- [3]byte{0, 14, 78}: "Waveplus Technology Co., Ltd.",
- [3]byte{0, 14, 79}: "Trajet GmbH",
- [3]byte{0, 14, 80}: "Thomson Telecom Belgium",
- [3]byte{0, 14, 81}: "tecna elettronica srl",
- [3]byte{0, 14, 82}: "Optium Corporation",
- [3]byte{0, 14, 83}: "AV TECH CORPORATION",
- [3]byte{0, 14, 84}: "AlphaCell Wireless Ltd.",
- [3]byte{0, 14, 85}: "AUVITRAN",
- [3]byte{0, 14, 86}: "4G Systems GmbH & Co. KG",
- [3]byte{0, 14, 87}: "Iworld Networking, Inc.",
- [3]byte{0, 14, 88}: "Sonos, Inc.",
- [3]byte{0, 14, 89}: "Sagemcom Broadband SAS",
- [3]byte{0, 14, 90}: "TELEFIELD inc.",
- [3]byte{0, 14, 91}: "ParkerVision - Direct2Data",
- [3]byte{0, 14, 92}: "ARRIS Group, Inc.",
- [3]byte{0, 14, 93}: "Triple Play Technologies A/S",
- [3]byte{0, 14, 94}: "Raisecom Technology",
- [3]byte{0, 14, 95}: "activ-net GmbH & Co. KG",
- [3]byte{0, 14, 96}: "360SUN Digital Broadband Corporation",
- [3]byte{0, 14, 97}: "MICROTROL LIMITED",
- [3]byte{0, 14, 98}: "Nortel Networks",
- [3]byte{0, 14, 99}: "Lemke Diagnostics GmbH",
- [3]byte{0, 14, 100}: "Elphel, Inc",
- [3]byte{0, 14, 101}: "TransCore",
- [3]byte{0, 14, 102}: "Hitachi Industry & Control Solutions, Ltd.",
- [3]byte{0, 14, 103}: "Eltis Microelectronics Ltd.",
- [3]byte{0, 14, 104}: "E-TOP Network Technology Inc.",
- [3]byte{0, 14, 105}: "China Electric Power Research Institute",
- [3]byte{0, 14, 106}: "3Com Ltd",
- [3]byte{0, 14, 107}: "Janitza electronics GmbH",
- [3]byte{0, 14, 108}: "Device Drivers Limited",
- [3]byte{0, 14, 109}: "Murata Manufacturing Co., Ltd.",
- [3]byte{0, 14, 110}: "MAT S.A. (Mircrelec Advanced Technology)",
- [3]byte{0, 14, 111}: "IRIS Corporation Berhad",
- [3]byte{0, 14, 112}: "in2 Networks",
- [3]byte{0, 14, 113}: "Gemstar Technology Development Ltd.",
- [3]byte{0, 14, 114}: "CTS electronics",
- [3]byte{0, 14, 115}: "Tpack A/S",
- [3]byte{0, 14, 116}: "Solar Telecom. Tech",
- [3]byte{0, 14, 117}: "New York Air Brake Corp.",
- [3]byte{0, 14, 118}: "GEMSOC INNOVISION INC.",
- [3]byte{0, 14, 119}: "Decru, Inc.",
- [3]byte{0, 14, 120}: "Amtelco",
- [3]byte{0, 14, 121}: "Ample Communications Inc.",
- [3]byte{0, 14, 122}: "GemWon Communications Co., Ltd.",
- [3]byte{0, 14, 123}: "Toshiba",
- [3]byte{0, 14, 124}: "Televes S.A.",
- [3]byte{0, 14, 125}: "Electronics Line 3000 Ltd.",
- [3]byte{0, 14, 126}: "ionSign Oy",
- [3]byte{0, 14, 127}: "Hewlett Packard",
- [3]byte{0, 14, 128}: "Thomson Technology Inc",
- [3]byte{0, 14, 129}: "Devicescape Software, Inc.",
- [3]byte{0, 14, 130}: "Commtech Wireless",
- [3]byte{0, 14, 131}: "Cisco Systems, Inc",
- [3]byte{0, 14, 132}: "Cisco Systems, Inc",
- [3]byte{0, 14, 133}: "Catalyst Enterprises, Inc.",
- [3]byte{0, 14, 134}: "Alcatel North America",
- [3]byte{0, 14, 135}: "adp Gauselmann GmbH",
- [3]byte{0, 14, 136}: "VIDEOTRON CORP.",
- [3]byte{0, 14, 137}: "CLEMATIC",
- [3]byte{0, 14, 138}: "Avara Technologies Pty. Ltd.",
- [3]byte{0, 14, 139}: "Astarte Technology Co, Ltd.",
- [3]byte{0, 14, 140}: "Siemens AG A&D ET",
- [3]byte{0, 14, 141}: "Systems in Progress Holding GmbH",
- [3]byte{0, 14, 142}: "SparkLAN Communications, Inc.",
- [3]byte{0, 14, 143}: "Sercomm Corp.",
- [3]byte{0, 14, 144}: "PONICO CORP.",
- [3]byte{0, 14, 145}: "Navico Auckland Ltd",
- [3]byte{0, 14, 146}: "Open Telecom",
- [3]byte{0, 14, 147}: "Milénio 3 Sistemas Electrónicos, Lda.",
- [3]byte{0, 14, 148}: "Maas International BV",
- [3]byte{0, 14, 149}: "Fujiya Denki Seisakusho Co.,Ltd.",
- [3]byte{0, 14, 150}: "Cubic Defense Applications, Inc.",
- [3]byte{0, 14, 151}: "Ultracker Technology CO., Inc",
- [3]byte{0, 14, 152}: "HME Clear-Com LTD.",
- [3]byte{0, 14, 153}: "Spectrum Digital, Inc",
- [3]byte{0, 14, 154}: "BOE TECHNOLOGY GROUP CO.,LTD",
- [3]byte{0, 14, 155}: "Ambit Microsystems Corporation",
- [3]byte{0, 14, 156}: "Benchmark Electronics",
- [3]byte{0, 14, 157}: "Tiscali UK Ltd",
- [3]byte{0, 14, 158}: "Topfield Co., Ltd",
- [3]byte{0, 14, 159}: "TEMIC SDS GmbH",
- [3]byte{0, 14, 160}: "NetKlass Technology Inc.",
- [3]byte{0, 14, 161}: "Formosa Teletek Corporation",
- [3]byte{0, 14, 162}: "McAfee, Inc",
- [3]byte{0, 14, 163}: "CNCR-IT CO.,LTD,HangZhou P.R.CHINA",
- [3]byte{0, 14, 164}: "Certance Inc.",
- [3]byte{0, 14, 165}: "BLIP Systems",
- [3]byte{0, 14, 166}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 14, 167}: "Endace Technology",
- [3]byte{0, 14, 168}: "United Technologists Europe Limited",
- [3]byte{0, 14, 169}: "Shanghai Xun Shi Communications Equipment Ltd. Co.",
- [3]byte{0, 14, 170}: "Scalent Systems, Inc.",
- [3]byte{0, 14, 171}: "Cray Inc",
- [3]byte{0, 14, 172}: "MINTRON ENTERPRISE CO., LTD.",
- [3]byte{0, 14, 173}: "Metanoia Technologies, Inc.",
- [3]byte{0, 14, 174}: "GAWELL TECHNOLOGIES CORP.",
- [3]byte{0, 14, 175}: "CASTEL",
- [3]byte{0, 14, 176}: "Solutions Radio BV",
- [3]byte{0, 14, 177}: "Newcotech,Ltd",
- [3]byte{0, 14, 178}: "Micro-Research Finland Oy",
- [3]byte{0, 14, 179}: "Hewlett Packard",
- [3]byte{0, 14, 180}: "GUANGZHOU GAOKE COMMUNICATIONS TECHNOLOGY CO.LTD.",
- [3]byte{0, 14, 181}: "Ecastle Electronics Co., Ltd.",
- [3]byte{0, 14, 182}: "Riverbed Technology, Inc.",
- [3]byte{0, 14, 183}: "Knovative, Inc.",
- [3]byte{0, 14, 184}: "Iiga co.,Ltd",
- [3]byte{0, 14, 185}: "HASHIMOTO Electronics Industry Co.,Ltd.",
- [3]byte{0, 14, 186}: "HANMI SEMICONDUCTOR CO., LTD.",
- [3]byte{0, 14, 187}: "Everbee Networks",
- [3]byte{0, 14, 188}: "Paragon Fidelity GmbH",
- [3]byte{0, 14, 189}: "Burdick, a Quinton Compny",
- [3]byte{0, 14, 190}: "B&B Electronics Manufacturing Co.",
- [3]byte{0, 14, 191}: "Remsdaq Limited",
- [3]byte{0, 14, 192}: "Nortel Networks",
- [3]byte{0, 14, 193}: "MYNAH Technologies",
- [3]byte{0, 14, 194}: "Lowrance Electronics, Inc.",
- [3]byte{0, 14, 195}: "Logic Controls, Inc.",
- [3]byte{0, 14, 196}: "Iskra Transmission d.d.",
- [3]byte{0, 14, 197}: "Digital Multitools Inc",
- [3]byte{0, 14, 198}: "ASIX ELECTRONICS CORP.",
- [3]byte{0, 14, 199}: "Motorola Korea",
- [3]byte{0, 14, 200}: "Zoran Corporation",
- [3]byte{0, 14, 201}: "YOKO Technology Corp.",
- [3]byte{0, 14, 202}: "WTSS Inc",
- [3]byte{0, 14, 203}: "VineSys Technology",
- [3]byte{0, 14, 204}: "Tableau, LLC",
- [3]byte{0, 14, 205}: "SKOV A/S",
- [3]byte{0, 14, 206}: "S.I.T.T.I. S.p.A.",
- [3]byte{0, 14, 207}: "PROFIBUS Nutzerorganisation e.V.",
- [3]byte{0, 14, 208}: "Privaris, Inc.",
- [3]byte{0, 14, 209}: "Osaka Micro Computer.",
- [3]byte{0, 14, 210}: "Filtronic plc",
- [3]byte{0, 14, 211}: "Epicenter, Inc.",
- [3]byte{0, 14, 212}: "CRESITT INDUSTRIE",
- [3]byte{0, 14, 213}: "COPAN Systems Inc.",
- [3]byte{0, 14, 214}: "Cisco Systems, Inc",
- [3]byte{0, 14, 215}: "Cisco Systems, Inc",
- [3]byte{0, 14, 216}: "Positron Access Solutions Corp",
- [3]byte{0, 14, 217}: "Aksys, Ltd.",
- [3]byte{0, 14, 218}: "C-TECH UNITED CORP.",
- [3]byte{0, 14, 219}: "XiNCOM Corp.",
- [3]byte{0, 14, 220}: "Tellion INC.",
- [3]byte{0, 14, 221}: "SHURE INCORPORATED",
- [3]byte{0, 14, 222}: "REMEC, Inc.",
- [3]byte{0, 14, 223}: "PLX Technology",
- [3]byte{0, 14, 224}: "Mcharge",
- [3]byte{0, 14, 225}: "ExtremeSpeed Inc.",
- [3]byte{0, 14, 226}: "Custom Engineering",
- [3]byte{0, 14, 227}: "Chiyu Technology Co.,Ltd",
- [3]byte{0, 14, 228}: "BOE TECHNOLOGY GROUP CO.,LTD",
- [3]byte{0, 14, 229}: "bitWallet, Inc.",
- [3]byte{0, 14, 230}: "Adimos Systems LTD",
- [3]byte{0, 14, 231}: "AAC ELECTRONICS CORP.",
- [3]byte{0, 14, 232}: "Zioncom Electronics (Shenzhen) Ltd.",
- [3]byte{0, 14, 233}: "WayTech Development, Inc.",
- [3]byte{0, 14, 234}: "Shadong Luneng Jicheng Electronics,Co.,Ltd",
- [3]byte{0, 14, 235}: "Sandmartin(zhong shan)Electronics Co.,Ltd",
- [3]byte{0, 14, 236}: "Orban",
- [3]byte{0, 14, 237}: "Nokia Danmark A/S",
- [3]byte{0, 14, 238}: "Muco Industrie BV",
- [3]byte{0, 14, 239}: "Private",
- [3]byte{0, 14, 240}: "Festo AG & Co. KG",
- [3]byte{0, 14, 241}: "EZQUEST INC.",
- [3]byte{0, 14, 242}: "Infinico Corporation",
- [3]byte{0, 14, 243}: "Smarthome",
- [3]byte{0, 14, 244}: "Kasda Networks Inc",
- [3]byte{0, 14, 245}: "iPAC Technology Co., Ltd.",
- [3]byte{0, 14, 246}: "E-TEN Information Systems Co., Ltd.",
- [3]byte{0, 14, 247}: "Vulcan Portals Inc",
- [3]byte{0, 14, 248}: "SBC ASI",
- [3]byte{0, 14, 249}: "REA Elektronik GmbH",
- [3]byte{0, 14, 250}: "Optoway Technology Incorporation",
- [3]byte{0, 14, 251}: "Macey Enterprises",
- [3]byte{0, 14, 252}: "JTAG Technologies B.V.",
- [3]byte{0, 14, 253}: "FUJINON CORPORATION",
- [3]byte{0, 14, 254}: "EndRun Technologies LLC",
- [3]byte{0, 14, 255}: "Megasolution,Inc.",
- [3]byte{0, 15, 0}: "Legra Systems, Inc.",
- [3]byte{0, 15, 1}: "DIGITALKS INC",
- [3]byte{0, 15, 2}: "Digicube Technology Co., Ltd",
- [3]byte{0, 15, 3}: "COM&C CO., LTD",
- [3]byte{0, 15, 4}: "cim-usa inc",
- [3]byte{0, 15, 5}: "3B SYSTEM INC.",
- [3]byte{0, 15, 6}: "Nortel Networks",
- [3]byte{0, 15, 7}: "Mangrove Systems, Inc.",
- [3]byte{0, 15, 8}: "Indagon Oy",
- [3]byte{0, 15, 9}: "Private",
- [3]byte{0, 15, 10}: "Clear Edge Networks",
- [3]byte{0, 15, 11}: "Kentima Technologies AB",
- [3]byte{0, 15, 12}: "SYNCHRONIC ENGINEERING",
- [3]byte{0, 15, 13}: "Hunt Electronic Co., Ltd.",
- [3]byte{0, 15, 14}: "WaveSplitter Technologies, Inc.",
- [3]byte{0, 15, 15}: "Real ID Technology Co., Ltd.",
- [3]byte{0, 15, 16}: "RDM Corporation",
- [3]byte{0, 15, 17}: "Prodrive B.V.",
- [3]byte{0, 15, 18}: "Panasonic Europe Ltd.",
- [3]byte{0, 15, 19}: "Nisca corporation",
- [3]byte{0, 15, 20}: "Mindray Co., Ltd.",
- [3]byte{0, 15, 21}: "Kjaerulff1 A/S",
- [3]byte{0, 15, 22}: "JAY HOW TECHNOLOGY CO.,",
- [3]byte{0, 15, 23}: "Insta Elektro GmbH",
- [3]byte{0, 15, 24}: "Industrial Control Systems",
- [3]byte{0, 15, 25}: "Boston Scientific",
- [3]byte{0, 15, 26}: "Gaming Support B.V.",
- [3]byte{0, 15, 27}: "Ego Systems Inc.",
- [3]byte{0, 15, 28}: "DigitAll World Co., Ltd",
- [3]byte{0, 15, 29}: "Cosmo Techs Co., Ltd.",
- [3]byte{0, 15, 30}: "Chengdu KT Electric Co.of High & New Technology",
- [3]byte{0, 15, 31}: "Dell Inc.",
- [3]byte{0, 15, 32}: "Hewlett Packard",
- [3]byte{0, 15, 33}: "Scientific Atlanta, Inc",
- [3]byte{0, 15, 34}: "Helius, Inc.",
- [3]byte{0, 15, 35}: "Cisco Systems, Inc",
- [3]byte{0, 15, 36}: "Cisco Systems, Inc",
- [3]byte{0, 15, 37}: "AimValley B.V.",
- [3]byte{0, 15, 38}: "WorldAccxx LLC",
- [3]byte{0, 15, 39}: "TEAL Electronics, Inc.",
- [3]byte{0, 15, 40}: "Itronix Corporation",
- [3]byte{0, 15, 41}: "Augmentix Corporation",
- [3]byte{0, 15, 42}: "Cableware Electronics",
- [3]byte{0, 15, 43}: "GREENBELL SYSTEMS",
- [3]byte{0, 15, 44}: "Uplogix, Inc.",
- [3]byte{0, 15, 45}: "CHUNG-HSIN ELECTRIC & MACHINERY MFG.CORP.",
- [3]byte{0, 15, 46}: "Megapower International Corp.",
- [3]byte{0, 15, 47}: "W-LINX TECHNOLOGY CO., LTD.",
- [3]byte{0, 15, 48}: "Raza Microelectronics Inc",
- [3]byte{0, 15, 49}: "Allied Vision Technologies Canada Inc",
- [3]byte{0, 15, 50}: "Lootom Telcovideo Network Wuxi Co Ltd",
- [3]byte{0, 15, 51}: "DUALi Inc.",
- [3]byte{0, 15, 52}: "Cisco Systems, Inc",
- [3]byte{0, 15, 53}: "Cisco Systems, Inc",
- [3]byte{0, 15, 54}: "Accurate Techhnologies, Inc.",
- [3]byte{0, 15, 55}: "Xambala Incorporated",
- [3]byte{0, 15, 56}: "Netstar",
- [3]byte{0, 15, 57}: "IRIS SENSORS",
- [3]byte{0, 15, 58}: "HISHARP",
- [3]byte{0, 15, 59}: "Fuji System Machines Co., Ltd.",
- [3]byte{0, 15, 60}: "Endeleo Limited",
- [3]byte{0, 15, 61}: "D-Link Corporation",
- [3]byte{0, 15, 62}: "CardioNet, Inc",
- [3]byte{0, 15, 63}: "Big Bear Networks",
- [3]byte{0, 15, 64}: "Optical Internetworking Forum",
- [3]byte{0, 15, 65}: "Zipher Ltd",
- [3]byte{0, 15, 66}: "Xalyo Systems",
- [3]byte{0, 15, 67}: "Wasabi Systems Inc.",
- [3]byte{0, 15, 68}: "Tivella Inc.",
- [3]byte{0, 15, 69}: "Stretch, Inc.",
- [3]byte{0, 15, 70}: "SINAR AG",
- [3]byte{0, 15, 71}: "ROBOX SPA",
- [3]byte{0, 15, 72}: "Polypix Inc.",
- [3]byte{0, 15, 73}: "Northover Solutions Limited",
- [3]byte{0, 15, 74}: "Kyushu-kyohan co.,ltd",
- [3]byte{0, 15, 75}: "Oracle Corporation",
- [3]byte{0, 15, 76}: "Elextech INC",
- [3]byte{0, 15, 77}: "TalkSwitch",
- [3]byte{0, 15, 78}: "Cellink",
- [3]byte{0, 15, 79}: "PCS Systemtechnik GmbH",
- [3]byte{0, 15, 80}: "StreamScale Limited",
- [3]byte{0, 15, 81}: "Azul Systems, Inc.",
- [3]byte{0, 15, 82}: "YORK Refrigeration, Marine & Controls",
- [3]byte{0, 15, 83}: "Solarflare Communications Inc",
- [3]byte{0, 15, 84}: "Entrelogic Corporation",
- [3]byte{0, 15, 85}: "Datawire Communication Networks Inc.",
- [3]byte{0, 15, 86}: "Continuum Photonics Inc",
- [3]byte{0, 15, 87}: "CABLELOGIC Co., Ltd.",
- [3]byte{0, 15, 88}: "Adder Technology Limited",
- [3]byte{0, 15, 89}: "Phonak AG",
- [3]byte{0, 15, 90}: "Peribit Networks",
- [3]byte{0, 15, 91}: "Delta Information Systems, Inc.",
- [3]byte{0, 15, 92}: "Day One Digital Media Limited",
- [3]byte{0, 15, 93}: "Genexis BV",
- [3]byte{0, 15, 94}: "Veo",
- [3]byte{0, 15, 95}: "Nicety Technologies Inc. (NTS)",
- [3]byte{0, 15, 96}: "Lifetron Co.,Ltd",
- [3]byte{0, 15, 97}: "Hewlett Packard",
- [3]byte{0, 15, 98}: "Alcatel Bell Space N.V.",
- [3]byte{0, 15, 99}: "Obzerv Technologies",
- [3]byte{0, 15, 100}: "D&R Electronica Weesp BV",
- [3]byte{0, 15, 101}: "icube Corp.",
- [3]byte{0, 15, 102}: "Cisco-Linksys, LLC",
- [3]byte{0, 15, 103}: "West Instruments",
- [3]byte{0, 15, 104}: "Vavic Network Technology, Inc.",
- [3]byte{0, 15, 105}: "SEW Eurodrive GmbH & Co. KG",
- [3]byte{0, 15, 106}: "Nortel Networks",
- [3]byte{0, 15, 107}: "GateWare Communications GmbH",
- [3]byte{0, 15, 108}: "ADDI-DATA GmbH",
- [3]byte{0, 15, 109}: "Midas Engineering",
- [3]byte{0, 15, 110}: "BBox",
- [3]byte{0, 15, 111}: "FTA Communication Technologies",
- [3]byte{0, 15, 112}: "Wintec Industries, inc.",
- [3]byte{0, 15, 113}: "Sanmei Electronics Co.,Ltd",
- [3]byte{0, 15, 114}: "Sandburst",
- [3]byte{0, 15, 115}: "RS Automation Co., Ltd",
- [3]byte{0, 15, 116}: "Qamcom Technology AB",
- [3]byte{0, 15, 117}: "First Silicon Solutions",
- [3]byte{0, 15, 118}: "Digital Keystone, Inc.",
- [3]byte{0, 15, 119}: "DENTUM CO.,LTD",
- [3]byte{0, 15, 120}: "Datacap Systems Inc",
- [3]byte{0, 15, 121}: "Bluetooth Interest Group Inc.",
- [3]byte{0, 15, 122}: "BeiJing NuQX Technology CO.,LTD",
- [3]byte{0, 15, 123}: "Arce Sistemas, S.A.",
- [3]byte{0, 15, 124}: "ACTi Corporation",
- [3]byte{0, 15, 125}: "Xirrus",
- [3]byte{0, 15, 126}: "Ablerex Electronics Co., LTD",
- [3]byte{0, 15, 127}: "UBSTORAGE Co.,Ltd.",
- [3]byte{0, 15, 128}: "Trinity Security Systems,Inc.",
- [3]byte{0, 15, 129}: "PAL Pacific Inc.",
- [3]byte{0, 15, 130}: "Mortara Instrument, Inc.",
- [3]byte{0, 15, 131}: "Brainium Technologies Inc.",
- [3]byte{0, 15, 132}: "Astute Networks, Inc.",
- [3]byte{0, 15, 133}: "ADDO-Japan Corporation",
- [3]byte{0, 15, 134}: "BlackBerry RTS",
- [3]byte{0, 15, 135}: "Maxcess International",
- [3]byte{0, 15, 136}: "AMETEK, Inc.",
- [3]byte{0, 15, 137}: "Winnertec System Co., Ltd.",
- [3]byte{0, 15, 138}: "WideView",
- [3]byte{0, 15, 139}: "Orion MultiSystems Inc",
- [3]byte{0, 15, 140}: "Gigawavetech Pte Ltd",
- [3]byte{0, 15, 141}: "FAST TV-Server AG",
- [3]byte{0, 15, 142}: "DONGYANG TELECOM CO.,LTD.",
- [3]byte{0, 15, 143}: "Cisco Systems, Inc",
- [3]byte{0, 15, 144}: "Cisco Systems, Inc",
- [3]byte{0, 15, 145}: "Aerotelecom Co.,Ltd.",
- [3]byte{0, 15, 146}: "Microhard Systems Inc.",
- [3]byte{0, 15, 147}: "Landis+Gyr Ltd.",
- [3]byte{0, 15, 148}: "Genexis BV",
- [3]byte{0, 15, 149}: "ELECOM Co.,LTD Laneed Division",
- [3]byte{0, 15, 150}: "Telco Systems, Inc.",
- [3]byte{0, 15, 151}: "Avanex Corporation",
- [3]byte{0, 15, 152}: "Avamax Co. Ltd.",
- [3]byte{0, 15, 153}: "APAC opto Electronics Inc.",
- [3]byte{0, 15, 154}: "Synchrony, Inc.",
- [3]byte{0, 15, 155}: "Ross Video Limited",
- [3]byte{0, 15, 156}: "Panduit Corp",
- [3]byte{0, 15, 157}: "DisplayLink (UK) Ltd",
- [3]byte{0, 15, 158}: "Murrelektronik GmbH",
- [3]byte{0, 15, 159}: "ARRIS Group, Inc.",
- [3]byte{0, 15, 160}: "CANON KOREA BUSINESS SOLUTIONS INC.",
- [3]byte{0, 15, 161}: "Gigabit Systems Inc.",
- [3]byte{0, 15, 162}: "2xWireless",
- [3]byte{0, 15, 163}: "Alpha Networks Inc.",
- [3]byte{0, 15, 164}: "Sprecher Automation GmbH",
- [3]byte{0, 15, 165}: "BWA Technology GmbH",
- [3]byte{0, 15, 166}: "S2 Security Corporation",
- [3]byte{0, 15, 167}: "Raptor Networks Technology",
- [3]byte{0, 15, 168}: "Photometrics, Inc.",
- [3]byte{0, 15, 169}: "PC Fabrik",
- [3]byte{0, 15, 170}: "Nexus Technologies",
- [3]byte{0, 15, 171}: "Kyushu Electronics Systems Inc.",
- [3]byte{0, 15, 172}: "IEEE 802.11",
- [3]byte{0, 15, 173}: "FMN communications GmbH",
- [3]byte{0, 15, 174}: "E2O Communications",
- [3]byte{0, 15, 175}: "Dialog Inc.",
- [3]byte{0, 15, 176}: "COMPAL ELECTRONICS, INC.",
- [3]byte{0, 15, 177}: "Cognio Inc.",
- [3]byte{0, 15, 178}: "Broadband Pacenet (India) Pvt. Ltd.",
- [3]byte{0, 15, 179}: "Actiontec Electronics, Inc",
- [3]byte{0, 15, 180}: "Timespace Technology",
- [3]byte{0, 15, 181}: "NETGEAR",
- [3]byte{0, 15, 182}: "Europlex Technologies",
- [3]byte{0, 15, 183}: "Cavium",
- [3]byte{0, 15, 184}: "CallURL Inc.",
- [3]byte{0, 15, 185}: "Adaptive Instruments",
- [3]byte{0, 15, 186}: "Tevebox AB",
- [3]byte{0, 15, 187}: "Nokia Siemens Networks GmbH & Co. KG.",
- [3]byte{0, 15, 188}: "Onkey Technologies, Inc.",
- [3]byte{0, 15, 189}: "MRV Communications (Networks) LTD",
- [3]byte{0, 15, 190}: "e-w/you Inc.",
- [3]byte{0, 15, 191}: "DGT Sp. z o.o.",
- [3]byte{0, 15, 192}: "DELCOMp",
- [3]byte{0, 15, 193}: "WAVE Corporation",
- [3]byte{0, 15, 194}: "Uniwell Corporation",
- [3]byte{0, 15, 195}: "PalmPalm Technology, Inc.",
- [3]byte{0, 15, 196}: "NST co.,LTD.",
- [3]byte{0, 15, 197}: "KeyMed Ltd",
- [3]byte{0, 15, 198}: "Eurocom Industries A/S",
- [3]byte{0, 15, 199}: "Dionica R&D Ltd.",
- [3]byte{0, 15, 200}: "Chantry Networks",
- [3]byte{0, 15, 201}: "Allnet GmbH",
- [3]byte{0, 15, 202}: "A-JIN TECHLINE CO, LTD",
- [3]byte{0, 15, 203}: "3Com Ltd",
- [3]byte{0, 15, 204}: "ARRIS Group, Inc.",
- [3]byte{0, 15, 205}: "Nortel Networks",
- [3]byte{0, 15, 206}: "Kikusui Electronics Corp.",
- [3]byte{0, 15, 207}: "DataWind Research",
- [3]byte{0, 15, 208}: "ASTRI",
- [3]byte{0, 15, 209}: "Applied Wireless Identifications Group, Inc.",
- [3]byte{0, 15, 210}: "EWA Technologies, Inc.",
- [3]byte{0, 15, 211}: "Digium",
- [3]byte{0, 15, 212}: "Soundcraft",
- [3]byte{0, 15, 213}: "Schwechat - RISE",
- [3]byte{0, 15, 214}: "Sarotech Co., Ltd",
- [3]byte{0, 15, 215}: "Harman Music Group",
- [3]byte{0, 15, 216}: "Force, Inc.",
- [3]byte{0, 15, 217}: "FlexDSL Telecommunications AG",
- [3]byte{0, 15, 218}: "YAZAKI CORPORATION",
- [3]byte{0, 15, 219}: "Westell Technologies Inc.",
- [3]byte{0, 15, 220}: "Ueda Japan Radio Co., Ltd.",
- [3]byte{0, 15, 221}: "SORDIN AB",
- [3]byte{0, 15, 222}: "Sony Mobile Communications AB",
- [3]byte{0, 15, 223}: "SOLOMON Technology Corp.",
- [3]byte{0, 15, 224}: "NComputing Co.,Ltd.",
- [3]byte{0, 15, 225}: "ID DIGITAL CORPORATION",
- [3]byte{0, 15, 226}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{0, 15, 227}: "Damm Cellular Systems A/S",
- [3]byte{0, 15, 228}: "Pantech Co.,Ltd",
- [3]byte{0, 15, 229}: "MERCURY SECURITY CORPORATION",
- [3]byte{0, 15, 230}: "MBTech Systems, Inc.",
- [3]byte{0, 15, 231}: "Lutron Electronics Co., Inc.",
- [3]byte{0, 15, 232}: "Lobos, Inc.",
- [3]byte{0, 15, 233}: "GW TECHNOLOGIES CO.,LTD.",
- [3]byte{0, 15, 234}: "Giga-Byte Technology Co.,LTD.",
- [3]byte{0, 15, 235}: "Cylon Controls",
- [3]byte{0, 15, 236}: "ARKUS Inc.",
- [3]byte{0, 15, 237}: "Anam Electronics Co., Ltd",
- [3]byte{0, 15, 238}: "XTec, Incorporated",
- [3]byte{0, 15, 239}: "Thales e-Transactions GmbH",
- [3]byte{0, 15, 240}: "Sunray Co. Ltd.",
- [3]byte{0, 15, 241}: "nex-G Systems Pte.Ltd",
- [3]byte{0, 15, 242}: "Loud Technologies Inc.",
- [3]byte{0, 15, 243}: "Jung Myoung Communications&Technology",
- [3]byte{0, 15, 244}: "Guntermann & Drunck GmbH",
- [3]byte{0, 15, 245}: "GN&S company",
- [3]byte{0, 15, 246}: "DARFON LIGHTING CORP",
- [3]byte{0, 15, 247}: "Cisco Systems, Inc",
- [3]byte{0, 15, 248}: "Cisco Systems, Inc",
- [3]byte{0, 15, 249}: "Valcretec, Inc.",
- [3]byte{0, 15, 250}: "Optinel Systems, Inc.",
- [3]byte{0, 15, 251}: "Nippon Denso Industry Co., Ltd.",
- [3]byte{0, 15, 252}: "Merit Li-Lin Ent.",
- [3]byte{0, 15, 253}: "Glorytek Network Inc.",
- [3]byte{0, 15, 254}: "G-PRO COMPUTER",
- [3]byte{0, 15, 255}: "Control4",
- [3]byte{0, 16, 0}: "CABLE TELEVISION LABORATORIES, INC.",
- [3]byte{0, 16, 1}: "Citel",
- [3]byte{0, 16, 2}: "ACTIA",
- [3]byte{0, 16, 3}: "IMATRON, INC.",
- [3]byte{0, 16, 4}: "THE BRANTLEY COILE COMPANY,INC",
- [3]byte{0, 16, 5}: "UEC COMMERCIAL",
- [3]byte{0, 16, 6}: "Thales Contact Solutions Ltd.",
- [3]byte{0, 16, 7}: "Cisco Systems, Inc",
- [3]byte{0, 16, 8}: "VIENNA SYSTEMS CORPORATION",
- [3]byte{0, 16, 9}: "HORANET",
- [3]byte{0, 16, 10}: "WILLIAMS COMMUNICATIONS GROUP",
- [3]byte{0, 16, 11}: "Cisco Systems, Inc",
- [3]byte{0, 16, 12}: "ITO CO., LTD.",
- [3]byte{0, 16, 13}: "Cisco Systems, Inc",
- [3]byte{0, 16, 14}: "MICRO LINEAR COPORATION",
- [3]byte{0, 16, 15}: "INDUSTRIAL CPU SYSTEMS",
- [3]byte{0, 16, 16}: "INITIO CORPORATION",
- [3]byte{0, 16, 17}: "Cisco Systems, Inc",
- [3]byte{0, 16, 18}: "PROCESSOR SYSTEMS (I) PVT LTD",
- [3]byte{0, 16, 19}: "Kontron America, Inc.",
- [3]byte{0, 16, 20}: "Cisco Systems, Inc",
- [3]byte{0, 16, 21}: "OOmon Inc.",
- [3]byte{0, 16, 22}: "T.SQWARE",
- [3]byte{0, 16, 23}: "Bosch Access Systems GmbH",
- [3]byte{0, 16, 24}: "Broadcom",
- [3]byte{0, 16, 25}: "SIRONA DENTAL SYSTEMS GmbH & Co. KG",
- [3]byte{0, 16, 26}: "PictureTel Corp.",
- [3]byte{0, 16, 27}: "CORNET TECHNOLOGY, INC.",
- [3]byte{0, 16, 28}: "OHM TECHNOLOGIES INTL, LLC",
- [3]byte{0, 16, 29}: "WINBOND ELECTRONICS CORP.",
- [3]byte{0, 16, 30}: "MATSUSHITA ELECTRONIC INSTRUMENTS CORP.",
- [3]byte{0, 16, 31}: "Cisco Systems, Inc",
- [3]byte{0, 16, 32}: "Hand Held Products Inc",
- [3]byte{0, 16, 33}: "ENCANTO NETWORKS, INC.",
- [3]byte{0, 16, 34}: "SatCom Media Corporation",
- [3]byte{0, 16, 35}: "Network Equipment Technologies",
- [3]byte{0, 16, 36}: "NAGOYA ELECTRIC WORKS CO., LTD",
- [3]byte{0, 16, 37}: "Grayhill, Inc",
- [3]byte{0, 16, 38}: "ACCELERATED NETWORKS, INC.",
- [3]byte{0, 16, 39}: "L-3 COMMUNICATIONS EAST",
- [3]byte{0, 16, 40}: "COMPUTER TECHNICA, INC.",
- [3]byte{0, 16, 41}: "Cisco Systems, Inc",
- [3]byte{0, 16, 42}: "ZF MICROSYSTEMS, INC.",
- [3]byte{0, 16, 43}: "UMAX DATA SYSTEMS, INC.",
- [3]byte{0, 16, 44}: "Lasat Networks A/S",
- [3]byte{0, 16, 45}: "HITACHI SOFTWARE ENGINEERING",
- [3]byte{0, 16, 46}: "NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD.",
- [3]byte{0, 16, 47}: "Cisco Systems, Inc",
- [3]byte{0, 16, 48}: "EION Inc.",
- [3]byte{0, 16, 49}: "OBJECTIVE COMMUNICATIONS, INC.",
- [3]byte{0, 16, 50}: "ALTA TECHNOLOGY",
- [3]byte{0, 16, 51}: "ACCESSLAN COMMUNICATIONS, INC.",
- [3]byte{0, 16, 52}: "GNP Computers",
- [3]byte{0, 16, 53}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 16, 54}: "INTER-TEL INTEGRATED SYSTEMS",
- [3]byte{0, 16, 55}: "CYQ've Technology Co., Ltd.",
- [3]byte{0, 16, 56}: "MICRO RESEARCH INSTITUTE, INC.",
- [3]byte{0, 16, 57}: "Vectron Systems AG",
- [3]byte{0, 16, 58}: "DIAMOND NETWORK TECH",
- [3]byte{0, 16, 59}: "HIPPI NETWORKING FORUM",
- [3]byte{0, 16, 60}: "IC ENSEMBLE, INC.",
- [3]byte{0, 16, 61}: "PHASECOM, LTD.",
- [3]byte{0, 16, 62}: "NETSCHOOLS CORPORATION",
- [3]byte{0, 16, 63}: "TOLLGRADE COMMUNICATIONS, INC.",
- [3]byte{0, 16, 64}: "INTERMEC CORPORATION",
- [3]byte{0, 16, 65}: "BRISTOL BABCOCK, INC.",
- [3]byte{0, 16, 66}: "Alacritech, Inc.",
- [3]byte{0, 16, 67}: "A2 CORPORATION",
- [3]byte{0, 16, 68}: "InnoLabs Corporation",
- [3]byte{0, 16, 69}: "Nortel Networks",
- [3]byte{0, 16, 70}: "ALCORN MCBRIDE INC.",
- [3]byte{0, 16, 71}: "ECHO ELETRIC CO. LTD.",
- [3]byte{0, 16, 72}: "HTRC AUTOMATION, INC.",
- [3]byte{0, 16, 73}: "ShoreTel, Inc",
- [3]byte{0, 16, 74}: "The Parvus Corporation",
- [3]byte{0, 16, 75}: "3COM CORPORATION",
- [3]byte{0, 16, 76}: "Teledyne LeCroy, Inc",
- [3]byte{0, 16, 77}: "SURTEC INDUSTRIES, INC.",
- [3]byte{0, 16, 78}: "CEOLOGIC",
- [3]byte{0, 16, 79}: "Oracle Corporation",
- [3]byte{0, 16, 80}: "RION CO., LTD.",
- [3]byte{0, 16, 81}: "CMICRO CORPORATION",
- [3]byte{0, 16, 82}: "METTLER-TOLEDO (ALBSTADT) GMBH",
- [3]byte{0, 16, 83}: "COMPUTER TECHNOLOGY CORP.",
- [3]byte{0, 16, 84}: "Cisco Systems, Inc",
- [3]byte{0, 16, 85}: "FUJITSU MICROELECTRONICS, INC.",
- [3]byte{0, 16, 86}: "SODICK CO., LTD.",
- [3]byte{0, 16, 87}: "Rebel.com, Inc.",
- [3]byte{0, 16, 88}: "ArrowPoint Communications",
- [3]byte{0, 16, 89}: "DIABLO RESEARCH CO. LLC",
- [3]byte{0, 16, 90}: "3COM CORPORATION",
- [3]byte{0, 16, 91}: "NET INSIGHT AB",
- [3]byte{0, 16, 92}: "QUANTUM DESIGNS (H.K.) LTD.",
- [3]byte{0, 16, 93}: "Draeger Medical",
- [3]byte{0, 16, 94}: "Spirent plc, Service Assurance Broadband",
- [3]byte{0, 16, 95}: "ZODIAC DATA SYSTEMS",
- [3]byte{0, 16, 96}: "BILLIONTON SYSTEMS, INC.",
- [3]byte{0, 16, 97}: "HOSTLINK CORP.",
- [3]byte{0, 16, 98}: "NX SERVER, ILNC.",
- [3]byte{0, 16, 99}: "STARGUIDE DIGITAL NETWORKS",
- [3]byte{0, 16, 100}: "DNPG, LLC",
- [3]byte{0, 16, 101}: "RADYNE CORPORATION",
- [3]byte{0, 16, 102}: "ADVANCED CONTROL SYSTEMS, INC.",
- [3]byte{0, 16, 103}: "Ericsson",
- [3]byte{0, 16, 104}: "COMOS TELECOM",
- [3]byte{0, 16, 105}: "HELIOSS COMMUNICATIONS, INC.",
- [3]byte{0, 16, 106}: "DIGITAL MICROWAVE CORPORATION",
- [3]byte{0, 16, 107}: "SONUS NETWORKS, INC.",
- [3]byte{0, 16, 108}: "EDNT GmbH",
- [3]byte{0, 16, 109}: "Axxcelera Broadband Wireless",
- [3]byte{0, 16, 110}: "TADIRAN COM. LTD.",
- [3]byte{0, 16, 111}: "TRENTON TECHNOLOGY INC.",
- [3]byte{0, 16, 112}: "CARADON TREND LTD.",
- [3]byte{0, 16, 113}: "ADVANET INC.",
- [3]byte{0, 16, 114}: "GVN TECHNOLOGIES, INC.",
- [3]byte{0, 16, 115}: "TECHNOBOX, INC.",
- [3]byte{0, 16, 116}: "ATEN INTERNATIONAL CO., LTD.",
- [3]byte{0, 16, 117}: "Segate Technology LLC",
- [3]byte{0, 16, 118}: "EUREM GmbH",
- [3]byte{0, 16, 119}: "SAF DRIVE SYSTEMS, LTD.",
- [3]byte{0, 16, 120}: "NUERA COMMUNICATIONS, INC.",
- [3]byte{0, 16, 121}: "Cisco Systems, Inc",
- [3]byte{0, 16, 122}: "AmbiCom, Inc.",
- [3]byte{0, 16, 123}: "Cisco Systems, Inc",
- [3]byte{0, 16, 124}: "P-COM, INC.",
- [3]byte{0, 16, 125}: "AURORA COMMUNICATIONS, LTD.",
- [3]byte{0, 16, 126}: "BACHMANN ELECTRONIC GmbH",
- [3]byte{0, 16, 127}: "CRESTRON ELECTRONICS, INC.",
- [3]byte{0, 16, 128}: "METAWAVE COMMUNICATIONS",
- [3]byte{0, 16, 129}: "DPS, INC.",
- [3]byte{0, 16, 130}: "JNA TELECOMMUNICATIONS LIMITED",
- [3]byte{0, 16, 131}: "Hewlett Packard",
- [3]byte{0, 16, 132}: "K-BOT COMMUNICATIONS",
- [3]byte{0, 16, 133}: "POLARIS COMMUNICATIONS, INC.",
- [3]byte{0, 16, 134}: "ATTO Technology, Inc.",
- [3]byte{0, 16, 135}: "XSTREAMIS PLC",
- [3]byte{0, 16, 136}: "AMERICAN NETWORKS INC.",
- [3]byte{0, 16, 137}: "WebSonic",
- [3]byte{0, 16, 138}: "TeraLogic, Inc.",
- [3]byte{0, 16, 139}: "LASERANIMATION SOLLINGER GMBH",
- [3]byte{0, 16, 140}: "Fujitsu Services Ltd",
- [3]byte{0, 16, 141}: "Johnson Controls, Inc.",
- [3]byte{0, 16, 142}: "HUGH SYMONS CONCEPT Technologies Ltd.",
- [3]byte{0, 16, 143}: "RAPTOR SYSTEMS",
- [3]byte{0, 16, 144}: "CIMETRICS, INC.",
- [3]byte{0, 16, 145}: "NO WIRES NEEDED BV",
- [3]byte{0, 16, 146}: "NETCORE INC.",
- [3]byte{0, 16, 147}: "CMS COMPUTERS, LTD.",
- [3]byte{0, 16, 148}: "Performance Analysis Broadband, Spirent plc",
- [3]byte{0, 16, 149}: "Thomson Inc.",
- [3]byte{0, 16, 150}: "TRACEWELL SYSTEMS, INC.",
- [3]byte{0, 16, 151}: "WinNet Metropolitan Communications Systems, Inc.",
- [3]byte{0, 16, 152}: "STARNET TECHNOLOGIES, INC.",
- [3]byte{0, 16, 153}: "InnoMedia, Inc.",
- [3]byte{0, 16, 154}: "NETLINE",
- [3]byte{0, 16, 155}: "Emulex Corporation",
- [3]byte{0, 16, 156}: "M-SYSTEM CO., LTD.",
- [3]byte{0, 16, 157}: "CLARINET SYSTEMS, INC.",
- [3]byte{0, 16, 158}: "AWARE, INC.",
- [3]byte{0, 16, 159}: "PAVO, INC.",
- [3]byte{0, 16, 160}: "INNOVEX TECHNOLOGIES, INC.",
- [3]byte{0, 16, 161}: "KENDIN SEMICONDUCTOR, INC.",
- [3]byte{0, 16, 162}: "TNS",
- [3]byte{0, 16, 163}: "OMNITRONIX, INC.",
- [3]byte{0, 16, 164}: "XIRCOM",
- [3]byte{0, 16, 165}: "OXFORD INSTRUMENTS",
- [3]byte{0, 16, 166}: "Cisco Systems, Inc",
- [3]byte{0, 16, 167}: "UNEX TECHNOLOGY CORPORATION",
- [3]byte{0, 16, 168}: "RELIANCE COMPUTER CORP.",
- [3]byte{0, 16, 169}: "ADHOC TECHNOLOGIES",
- [3]byte{0, 16, 170}: "MEDIA4, INC.",
- [3]byte{0, 16, 171}: "KOITO ELECTRIC INDUSTRIES, LTD.",
- [3]byte{0, 16, 172}: "IMCI TECHNOLOGIES",
- [3]byte{0, 16, 173}: "SOFTRONICS USB, INC.",
- [3]byte{0, 16, 174}: "SHINKO ELECTRIC INDUSTRIES CO.",
- [3]byte{0, 16, 175}: "TAC SYSTEMS, INC.",
- [3]byte{0, 16, 176}: "MERIDIAN TECHNOLOGY CORP.",
- [3]byte{0, 16, 177}: "FOR-A CO., LTD.",
- [3]byte{0, 16, 178}: "COACTIVE AESTHETICS",
- [3]byte{0, 16, 179}: "NOKIA MULTIMEDIA TERMINALS",
- [3]byte{0, 16, 180}: "ATMOSPHERE NETWORKS",
- [3]byte{0, 16, 181}: "Accton Technology Corp",
- [3]byte{0, 16, 182}: "ENTRATA COMMUNICATIONS CORP.",
- [3]byte{0, 16, 183}: "COYOTE TECHNOLOGIES, LLC",
- [3]byte{0, 16, 184}: "ISHIGAKI COMPUTER SYSTEM CO.",
- [3]byte{0, 16, 185}: "MAXTOR CORP.",
- [3]byte{0, 16, 186}: "MARTINHO-DAVIS SYSTEMS, INC.",
- [3]byte{0, 16, 187}: "DATA & INFORMATION TECHNOLOGY",
- [3]byte{0, 16, 188}: "Aastra Telecom",
- [3]byte{0, 16, 189}: "THE TELECOMMUNICATION TECHNOLOGY COMMITTEE (TTC)",
- [3]byte{0, 16, 190}: "MARCH NETWORKS CORPORATION",
- [3]byte{0, 16, 191}: "InterAir Wireless",
- [3]byte{0, 16, 192}: "ARMA, Inc.",
- [3]byte{0, 16, 193}: "OI ELECTRIC CO.,LTD",
- [3]byte{0, 16, 194}: "WILLNET, INC.",
- [3]byte{0, 16, 195}: "CSI-CONTROL SYSTEMS",
- [3]byte{0, 16, 196}: "MEDIA GLOBAL LINKS CO., LTD.",
- [3]byte{0, 16, 197}: "PROTOCOL TECHNOLOGIES, INC.",
- [3]byte{0, 16, 198}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{0, 16, 199}: "DATA TRANSMISSION NETWORK",
- [3]byte{0, 16, 200}: "COMMUNICATIONS ELECTRONICS SECURITY GROUP",
- [3]byte{0, 16, 201}: "MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO.",
- [3]byte{0, 16, 202}: "Telco Systems, Inc.",
- [3]byte{0, 16, 203}: "FACIT K.K.",
- [3]byte{0, 16, 204}: "CLP COMPUTER LOGISTIK PLANUNG GmbH",
- [3]byte{0, 16, 205}: "INTERFACE CONCEPT",
- [3]byte{0, 16, 206}: "VOLAMP, LTD.",
- [3]byte{0, 16, 207}: "FIBERLANE COMMUNICATIONS",
- [3]byte{0, 16, 208}: "WITCOM, LTD.",
- [3]byte{0, 16, 209}: "Top Layer Networks, Inc.",
- [3]byte{0, 16, 210}: "NITTO TSUSHINKI CO., LTD",
- [3]byte{0, 16, 211}: "GRIPS ELECTRONIC GMBH",
- [3]byte{0, 16, 212}: "STORAGE COMPUTER CORPORATION",
- [3]byte{0, 16, 213}: "IMASDE CANARIAS, S.A.",
- [3]byte{0, 16, 214}: "Exelis",
- [3]byte{0, 16, 215}: "ARGOSY RESEARCH INC.",
- [3]byte{0, 16, 216}: "CALISTA",
- [3]byte{0, 16, 217}: "IBM JAPAN, FUJISAWA MT+D",
- [3]byte{0, 16, 218}: "Kollmorgen Corp",
- [3]byte{0, 16, 219}: "Juniper Networks",
- [3]byte{0, 16, 220}: "MICRO-STAR INTERNATIONAL CO., LTD.",
- [3]byte{0, 16, 221}: "ENABLE SEMICONDUCTOR, INC.",
- [3]byte{0, 16, 222}: "INTERNATIONAL DATACASTING CORPORATION",
- [3]byte{0, 16, 223}: "RISE COMPUTER INC.",
- [3]byte{0, 16, 224}: "Oracle Corporation",
- [3]byte{0, 16, 225}: "S.I. TECH, INC.",
- [3]byte{0, 16, 226}: "ArrayComm, Inc.",
- [3]byte{0, 16, 227}: "Hewlett Packard",
- [3]byte{0, 16, 228}: "NSI CORPORATION",
- [3]byte{0, 16, 229}: "SOLECTRON TEXAS",
- [3]byte{0, 16, 230}: "APPLIED INTELLIGENT SYSTEMS, INC.",
- [3]byte{0, 16, 231}: "Breezecom, Ltd.",
- [3]byte{0, 16, 232}: "TELOCITY, INCORPORATED",
- [3]byte{0, 16, 233}: "RAIDTEC LTD.",
- [3]byte{0, 16, 234}: "ADEPT TECHNOLOGY",
- [3]byte{0, 16, 235}: "SELSIUS SYSTEMS, INC.",
- [3]byte{0, 16, 236}: "RPCG, LLC",
- [3]byte{0, 16, 237}: "SUNDANCE TECHNOLOGY, INC.",
- [3]byte{0, 16, 238}: "CTI PRODUCTS, INC.",
- [3]byte{0, 16, 239}: "DBTEL INCORPORATED",
- [3]byte{0, 16, 240}: "RITTAL-WERK RUDOLF LOH GmbH & Co.",
- [3]byte{0, 16, 241}: "I-O CORPORATION",
- [3]byte{0, 16, 242}: "ANTEC",
- [3]byte{0, 16, 243}: "Nexcom International Co., Ltd.",
- [3]byte{0, 16, 244}: "Vertical Communications",
- [3]byte{0, 16, 245}: "AMHERST SYSTEMS, INC.",
- [3]byte{0, 16, 246}: "Cisco Systems, Inc",
- [3]byte{0, 16, 247}: "IRIICHI TECHNOLOGIES Inc.",
- [3]byte{0, 16, 248}: "TEXIO TECHNOLOGY CORPORATION",
- [3]byte{0, 16, 249}: "UNIQUE SYSTEMS, INC.",
- [3]byte{0, 16, 250}: "Apple, Inc.",
- [3]byte{0, 16, 251}: "ZIDA TECHNOLOGIES LIMITED",
- [3]byte{0, 16, 252}: "BROADBAND NETWORKS, INC.",
- [3]byte{0, 16, 253}: "COCOM A/S",
- [3]byte{0, 16, 254}: "DIGITAL EQUIPMENT CORPORATION",
- [3]byte{0, 16, 255}: "Cisco Systems, Inc",
- [3]byte{0, 17, 0}: "Schneider Electric",
- [3]byte{0, 17, 1}: "CET Technologies Pte Ltd",
- [3]byte{0, 17, 2}: "Aurora Multimedia Corp.",
- [3]byte{0, 17, 3}: "kawamura electric inc.",
- [3]byte{0, 17, 4}: "TELEXY",
- [3]byte{0, 17, 5}: "Sunplus Technology Co., Ltd.",
- [3]byte{0, 17, 6}: "Siemens NV (Belgium)",
- [3]byte{0, 17, 7}: "RGB Networks Inc.",
- [3]byte{0, 17, 8}: "Orbital Data Corporation",
- [3]byte{0, 17, 9}: "Micro-Star International",
- [3]byte{0, 17, 10}: "Hewlett Packard",
- [3]byte{0, 17, 11}: "Franklin Technology Systems",
- [3]byte{0, 17, 12}: "Atmark Techno, Inc.",
- [3]byte{0, 17, 13}: "SANBlaze Technology, Inc.",
- [3]byte{0, 17, 14}: "Tsurusaki Sealand Transportation Co. Ltd.",
- [3]byte{0, 17, 15}: "netplat,Inc.",
- [3]byte{0, 17, 16}: "Maxanna Technology Co., Ltd.",
- [3]byte{0, 17, 17}: "Intel Corporation",
- [3]byte{0, 17, 18}: "Honeywell CMSS",
- [3]byte{0, 17, 19}: "Fraunhofer FOKUS",
- [3]byte{0, 17, 20}: "EverFocus Electronics Corp.",
- [3]byte{0, 17, 21}: "EPIN Technologies, Inc.",
- [3]byte{0, 17, 22}: "COTEAU VERT CO., LTD.",
- [3]byte{0, 17, 23}: "CESNET",
- [3]byte{0, 17, 24}: "BLX IC Design Corp., Ltd.",
- [3]byte{0, 17, 25}: "Solteras, Inc.",
- [3]byte{0, 17, 26}: "ARRIS Group, Inc.",
- [3]byte{0, 17, 27}: "Targa Systems Div L-3 Communications",
- [3]byte{0, 17, 28}: "Pleora Technologies Inc.",
- [3]byte{0, 17, 29}: "Hectrix Limited",
- [3]byte{0, 17, 30}: "EPSG (Ethernet Powerlink Standardization Group)",
- [3]byte{0, 17, 31}: "Doremi Labs, Inc.",
- [3]byte{0, 17, 32}: "Cisco Systems, Inc",
- [3]byte{0, 17, 33}: "Cisco Systems, Inc",
- [3]byte{0, 17, 34}: "CIMSYS Inc",
- [3]byte{0, 17, 35}: "Appointech, Inc.",
- [3]byte{0, 17, 36}: "Apple, Inc.",
- [3]byte{0, 17, 37}: "IBM Corp",
- [3]byte{0, 17, 38}: "Venstar Inc.",
- [3]byte{0, 17, 39}: "TASI, Inc",
- [3]byte{0, 17, 40}: "Streamit",
- [3]byte{0, 17, 41}: "Paradise Datacom Ltd.",
- [3]byte{0, 17, 42}: "Niko NV",
- [3]byte{0, 17, 43}: "NetModule AG",
- [3]byte{0, 17, 44}: "IZT GmbH",
- [3]byte{0, 17, 45}: "iPulse Systems",
- [3]byte{0, 17, 46}: "CEICOM",
- [3]byte{0, 17, 47}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 17, 48}: "Allied Telesis (Hong Kong) Ltd.",
- [3]byte{0, 17, 49}: "UNATECH. CO.,LTD",
- [3]byte{0, 17, 50}: "Synology Incorporated",
- [3]byte{0, 17, 51}: "Siemens Austria SIMEA",
- [3]byte{0, 17, 52}: "MediaCell, Inc.",
- [3]byte{0, 17, 53}: "Grandeye Ltd",
- [3]byte{0, 17, 54}: "Goodrich Sensor Systems",
- [3]byte{0, 17, 55}: "AICHI ELECTRIC CO., LTD.",
- [3]byte{0, 17, 56}: "TAISHIN CO., LTD.",
- [3]byte{0, 17, 57}: "STOEBER ANTRIEBSTECHNIK GmbH + Co. KG.",
- [3]byte{0, 17, 58}: "SHINBORAM",
- [3]byte{0, 17, 59}: "Micronet Communications Inc.",
- [3]byte{0, 17, 60}: "Micronas GmbH",
- [3]byte{0, 17, 61}: "KN SOLTEC CO.,LTD.",
- [3]byte{0, 17, 62}: "JL Corporation",
- [3]byte{0, 17, 63}: "Alcatel DI",
- [3]byte{0, 17, 64}: "Nanometrics Inc.",
- [3]byte{0, 17, 65}: "GoodMan Corporation",
- [3]byte{0, 17, 66}: "e-SMARTCOM INC.",
- [3]byte{0, 17, 67}: "Dell Inc.",
- [3]byte{0, 17, 68}: "Assurance Technology Corp",
- [3]byte{0, 17, 69}: "ValuePoint Networks",
- [3]byte{0, 17, 70}: "Telecard-Pribor Ltd",
- [3]byte{0, 17, 71}: "Secom-Industry co.LTD.",
- [3]byte{0, 17, 72}: "Prolon Control Systems",
- [3]byte{0, 17, 73}: "Proliphix Inc.",
- [3]byte{0, 17, 74}: "KAYABA INDUSTRY Co,.Ltd.",
- [3]byte{0, 17, 75}: "Francotyp-Postalia GmbH",
- [3]byte{0, 17, 76}: "caffeina applied research ltd.",
- [3]byte{0, 17, 77}: "Atsumi Electric Co.,LTD.",
- [3]byte{0, 17, 78}: "690885 Ontario Inc.",
- [3]byte{0, 17, 79}: "US Digital Television, Inc",
- [3]byte{0, 17, 80}: "Belkin Corporation",
- [3]byte{0, 17, 81}: "Mykotronx",
- [3]byte{0, 17, 82}: "Eidsvoll Electronics AS",
- [3]byte{0, 17, 83}: "Trident Tek, Inc.",
- [3]byte{0, 17, 84}: "Webpro Technologies Inc.",
- [3]byte{0, 17, 85}: "Sevis Systems",
- [3]byte{0, 17, 86}: "Pharos Systems NZ",
- [3]byte{0, 17, 87}: "Oki Electric Industry Co., Ltd.",
- [3]byte{0, 17, 88}: "Nortel Networks",
- [3]byte{0, 17, 89}: "MATISSE NETWORKS INC",
- [3]byte{0, 17, 90}: "Ivoclar Vivadent AG",
- [3]byte{0, 17, 91}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 17, 92}: "Cisco Systems, Inc",
- [3]byte{0, 17, 93}: "Cisco Systems, Inc",
- [3]byte{0, 17, 94}: "ProMinent Dosiertechnik GmbH",
- [3]byte{0, 17, 95}: "ITX Security Co., Ltd.",
- [3]byte{0, 17, 96}: "ARTDIO Company Co., LTD",
- [3]byte{0, 17, 97}: "NetStreams, LLC",
- [3]byte{0, 17, 98}: "STAR MICRONICS CO.,LTD.",
- [3]byte{0, 17, 99}: "SYSTEM SPA DEPT. ELECTRONICS",
- [3]byte{0, 17, 100}: "ACARD Technology Corp.",
- [3]byte{0, 17, 101}: "ZNYX Networks, Inc.",
- [3]byte{0, 17, 102}: "Taelim Electronics Co., Ltd.",
- [3]byte{0, 17, 103}: "Integrated System Solution Corp.",
- [3]byte{0, 17, 104}: "HomeLogic LLC",
- [3]byte{0, 17, 105}: "EMS Satcom",
- [3]byte{0, 17, 106}: "Domo Ltd",
- [3]byte{0, 17, 107}: "Digital Data Communications Asia Co.,Ltd",
- [3]byte{0, 17, 108}: "Nanwang Multimedia Inc.,Ltd",
- [3]byte{0, 17, 109}: "American Time and Signal",
- [3]byte{0, 17, 110}: "Peplink International Ltd.",
- [3]byte{0, 17, 111}: "Netforyou Co., LTD.",
- [3]byte{0, 17, 112}: "GSC SRL",
- [3]byte{0, 17, 113}: "DEXTER Communications, Inc.",
- [3]byte{0, 17, 114}: "COTRON CORPORATION",
- [3]byte{0, 17, 115}: "SMART Storage Systems",
- [3]byte{0, 17, 116}: "Mojo Networks, Inc.",
- [3]byte{0, 17, 117}: "Intel Corporation",
- [3]byte{0, 17, 118}: "Intellambda Systems, Inc.",
- [3]byte{0, 17, 119}: "Coaxial Networks, Inc.",
- [3]byte{0, 17, 120}: "Chiron Technology Ltd",
- [3]byte{0, 17, 121}: "Singular Technology Co. Ltd.",
- [3]byte{0, 17, 122}: "Singim International Corp.",
- [3]byte{0, 17, 123}: "Büchi Labortechnik AG",
- [3]byte{0, 17, 124}: "e-zy.net",
- [3]byte{0, 17, 125}: "ZMD America, Inc.",
- [3]byte{0, 17, 126}: "Midmark Corp",
- [3]byte{0, 17, 127}: "Neotune Information Technology Corporation,.LTD",
- [3]byte{0, 17, 128}: "ARRIS Group, Inc.",
- [3]byte{0, 17, 129}: "InterEnergy Co.Ltd,",
- [3]byte{0, 17, 130}: "IMI Norgren Ltd",
- [3]byte{0, 17, 131}: "Datalogic ADC, Inc.",
- [3]byte{0, 17, 132}: "Humo Laboratory,Ltd.",
- [3]byte{0, 17, 133}: "Hewlett Packard",
- [3]byte{0, 17, 134}: "Prime Systems, Inc.",
- [3]byte{0, 17, 135}: "Category Solutions, Inc",
- [3]byte{0, 17, 136}: "Enterasys",
- [3]byte{0, 17, 137}: "Aerotech Inc",
- [3]byte{0, 17, 138}: "Viewtran Technology Limited",
- [3]byte{0, 17, 139}: "Alcatel-Lucent Enterprise",
- [3]byte{0, 17, 140}: "Missouri Department of Transportation",
- [3]byte{0, 17, 141}: "Hanchang System Corp.",
- [3]byte{0, 17, 142}: "Halytech Mace",
- [3]byte{0, 17, 143}: "EUTECH INSTRUMENTS PTE. LTD.",
- [3]byte{0, 17, 144}: "Digital Design Corporation",
- [3]byte{0, 17, 145}: "CTS-Clima Temperatur Systeme GmbH",
- [3]byte{0, 17, 146}: "Cisco Systems, Inc",
- [3]byte{0, 17, 147}: "Cisco Systems, Inc",
- [3]byte{0, 17, 148}: "Chi Mei Communication Systems, Inc.",
- [3]byte{0, 17, 149}: "D-Link Corporation",
- [3]byte{0, 17, 150}: "Actuality Systems, Inc.",
- [3]byte{0, 17, 151}: "Monitoring Technologies Limited",
- [3]byte{0, 17, 152}: "Prism Media Products Limited",
- [3]byte{0, 17, 153}: "2wcom Systems GmbH",
- [3]byte{0, 17, 154}: "Alkeria srl",
- [3]byte{0, 17, 155}: "Telesynergy Research Inc.",
- [3]byte{0, 17, 156}: "EP&T Energy",
- [3]byte{0, 17, 157}: "Diginfo Technology Corporation",
- [3]byte{0, 17, 158}: "Solectron Brazil",
- [3]byte{0, 17, 159}: "Nokia Danmark A/S",
- [3]byte{0, 17, 160}: "Vtech Engineering Canada Ltd",
- [3]byte{0, 17, 161}: "VISION NETWARE CO.,LTD",
- [3]byte{0, 17, 162}: "Manufacturing Technology Inc",
- [3]byte{0, 17, 163}: "LanReady Technologies Inc.",
- [3]byte{0, 17, 164}: "JStream Technologies Inc.",
- [3]byte{0, 17, 165}: "Fortuna Electronic Corp.",
- [3]byte{0, 17, 166}: "Sypixx Networks",
- [3]byte{0, 17, 167}: "Infilco Degremont Inc.",
- [3]byte{0, 17, 168}: "Quest Technologies",
- [3]byte{0, 17, 169}: "MOIMSTONE Co., LTD",
- [3]byte{0, 17, 170}: "Uniclass Technology, Co., LTD",
- [3]byte{0, 17, 171}: "TRUSTABLE TECHNOLOGY CO.,LTD.",
- [3]byte{0, 17, 172}: "Simtec Electronics",
- [3]byte{0, 17, 173}: "Shanghai Ruijie Technology",
- [3]byte{0, 17, 174}: "ARRIS Group, Inc.",
- [3]byte{0, 17, 175}: "Medialink-i,Inc",
- [3]byte{0, 17, 176}: "Fortelink Inc.",
- [3]byte{0, 17, 177}: "BlueExpert Technology Corp.",
- [3]byte{0, 17, 178}: "2001 Technology Inc.",
- [3]byte{0, 17, 179}: "YOSHIMIYA CO.,LTD.",
- [3]byte{0, 17, 180}: "Westermo Teleindustri AB",
- [3]byte{0, 17, 181}: "Shenzhen Powercom Co.,Ltd",
- [3]byte{0, 17, 182}: "Open Systems International",
- [3]byte{0, 17, 183}: "Octalix B.V.",
- [3]byte{0, 17, 184}: "Liebherr - Elektronik GmbH",
- [3]byte{0, 17, 185}: "Inner Range Pty. Ltd.",
- [3]byte{0, 17, 186}: "Elexol Pty Ltd",
- [3]byte{0, 17, 187}: "Cisco Systems, Inc",
- [3]byte{0, 17, 188}: "Cisco Systems, Inc",
- [3]byte{0, 17, 189}: "Bombardier Transportation",
- [3]byte{0, 17, 190}: "AGP Telecom Co. Ltd",
- [3]byte{0, 17, 191}: "AESYS S.p.A.",
- [3]byte{0, 17, 192}: "Aday Technology Inc",
- [3]byte{0, 17, 193}: "4P MOBILE DATA PROCESSING",
- [3]byte{0, 17, 194}: "United Fiber Optic Communication",
- [3]byte{0, 17, 195}: "Transceiving System Technology Corporation",
- [3]byte{0, 17, 196}: "Terminales de Telecomunicacion Terrestre, S.L.",
- [3]byte{0, 17, 197}: "TEN Technology",
- [3]byte{0, 17, 198}: "Seagate Technology",
- [3]byte{0, 17, 199}: "Raymarine UK Ltd",
- [3]byte{0, 17, 200}: "Powercom Co., Ltd.",
- [3]byte{0, 17, 201}: "MTT Corporation",
- [3]byte{0, 17, 202}: "Long Range Systems, Inc.",
- [3]byte{0, 17, 203}: "Jacobsons AB",
- [3]byte{0, 17, 204}: "Guangzhou Jinpeng Group Co.,Ltd.",
- [3]byte{0, 17, 205}: "Axsun Technologies",
- [3]byte{0, 17, 206}: "Ubisense Limited",
- [3]byte{0, 17, 207}: "Thrane & Thrane A/S",
- [3]byte{0, 17, 208}: "Tandberg Data ASA",
- [3]byte{0, 17, 209}: "Soft Imaging System GmbH",
- [3]byte{0, 17, 210}: "Perception Digital Ltd",
- [3]byte{0, 17, 211}: "NextGenTel Holding ASA",
- [3]byte{0, 17, 212}: "NetEnrich, Inc",
- [3]byte{0, 17, 213}: "Hangzhou Sunyard System Engineering Co.,Ltd.",
- [3]byte{0, 17, 214}: "HandEra, Inc.",
- [3]byte{0, 17, 215}: "eWerks Inc",
- [3]byte{0, 17, 216}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 17, 217}: "TiVo",
- [3]byte{0, 17, 218}: "Vivaas Technology Inc.",
- [3]byte{0, 17, 219}: "Land-Cellular Corporation",
- [3]byte{0, 17, 220}: "Glunz & Jensen",
- [3]byte{0, 17, 221}: "FROMUS TEC. Co., Ltd.",
- [3]byte{0, 17, 222}: "EURILOGIC",
- [3]byte{0, 17, 223}: "Current Energy",
- [3]byte{0, 17, 224}: "U-MEDIA Communications, Inc.",
- [3]byte{0, 17, 225}: "Arcelik A.S",
- [3]byte{0, 17, 226}: "Hua Jung Components Co., Ltd.",
- [3]byte{0, 17, 227}: "Thomson, Inc.",
- [3]byte{0, 17, 228}: "Danelec Electronics A/S",
- [3]byte{0, 17, 229}: "KCodes Corporation",
- [3]byte{0, 17, 230}: "Scientific Atlanta",
- [3]byte{0, 17, 231}: "WORLDSAT - Texas de France",
- [3]byte{0, 17, 232}: "Tixi.Com",
- [3]byte{0, 17, 233}: "STARNEX CO., LTD.",
- [3]byte{0, 17, 234}: "IWICS Inc.",
- [3]byte{0, 17, 235}: "Innovative Integration",
- [3]byte{0, 17, 236}: "AVIX INC.",
- [3]byte{0, 17, 237}: "802 Global",
- [3]byte{0, 17, 238}: "Estari, Inc.",
- [3]byte{0, 17, 239}: "Conitec Datensysteme GmbH",
- [3]byte{0, 17, 240}: "Wideful Limited",
- [3]byte{0, 17, 241}: "QinetiQ Ltd",
- [3]byte{0, 17, 242}: "Institute of Network Technologies",
- [3]byte{0, 17, 243}: "NeoMedia Europe AG",
- [3]byte{0, 17, 244}: "woori-net",
- [3]byte{0, 17, 245}: "ASKEY COMPUTER CORP",
- [3]byte{0, 17, 246}: "Asia Pacific Microsystems , Inc.",
- [3]byte{0, 17, 247}: "Shenzhen Forward Industry Co., Ltd",
- [3]byte{0, 17, 248}: "AIRAYA Corp",
- [3]byte{0, 17, 249}: "Nortel Networks",
- [3]byte{0, 17, 250}: "Rane Corporation",
- [3]byte{0, 17, 251}: "Heidelberg Engineering GmbH",
- [3]byte{0, 17, 252}: "HARTING Electronics GmbH",
- [3]byte{0, 17, 253}: "KORG INC.",
- [3]byte{0, 17, 254}: "Keiyo System Research, Inc.",
- [3]byte{0, 17, 255}: "Digitro Tecnologia Ltda",
- [3]byte{0, 18, 0}: "Cisco Systems, Inc",
- [3]byte{0, 18, 1}: "Cisco Systems, Inc",
- [3]byte{0, 18, 2}: "Decrane Aerospace - Audio International Inc.",
- [3]byte{0, 18, 3}: "ActivNetworks",
- [3]byte{0, 18, 4}: "u10 Networks, Inc.",
- [3]byte{0, 18, 5}: "Terrasat Communications, Inc.",
- [3]byte{0, 18, 6}: "iQuest (NZ) Ltd",
- [3]byte{0, 18, 7}: "Head Strong International Limited",
- [3]byte{0, 18, 8}: "Gantner Instruments GmbH",
- [3]byte{0, 18, 9}: "Fastrax Ltd",
- [3]byte{0, 18, 10}: "Emerson Climate Technologies GmbH",
- [3]byte{0, 18, 11}: "Chinasys Technologies Limited",
- [3]byte{0, 18, 12}: "CE-Infosys Pte Ltd",
- [3]byte{0, 18, 13}: "Advanced Telecommunication Technologies, Inc.",
- [3]byte{0, 18, 14}: "AboCom",
- [3]byte{0, 18, 15}: "IEEE 802.3",
- [3]byte{0, 18, 16}: "WideRay Corp",
- [3]byte{0, 18, 17}: "Protechna Herbst GmbH & Co. KG",
- [3]byte{0, 18, 18}: "PLUS Corporation",
- [3]byte{0, 18, 19}: "Metrohm AG",
- [3]byte{0, 18, 20}: "Koenig & Bauer AG",
- [3]byte{0, 18, 21}: "iStor Networks, Inc.",
- [3]byte{0, 18, 22}: "ICP Internet Communication Payment AG",
- [3]byte{0, 18, 23}: "Cisco-Linksys, LLC",
- [3]byte{0, 18, 24}: "ARUZE Corporation",
- [3]byte{0, 18, 25}: "General Datacomm LLC",
- [3]byte{0, 18, 26}: "Techno Soft Systemnics Inc.",
- [3]byte{0, 18, 27}: "Sound Devices, LLC",
- [3]byte{0, 18, 28}: "PARROT SA",
- [3]byte{0, 18, 29}: "Netfabric Corporation",
- [3]byte{0, 18, 30}: "Juniper Networks",
- [3]byte{0, 18, 31}: "Harding Instruments",
- [3]byte{0, 18, 32}: "Cadco Systems",
- [3]byte{0, 18, 33}: "B.Braun Melsungen AG",
- [3]byte{0, 18, 34}: "Skardin (UK) Ltd",
- [3]byte{0, 18, 35}: "Pixim",
- [3]byte{0, 18, 36}: "NexQL Corporation",
- [3]byte{0, 18, 37}: "ARRIS Group, Inc.",
- [3]byte{0, 18, 38}: "Japan Direx Corporation",
- [3]byte{0, 18, 39}: "Franklin Electric Co., Inc.",
- [3]byte{0, 18, 40}: "Data Ltd.",
- [3]byte{0, 18, 41}: "BroadEasy Technologies Co.,Ltd",
- [3]byte{0, 18, 42}: "VTech Telecommunications Ltd.",
- [3]byte{0, 18, 43}: "Virbiage Pty Ltd",
- [3]byte{0, 18, 44}: "Soenen Controls N.V.",
- [3]byte{0, 18, 45}: "SiNett Corporation",
- [3]byte{0, 18, 46}: "Signal Technology - AISD",
- [3]byte{0, 18, 47}: "Sanei Electric Inc.",
- [3]byte{0, 18, 48}: "Picaso Infocommunication CO., LTD.",
- [3]byte{0, 18, 49}: "Motion Control Systems, Inc.",
- [3]byte{0, 18, 50}: "LeWiz Communications Inc.",
- [3]byte{0, 18, 51}: "JRC TOKKI Co.,Ltd.",
- [3]byte{0, 18, 52}: "Camille Bauer",
- [3]byte{0, 18, 53}: "Andrew Corporation",
- [3]byte{0, 18, 54}: "ConSentry Networks",
- [3]byte{0, 18, 55}: "Texas Instruments",
- [3]byte{0, 18, 56}: "SetaBox Technology Co., Ltd.",
- [3]byte{0, 18, 57}: "S Net Systems Inc.",
- [3]byte{0, 18, 58}: "Posystech Inc., Co.",
- [3]byte{0, 18, 59}: "KeRo Systems ApS",
- [3]byte{0, 18, 60}: "Second Rule LLC",
- [3]byte{0, 18, 61}: "GES Co, Ltd",
- [3]byte{0, 18, 62}: "ERUNE technology Co., Ltd.",
- [3]byte{0, 18, 63}: "Dell Inc.",
- [3]byte{0, 18, 64}: "AMOI ELECTRONICS CO.,LTD",
- [3]byte{0, 18, 65}: "a2i marketing center",
- [3]byte{0, 18, 66}: "Millennial Net",
- [3]byte{0, 18, 67}: "Cisco Systems, Inc",
- [3]byte{0, 18, 68}: "Cisco Systems, Inc",
- [3]byte{0, 18, 69}: "Zellweger Analytics, Inc.",
- [3]byte{0, 18, 70}: "T.O.M TECHNOLOGY INC..",
- [3]byte{0, 18, 71}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 18, 72}: "Dell EMC",
- [3]byte{0, 18, 73}: "Delta Elettronica S.p.A.",
- [3]byte{0, 18, 74}: "Dedicated Devices, Inc.",
- [3]byte{0, 18, 75}: "Texas Instruments",
- [3]byte{0, 18, 76}: "BBWM Corporation",
- [3]byte{0, 18, 77}: "Inducon BV",
- [3]byte{0, 18, 78}: "XAC AUTOMATION CORP.",
- [3]byte{0, 18, 79}: "Pentair Thermal Management",
- [3]byte{0, 18, 80}: "Tokyo Aircaft Instrument Co., Ltd.",
- [3]byte{0, 18, 81}: "SILINK",
- [3]byte{0, 18, 82}: "Citronix, LLC",
- [3]byte{0, 18, 83}: "AudioDev AB",
- [3]byte{0, 18, 84}: "Spectra Technologies Holdings Company Ltd",
- [3]byte{0, 18, 85}: "NetEffect Incorporated",
- [3]byte{0, 18, 86}: "LG INFORMATION & COMM.",
- [3]byte{0, 18, 87}: "LeapComm Communication Technologies Inc.",
- [3]byte{0, 18, 88}: "Activis Polska",
- [3]byte{0, 18, 89}: "THERMO ELECTRON KARLSRUHE",
- [3]byte{0, 18, 90}: "Microsoft Corporation",
- [3]byte{0, 18, 91}: "KAIMEI ELECTRONI",
- [3]byte{0, 18, 92}: "Green Hills Software, Inc.",
- [3]byte{0, 18, 93}: "CyberNet Inc.",
- [3]byte{0, 18, 94}: "CAEN",
- [3]byte{0, 18, 95}: "AWIND Inc.",
- [3]byte{0, 18, 96}: "Stanton Magnetics,inc.",
- [3]byte{0, 18, 97}: "Adaptix, Inc",
- [3]byte{0, 18, 98}: "Nokia Danmark A/S",
- [3]byte{0, 18, 99}: "Data Voice Technologies GmbH",
- [3]byte{0, 18, 100}: "daum electronic gmbh",
- [3]byte{0, 18, 101}: "Enerdyne Technologies, Inc.",
- [3]byte{0, 18, 102}: "Swisscom Hospitality Services SA",
- [3]byte{0, 18, 103}: "Panasonic Corporation",
- [3]byte{0, 18, 104}: "IPS d.o.o.",
- [3]byte{0, 18, 105}: "Value Electronics",
- [3]byte{0, 18, 106}: "OPTOELECTRONICS Co., Ltd.",
- [3]byte{0, 18, 107}: "Ascalade Communications Limited",
- [3]byte{0, 18, 108}: "Visonic Technologies 1993 Ltd.",
- [3]byte{0, 18, 109}: "University of California, Berkeley",
- [3]byte{0, 18, 110}: "Seidel Elektronik GmbH Nfg.KG",
- [3]byte{0, 18, 111}: "Rayson Technology Co., Ltd.",
- [3]byte{0, 18, 112}: "NGES Denro Systems",
- [3]byte{0, 18, 113}: "Measurement Computing Corp",
- [3]byte{0, 18, 114}: "Redux Communications Ltd.",
- [3]byte{0, 18, 115}: "Stoke Inc",
- [3]byte{0, 18, 116}: "NIT lab",
- [3]byte{0, 18, 117}: "Sentilla Corporation",
- [3]byte{0, 18, 118}: "CG Power Systems Ireland Limited",
- [3]byte{0, 18, 119}: "Korenix Technologies Co., Ltd.",
- [3]byte{0, 18, 120}: "International Bar Code",
- [3]byte{0, 18, 121}: "Hewlett Packard",
- [3]byte{0, 18, 122}: "Sanyu Industry Co.,Ltd.",
- [3]byte{0, 18, 123}: "VIA Networking Technologies, Inc.",
- [3]byte{0, 18, 124}: "SWEGON AB",
- [3]byte{0, 18, 125}: "MobileAria",
- [3]byte{0, 18, 126}: "Digital Lifestyles Group, Inc.",
- [3]byte{0, 18, 127}: "Cisco Systems, Inc",
- [3]byte{0, 18, 128}: "Cisco Systems, Inc",
- [3]byte{0, 18, 129}: "March Networks S.p.A.",
- [3]byte{0, 18, 130}: "Qovia",
- [3]byte{0, 18, 131}: "Nortel Networks",
- [3]byte{0, 18, 132}: "Lab33 Srl",
- [3]byte{0, 18, 133}: "Gizmondo Europe Ltd",
- [3]byte{0, 18, 134}: "ENDEVCO CORP",
- [3]byte{0, 18, 135}: "Digital Everywhere Unterhaltungselektronik GmbH",
- [3]byte{0, 18, 136}: "2Wire Inc",
- [3]byte{0, 18, 137}: "Advance Sterilization Products",
- [3]byte{0, 18, 138}: "ARRIS Group, Inc.",
- [3]byte{0, 18, 139}: "Sensory Networks Inc",
- [3]byte{0, 18, 140}: "Woodward Governor",
- [3]byte{0, 18, 141}: "STB Datenservice GmbH",
- [3]byte{0, 18, 142}: "Q-Free ASA",
- [3]byte{0, 18, 143}: "Montilio",
- [3]byte{0, 18, 144}: "KYOWA Electric & Machinery Corp.",
- [3]byte{0, 18, 145}: "KWS Computersysteme GmbH",
- [3]byte{0, 18, 146}: "Griffin Technology",
- [3]byte{0, 18, 147}: "GE Energy",
- [3]byte{0, 18, 148}: "SUMITOMO ELECTRIC DEVICE INNOVATIONS, INC",
- [3]byte{0, 18, 149}: "Aiware Inc.",
- [3]byte{0, 18, 150}: "Addlogix",
- [3]byte{0, 18, 151}: "O2Micro, Inc.",
- [3]byte{0, 18, 152}: "MICO ELECTRIC(SHENZHEN) LIMITED",
- [3]byte{0, 18, 153}: "Ktech Telecommunications Inc",
- [3]byte{0, 18, 154}: "IRT Electronics Pty Ltd",
- [3]byte{0, 18, 155}: "E2S Electronic Engineering Solutions, S.L.",
- [3]byte{0, 18, 156}: "Yulinet",
- [3]byte{0, 18, 157}: "First International Computer do Brasil",
- [3]byte{0, 18, 158}: "Surf Communications Inc.",
- [3]byte{0, 18, 159}: "RAE Systems",
- [3]byte{0, 18, 160}: "NeoMeridian Sdn Bhd",
- [3]byte{0, 18, 161}: "BluePacket Communications Co., Ltd.",
- [3]byte{0, 18, 162}: "VITA",
- [3]byte{0, 18, 163}: "Trust International B.V.",
- [3]byte{0, 18, 164}: "ThingMagic, LLC",
- [3]byte{0, 18, 165}: "Stargen, Inc.",
- [3]byte{0, 18, 166}: "Dolby Australia",
- [3]byte{0, 18, 167}: "ISR TECHNOLOGIES Inc",
- [3]byte{0, 18, 168}: "intec GmbH",
- [3]byte{0, 18, 169}: "3Com Ltd",
- [3]byte{0, 18, 170}: "IEE, Inc.",
- [3]byte{0, 18, 171}: "WiLife, Inc.",
- [3]byte{0, 18, 172}: "ONTIMETEK INC.",
- [3]byte{0, 18, 173}: "IDS GmbH",
- [3]byte{0, 18, 174}: "HLS HARD-LINE Solutions Inc.",
- [3]byte{0, 18, 175}: "ELPRO Technologies",
- [3]byte{0, 18, 176}: "Efore Oyj (Plc)",
- [3]byte{0, 18, 177}: "Dai Nippon Printing Co., Ltd",
- [3]byte{0, 18, 178}: "AVOLITES LTD.",
- [3]byte{0, 18, 179}: "Advance Wireless Technology Corp.",
- [3]byte{0, 18, 180}: "Work Microwave GmbH",
- [3]byte{0, 18, 181}: "Vialta, Inc.",
- [3]byte{0, 18, 182}: "Santa Barbara Infrared, Inc.",
- [3]byte{0, 18, 183}: "PTW Freiburg",
- [3]byte{0, 18, 184}: "G2 Microsystems",
- [3]byte{0, 18, 185}: "Fusion Digital Technology",
- [3]byte{0, 18, 186}: "FSI Systems, Inc.",
- [3]byte{0, 18, 187}: "Telecommunications Industry Association TR-41 Committee",
- [3]byte{0, 18, 188}: "Echolab LLC",
- [3]byte{0, 18, 189}: "Avantec Manufacturing Limited",
- [3]byte{0, 18, 190}: "Astek Corporation",
- [3]byte{0, 18, 191}: "Arcadyan Technology Corporation",
- [3]byte{0, 18, 192}: "HotLava Systems, Inc.",
- [3]byte{0, 18, 193}: "Check Point Software Technologies",
- [3]byte{0, 18, 194}: "Apex Electronics Factory",
- [3]byte{0, 18, 195}: "WIT S.A.",
- [3]byte{0, 18, 196}: "Viseon, Inc.",
- [3]byte{0, 18, 197}: "V-Show Technology (China) Co.,Ltd",
- [3]byte{0, 18, 198}: "TGC America, Inc",
- [3]byte{0, 18, 199}: "SECURAY Technologies Ltd.Co.",
- [3]byte{0, 18, 200}: "Perfect tech",
- [3]byte{0, 18, 201}: "ARRIS Group, Inc.",
- [3]byte{0, 18, 202}: "Mechatronic Brick Aps",
- [3]byte{0, 18, 203}: "CSS Inc.",
- [3]byte{0, 18, 204}: "Bitatek CO., LTD",
- [3]byte{0, 18, 205}: "ASEM SpA",
- [3]byte{0, 18, 206}: "Advanced Cybernetics Group",
- [3]byte{0, 18, 207}: "Accton Technology Corp",
- [3]byte{0, 18, 208}: "Gossen-Metrawatt-GmbH",
- [3]byte{0, 18, 209}: "Texas Instruments",
- [3]byte{0, 18, 210}: "Texas Instruments",
- [3]byte{0, 18, 211}: "Zetta Systems, Inc.",
- [3]byte{0, 18, 212}: "Princeton Technology, Ltd",
- [3]byte{0, 18, 213}: "Motion Reality Inc.",
- [3]byte{0, 18, 214}: "Jiangsu Yitong High-Tech Co.,Ltd",
- [3]byte{0, 18, 215}: "Invento Networks, Inc.",
- [3]byte{0, 18, 216}: "International Games System Co., Ltd.",
- [3]byte{0, 18, 217}: "Cisco Systems, Inc",
- [3]byte{0, 18, 218}: "Cisco Systems, Inc",
- [3]byte{0, 18, 219}: "ZIEHL industrie-elektronik GmbH + Co KG",
- [3]byte{0, 18, 220}: "SunCorp Industrial Limited",
- [3]byte{0, 18, 221}: "Shengqu Information Technology (Shanghai) Co., Ltd.",
- [3]byte{0, 18, 222}: "Radio Components Sweden AB",
- [3]byte{0, 18, 223}: "Novomatic AG",
- [3]byte{0, 18, 224}: "Codan Limited",
- [3]byte{0, 18, 225}: "Alliant Networks, Inc",
- [3]byte{0, 18, 226}: "ALAXALA Networks Corporation",
- [3]byte{0, 18, 227}: "Agat-RT, Ltd.",
- [3]byte{0, 18, 228}: "ZIEHL industrie-electronik GmbH + Co KG",
- [3]byte{0, 18, 229}: "Time America, Inc.",
- [3]byte{0, 18, 230}: "SPECTEC COMPUTER CO., LTD.",
- [3]byte{0, 18, 231}: "Projectek Networking Electronics Corp.",
- [3]byte{0, 18, 232}: "Fraunhofer IMS",
- [3]byte{0, 18, 233}: "Abbey Systems Ltd",
- [3]byte{0, 18, 234}: "Trane",
- [3]byte{0, 18, 235}: "PDH Solutions, LLC",
- [3]byte{0, 18, 236}: "Movacolor b.v.",
- [3]byte{0, 18, 237}: "AVG Advanced Technologies",
- [3]byte{0, 18, 238}: "Sony Mobile Communications AB",
- [3]byte{0, 18, 239}: "OneAccess SA",
- [3]byte{0, 18, 240}: "Intel Corporate",
- [3]byte{0, 18, 241}: "IFOTEC",
- [3]byte{0, 18, 242}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 18, 243}: "connectBlue AB",
- [3]byte{0, 18, 244}: "Belco International Co.,Ltd.",
- [3]byte{0, 18, 245}: "Imarda New Zealand Limited",
- [3]byte{0, 18, 246}: "MDK CO.,LTD.",
- [3]byte{0, 18, 247}: "Xiamen Xinglian Electronics Co., Ltd.",
- [3]byte{0, 18, 248}: "WNI Resources, LLC",
- [3]byte{0, 18, 249}: "URYU SEISAKU, LTD.",
- [3]byte{0, 18, 250}: "THX LTD",
- [3]byte{0, 18, 251}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 18, 252}: "PLANET System Co.,LTD",
- [3]byte{0, 18, 253}: "OPTIMUS IC S.A.",
- [3]byte{0, 18, 254}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{0, 18, 255}: "Lely Industries N.V.",
- [3]byte{0, 19, 0}: "IT-FACTORY, INC.",
- [3]byte{0, 19, 1}: "IronGate S.L.",
- [3]byte{0, 19, 2}: "Intel Corporate",
- [3]byte{0, 19, 3}: "GateConnect",
- [3]byte{0, 19, 4}: "Flaircomm Technologies Co. LTD",
- [3]byte{0, 19, 5}: "Epicom, Inc.",
- [3]byte{0, 19, 6}: "Always On Wireless",
- [3]byte{0, 19, 7}: "Paravirtual Corporation",
- [3]byte{0, 19, 8}: "Nuvera Fuel Cells",
- [3]byte{0, 19, 9}: "Ocean Broadband Networks",
- [3]byte{0, 19, 10}: "Nortel Networks",
- [3]byte{0, 19, 11}: "Mextal B.V.",
- [3]byte{0, 19, 12}: "HF System Corporation",
- [3]byte{0, 19, 13}: "GALILEO AVIONICA",
- [3]byte{0, 19, 14}: "Focusrite Audio Engineering Limited",
- [3]byte{0, 19, 15}: "EGEMEN Bilgisayar Muh San ve Tic LTD STI",
- [3]byte{0, 19, 16}: "Cisco-Linksys, LLC",
- [3]byte{0, 19, 17}: "ARRIS Group, Inc.",
- [3]byte{0, 19, 18}: "Amedia Networks Inc.",
- [3]byte{0, 19, 19}: "GuangZhou Post & Telecom Equipment ltd",
- [3]byte{0, 19, 20}: "Asiamajor Inc.",
- [3]byte{0, 19, 21}: "Sony Interactive Entertainment Inc.",
- [3]byte{0, 19, 22}: "L-S-B Broadcast Technologies GmbH",
- [3]byte{0, 19, 23}: "GN Netcom A/S",
- [3]byte{0, 19, 24}: "DGSTATION Co., Ltd.",
- [3]byte{0, 19, 25}: "Cisco Systems, Inc",
- [3]byte{0, 19, 26}: "Cisco Systems, Inc",
- [3]byte{0, 19, 27}: "BeCell Innovations Corp.",
- [3]byte{0, 19, 28}: "LiteTouch, Inc.",
- [3]byte{0, 19, 29}: "Scanvaegt International A/S",
- [3]byte{0, 19, 30}: "Peiker acustic GmbH & Co. KG",
- [3]byte{0, 19, 31}: "NxtPhase T&D, Corp.",
- [3]byte{0, 19, 32}: "Intel Corporate",
- [3]byte{0, 19, 33}: "Hewlett Packard",
- [3]byte{0, 19, 34}: "DAQ Electronics, Inc.",
- [3]byte{0, 19, 35}: "Cap Co., Ltd.",
- [3]byte{0, 19, 36}: "Schneider Electric Ultra Terminal",
- [3]byte{0, 19, 37}: "Cortina Systems Inc",
- [3]byte{0, 19, 38}: "ECM Systems Ltd",
- [3]byte{0, 19, 39}: "Data Acquisitions limited",
- [3]byte{0, 19, 40}: "Westech Korea Inc.,",
- [3]byte{0, 19, 41}: "VSST Co., LTD",
- [3]byte{0, 19, 42}: "Sitronics Telecom Solutions",
- [3]byte{0, 19, 43}: "Phoenix Digital",
- [3]byte{0, 19, 44}: "MAZ Brandenburg GmbH",
- [3]byte{0, 19, 45}: "iWise Communications",
- [3]byte{0, 19, 46}: "ITian Coporation",
- [3]byte{0, 19, 47}: "Interactek",
- [3]byte{0, 19, 48}: "EURO PROTECTION SURVEILLANCE",
- [3]byte{0, 19, 49}: "CellPoint Connect",
- [3]byte{0, 19, 50}: "Beijing Topsec Network Security Technology Co., Ltd.",
- [3]byte{0, 19, 51}: "BaudTec Corporation",
- [3]byte{0, 19, 52}: "Arkados, Inc.",
- [3]byte{0, 19, 53}: "VS Industry Berhad",
- [3]byte{0, 19, 54}: "Tianjin 712 Communication Broadcasting co., ltd.",
- [3]byte{0, 19, 55}: "Orient Power Home Network Ltd.",
- [3]byte{0, 19, 56}: "FRESENIUS-VIAL",
- [3]byte{0, 19, 57}: "CCV Deutschland GmbH",
- [3]byte{0, 19, 58}: "VadaTech Inc.",
- [3]byte{0, 19, 59}: "Speed Dragon Multimedia Limited",
- [3]byte{0, 19, 60}: "QUINTRON SYSTEMS INC.",
- [3]byte{0, 19, 61}: "Micro Memory Curtiss Wright Co",
- [3]byte{0, 19, 62}: "MetaSwitch",
- [3]byte{0, 19, 63}: "Eppendorf Instrumente GmbH",
- [3]byte{0, 19, 64}: "AD.EL s.r.l.",
- [3]byte{0, 19, 65}: "Shandong New Beiyang Information Technology Co.,Ltd",
- [3]byte{0, 19, 66}: "Vision Research, Inc.",
- [3]byte{0, 19, 67}: "Matsushita Electronic Components (Europe) GmbH",
- [3]byte{0, 19, 68}: "Fargo Electronics Inc.",
- [3]byte{0, 19, 69}: "Eaton Corporation",
- [3]byte{0, 19, 70}: "D-Link Corporation",
- [3]byte{0, 19, 71}: "Red Lion Controls, LP",
- [3]byte{0, 19, 72}: "Artila Electronics Co., Ltd.",
- [3]byte{0, 19, 73}: "Zyxel Communications Corporation",
- [3]byte{0, 19, 74}: "Engim, Inc.",
- [3]byte{0, 19, 75}: "ToGoldenNet Technology Inc.",
- [3]byte{0, 19, 76}: "YDT Technology International",
- [3]byte{0, 19, 77}: "Inepro BV",
- [3]byte{0, 19, 78}: "Valox Systems, Inc.",
- [3]byte{0, 19, 79}: "Tranzeo Wireless Technologies Inc.",
- [3]byte{0, 19, 80}: "Silver Spring Networks, Inc",
- [3]byte{0, 19, 81}: "Niles Audio Corporation",
- [3]byte{0, 19, 82}: "Naztec, Inc.",
- [3]byte{0, 19, 83}: "HYDAC Filtertechnik GMBH",
- [3]byte{0, 19, 84}: "Zcomax Technologies, Inc.",
- [3]byte{0, 19, 85}: "TOMEN Cyber-business Solutions, Inc.",
- [3]byte{0, 19, 86}: "FLIR Radiation Inc",
- [3]byte{0, 19, 87}: "Soyal Technology Co., Ltd.",
- [3]byte{0, 19, 88}: "Realm Systems, Inc.",
- [3]byte{0, 19, 89}: "ProTelevision Technologies A/S",
- [3]byte{0, 19, 90}: "Project T&E Limited",
- [3]byte{0, 19, 91}: "PanelLink Cinema, LLC",
- [3]byte{0, 19, 92}: "OnSite Systems, Inc.",
- [3]byte{0, 19, 93}: "NTTPC Communications, Inc.",
- [3]byte{0, 19, 94}: "EAB/RWI/K",
- [3]byte{0, 19, 95}: "Cisco Systems, Inc",
- [3]byte{0, 19, 96}: "Cisco Systems, Inc",
- [3]byte{0, 19, 97}: "Biospace Co., Ltd.",
- [3]byte{0, 19, 98}: "ShinHeung Precision Co., Ltd.",
- [3]byte{0, 19, 99}: "Verascape, Inc.",
- [3]byte{0, 19, 100}: "Paradigm Technology Inc..",
- [3]byte{0, 19, 101}: "Nortel Networks",
- [3]byte{0, 19, 102}: "Neturity Technologies Inc.",
- [3]byte{0, 19, 103}: "Narayon. Co., Ltd.",
- [3]byte{0, 19, 104}: "Saab Danmark A/S",
- [3]byte{0, 19, 105}: "Honda Electron Co., LED.",
- [3]byte{0, 19, 106}: "Hach Lange Sarl",
- [3]byte{0, 19, 107}: "E-TEC",
- [3]byte{0, 19, 108}: "TomTom",
- [3]byte{0, 19, 109}: "Tentaculus AB",
- [3]byte{0, 19, 110}: "Techmetro Corp.",
- [3]byte{0, 19, 111}: "PacketMotion, Inc.",
- [3]byte{0, 19, 112}: "Nokia Danmark A/S",
- [3]byte{0, 19, 113}: "ARRIS Group, Inc.",
- [3]byte{0, 19, 114}: "Dell Inc.",
- [3]byte{0, 19, 115}: "BLwave Electronics Co., Ltd",
- [3]byte{0, 19, 116}: "Atheros Communications, Inc.",
- [3]byte{0, 19, 117}: "American Security Products Co.",
- [3]byte{0, 19, 118}: "Tabor Electronics Ltd.",
- [3]byte{0, 19, 119}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 19, 120}: "Qsan Technology, Inc.",
- [3]byte{0, 19, 121}: "PONDER INFORMATION INDUSTRIES LTD.",
- [3]byte{0, 19, 122}: "Netvox Technology Co., Ltd.",
- [3]byte{0, 19, 123}: "Movon Corporation",
- [3]byte{0, 19, 124}: "Kaicom co., Ltd.",
- [3]byte{0, 19, 125}: "Dynalab, Inc.",
- [3]byte{0, 19, 126}: "CorEdge Networks, Inc.",
- [3]byte{0, 19, 127}: "Cisco Systems, Inc",
- [3]byte{0, 19, 128}: "Cisco Systems, Inc",
- [3]byte{0, 19, 129}: "CHIPS & Systems, Inc.",
- [3]byte{0, 19, 130}: "Cetacea Networks Corporation",
- [3]byte{0, 19, 131}: "Application Technologies and Engineering Research Laboratory",
- [3]byte{0, 19, 132}: "Advanced Motion Controls",
- [3]byte{0, 19, 133}: "Add-On Technology Co., LTD.",
- [3]byte{0, 19, 134}: "ABB Inc./Totalflow",
- [3]byte{0, 19, 135}: "27M Technologies AB",
- [3]byte{0, 19, 136}: "WiMedia Alliance",
- [3]byte{0, 19, 137}: "Redes de Telefonía Móvil S.A.",
- [3]byte{0, 19, 138}: "QINGDAO GOERTEK ELECTRONICS CO.,LTD.",
- [3]byte{0, 19, 139}: "Phantom Technologies LLC",
- [3]byte{0, 19, 140}: "Kumyoung.Co.Ltd",
- [3]byte{0, 19, 141}: "Kinghold",
- [3]byte{0, 19, 142}: "FOAB Elektronik AB",
- [3]byte{0, 19, 143}: "Asiarock Technology Limited",
- [3]byte{0, 19, 144}: "Termtek Computer Co., Ltd",
- [3]byte{0, 19, 145}: "OUEN CO.,LTD.",
- [3]byte{0, 19, 146}: "Ruckus Wireless",
- [3]byte{0, 19, 147}: "Panta Systems, Inc.",
- [3]byte{0, 19, 148}: "Infohand Co.,Ltd",
- [3]byte{0, 19, 149}: "congatec AG",
- [3]byte{0, 19, 150}: "Acbel Polytech Inc.",
- [3]byte{0, 19, 151}: "Oracle Corporation",
- [3]byte{0, 19, 152}: "TrafficSim Co.,Ltd",
- [3]byte{0, 19, 153}: "STAC Corporation.",
- [3]byte{0, 19, 154}: "K-ubique ID Corp.",
- [3]byte{0, 19, 155}: "ioIMAGE Ltd.",
- [3]byte{0, 19, 156}: "Exavera Technologies, Inc.",
- [3]byte{0, 19, 157}: "MaxLinear Hispania S.L.U.",
- [3]byte{0, 19, 158}: "Ciara Technologies Inc.",
- [3]byte{0, 19, 159}: "Electronics Design Services, Co., Ltd.",
- [3]byte{0, 19, 160}: "ALGOSYSTEM Co., Ltd.",
- [3]byte{0, 19, 161}: "Crow Electronic Engeneering",
- [3]byte{0, 19, 162}: "MaxStream, Inc",
- [3]byte{0, 19, 163}: "Siemens Com CPE Devices",
- [3]byte{0, 19, 164}: "KeyEye Communications",
- [3]byte{0, 19, 165}: "General Solutions, LTD.",
- [3]byte{0, 19, 166}: "Extricom Ltd",
- [3]byte{0, 19, 167}: "BATTELLE MEMORIAL INSTITUTE",
- [3]byte{0, 19, 168}: "Tanisys Technology",
- [3]byte{0, 19, 169}: "Sony Corporation",
- [3]byte{0, 19, 170}: "ALS & TEC Ltd.",
- [3]byte{0, 19, 171}: "Telemotive AG",
- [3]byte{0, 19, 172}: "Sunmyung Electronics Co., LTD",
- [3]byte{0, 19, 173}: "Sendo Ltd",
- [3]byte{0, 19, 174}: "Radiance Technologies, Inc.",
- [3]byte{0, 19, 175}: "NUMA Technology,Inc.",
- [3]byte{0, 19, 176}: "Jablotron",
- [3]byte{0, 19, 177}: "Intelligent Control Systems (Asia) Pte Ltd",
- [3]byte{0, 19, 178}: "Carallon Limited",
- [3]byte{0, 19, 179}: "Ecom Communications Technology Co., Ltd.",
- [3]byte{0, 19, 180}: "Appear TV",
- [3]byte{0, 19, 181}: "Wavesat",
- [3]byte{0, 19, 182}: "Sling Media, Inc.",
- [3]byte{0, 19, 183}: "Scantech ID",
- [3]byte{0, 19, 184}: "RyCo Electronic Systems Limited",
- [3]byte{0, 19, 185}: "BM SPA",
- [3]byte{0, 19, 186}: "ReadyLinks Inc",
- [3]byte{0, 19, 187}: "Smartvue Corporation",
- [3]byte{0, 19, 188}: "Artimi Ltd",
- [3]byte{0, 19, 189}: "HYMATOM SA",
- [3]byte{0, 19, 190}: "Virtual Conexions",
- [3]byte{0, 19, 191}: "Media System Planning Corp.",
- [3]byte{0, 19, 192}: "Trix Tecnologia Ltda.",
- [3]byte{0, 19, 193}: "Asoka USA Corporation",
- [3]byte{0, 19, 194}: "WACOM Co.,Ltd",
- [3]byte{0, 19, 195}: "Cisco Systems, Inc",
- [3]byte{0, 19, 196}: "Cisco Systems, Inc",
- [3]byte{0, 19, 197}: "LIGHTRON FIBER-OPTIC DEVICES INC.",
- [3]byte{0, 19, 198}: "OpenGear, Inc",
- [3]byte{0, 19, 199}: "IONOS Co.,Ltd.",
- [3]byte{0, 19, 200}: "ADB Broadband Italia",
- [3]byte{0, 19, 201}: "Beyond Achieve Enterprises Ltd.",
- [3]byte{0, 19, 202}: "Pico Digital",
- [3]byte{0, 19, 203}: "Zenitel Norway AS",
- [3]byte{0, 19, 204}: "Tall Maple Systems",
- [3]byte{0, 19, 205}: "MTI co. LTD",
- [3]byte{0, 19, 206}: "Intel Corporate",
- [3]byte{0, 19, 207}: "4Access Communications",
- [3]byte{0, 19, 208}: "t+ Medical Ltd",
- [3]byte{0, 19, 209}: "KIRK telecom A/S",
- [3]byte{0, 19, 210}: "PAGE IBERICA, S.A.",
- [3]byte{0, 19, 211}: "MICRO-STAR INTERNATIONAL CO., LTD.",
- [3]byte{0, 19, 212}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 19, 213}: "RuggedCom",
- [3]byte{0, 19, 214}: "TII NETWORK TECHNOLOGIES, INC.",
- [3]byte{0, 19, 215}: "SPIDCOM Technologies SA",
- [3]byte{0, 19, 216}: "Princeton Instruments",
- [3]byte{0, 19, 217}: "Matrix Product Development, Inc.",
- [3]byte{0, 19, 218}: "Diskware Co., Ltd",
- [3]byte{0, 19, 219}: "SHOEI Electric Co.,Ltd",
- [3]byte{0, 19, 220}: "IBTEK INC.",
- [3]byte{0, 19, 221}: "Abbott Diagnostics",
- [3]byte{0, 19, 222}: "Adapt4, LLC",
- [3]byte{0, 19, 223}: "Ryvor Corp.",
- [3]byte{0, 19, 224}: "Murata Manufacturing Co., Ltd.",
- [3]byte{0, 19, 225}: "Iprobe AB",
- [3]byte{0, 19, 226}: "GeoVision Inc.",
- [3]byte{0, 19, 227}: "CoVi Technologies, Inc.",
- [3]byte{0, 19, 228}: "YANGJAE SYSTEMS CORP.",
- [3]byte{0, 19, 229}: "TENOSYS, INC.",
- [3]byte{0, 19, 230}: "Technolution",
- [3]byte{0, 19, 231}: "Halcro",
- [3]byte{0, 19, 232}: "Intel Corporate",
- [3]byte{0, 19, 233}: "VeriWave, Inc.",
- [3]byte{0, 19, 234}: "Kamstrup A/S",
- [3]byte{0, 19, 235}: "Sysmaster Corporation",
- [3]byte{0, 19, 236}: "Netsnapper Technologies SARL",
- [3]byte{0, 19, 237}: "PSIA",
- [3]byte{0, 19, 238}: "JBX Designs Inc.",
- [3]byte{0, 19, 239}: "Kingjon Digital Technology Co.,Ltd",
- [3]byte{0, 19, 240}: "Wavefront Semiconductor",
- [3]byte{0, 19, 241}: "AMOD Technology Co., Ltd.",
- [3]byte{0, 19, 242}: "Klas Ltd",
- [3]byte{0, 19, 243}: "Giga-byte Communications Inc.",
- [3]byte{0, 19, 244}: "Psitek (Pty) Ltd",
- [3]byte{0, 19, 245}: "Akimbi Systems",
- [3]byte{0, 19, 246}: "Cintech",
- [3]byte{0, 19, 247}: "SMC Networks, Inc.",
- [3]byte{0, 19, 248}: "Dex Security Solutions",
- [3]byte{0, 19, 249}: "Cavera Systems",
- [3]byte{0, 19, 250}: "LifeSize Communications, Inc",
- [3]byte{0, 19, 251}: "RKC INSTRUMENT INC.",
- [3]byte{0, 19, 252}: "SiCortex, Inc",
- [3]byte{0, 19, 253}: "Nokia Danmark A/S",
- [3]byte{0, 19, 254}: "GRANDTEC ELECTRONIC CORP.",
- [3]byte{0, 19, 255}: "Dage-MTI of MC, Inc.",
- [3]byte{0, 20, 0}: "MINERVA KOREA CO., LTD",
- [3]byte{0, 20, 1}: "Rivertree Networks Corp.",
- [3]byte{0, 20, 2}: "kk-electronic a/s",
- [3]byte{0, 20, 3}: "Renasis, LLC",
- [3]byte{0, 20, 4}: "ARRIS Group, Inc.",
- [3]byte{0, 20, 5}: "OpenIB, Inc.",
- [3]byte{0, 20, 6}: "Go Networks",
- [3]byte{0, 20, 7}: "Sperian Protection Instrumentation",
- [3]byte{0, 20, 8}: "Eka Systems Inc.",
- [3]byte{0, 20, 9}: "MAGNETI MARELLI S.E. S.p.A.",
- [3]byte{0, 20, 10}: "WEPIO Co., Ltd.",
- [3]byte{0, 20, 11}: "FIRST INTERNATIONAL COMPUTER, INC.",
- [3]byte{0, 20, 12}: "GKB CCTV CO., LTD.",
- [3]byte{0, 20, 13}: "Nortel Networks",
- [3]byte{0, 20, 14}: "Nortel Networks",
- [3]byte{0, 20, 15}: "Federal State Unitary Enterprise Leningrad R&D Institute of",
- [3]byte{0, 20, 16}: "Suzhou Keda Technology CO.,Ltd",
- [3]byte{0, 20, 17}: "Deutschmann Automation GmbH & Co. KG",
- [3]byte{0, 20, 18}: "S-TEC electronics AG",
- [3]byte{0, 20, 19}: "Trebing & Himstedt Prozeßautomation GmbH & Co. KG",
- [3]byte{0, 20, 20}: "Jumpnode Systems LLC.",
- [3]byte{0, 20, 21}: "Intec Automation inc.",
- [3]byte{0, 20, 22}: "Scosche Industries, Inc.",
- [3]byte{0, 20, 23}: "RSE Informations Technologie GmbH",
- [3]byte{0, 20, 24}: "C4Line",
- [3]byte{0, 20, 25}: "SIDSA",
- [3]byte{0, 20, 26}: "DEICY CORPORATION",
- [3]byte{0, 20, 27}: "Cisco Systems, Inc",
- [3]byte{0, 20, 28}: "Cisco Systems, Inc",
- [3]byte{0, 20, 29}: "LTi DRIVES GmbH",
- [3]byte{0, 20, 30}: "P.A. Semi, Inc.",
- [3]byte{0, 20, 31}: "SunKwang Electronics Co., Ltd",
- [3]byte{0, 20, 32}: "G-Links networking company",
- [3]byte{0, 20, 33}: "Total Wireless Technologies Pte. Ltd.",
- [3]byte{0, 20, 34}: "Dell Inc.",
- [3]byte{0, 20, 35}: "J-S Co. NEUROCOM",
- [3]byte{0, 20, 36}: "Merry Electrics CO., LTD.",
- [3]byte{0, 20, 37}: "Galactic Computing Corp.",
- [3]byte{0, 20, 38}: "NL Technology",
- [3]byte{0, 20, 39}: "JazzMutant",
- [3]byte{0, 20, 40}: "Vocollect Inc",
- [3]byte{0, 20, 41}: "V Center Technologies Co., Ltd.",
- [3]byte{0, 20, 42}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 20, 43}: "Edata Communication Inc.",
- [3]byte{0, 20, 44}: "Koncept International, Inc.",
- [3]byte{0, 20, 45}: "Toradex AG",
- [3]byte{0, 20, 46}: "77 Elektronika Kft.",
- [3]byte{0, 20, 47}: "Savvius",
- [3]byte{0, 20, 48}: "ViPowER, Inc",
- [3]byte{0, 20, 49}: "PDL Electronics Ltd",
- [3]byte{0, 20, 50}: "Tarallax Wireless, Inc.",
- [3]byte{0, 20, 51}: "Empower Technologies(Canada) Inc.",
- [3]byte{0, 20, 52}: "Keri Systems, Inc",
- [3]byte{0, 20, 53}: "CityCom Corp.",
- [3]byte{0, 20, 54}: "Qwerty Elektronik AB",
- [3]byte{0, 20, 55}: "GSTeletech Co.,Ltd.",
- [3]byte{0, 20, 56}: "Hewlett Packard Enterprise",
- [3]byte{0, 20, 57}: "Blonder Tongue Laboratories, Inc",
- [3]byte{0, 20, 58}: "RAYTALK INTERNATIONAL SRL",
- [3]byte{0, 20, 59}: "Sensovation AG",
- [3]byte{0, 20, 60}: "Rheinmetall Canada Inc.",
- [3]byte{0, 20, 61}: "Aevoe Inc.",
- [3]byte{0, 20, 62}: "AirLink Communications, Inc.",
- [3]byte{0, 20, 63}: "Hotway Technology Corporation",
- [3]byte{0, 20, 64}: "ATOMIC Corporation",
- [3]byte{0, 20, 65}: "Innovation Sound Technology Co., LTD.",
- [3]byte{0, 20, 66}: "ATTO CORPORATION",
- [3]byte{0, 20, 67}: "Consultronics Europe Ltd",
- [3]byte{0, 20, 68}: "Grundfos Holding",
- [3]byte{0, 20, 69}: "Telefon-Gradnja d.o.o.",
- [3]byte{0, 20, 70}: "SuperVision Solutions LLC",
- [3]byte{0, 20, 71}: "BOAZ Inc.",
- [3]byte{0, 20, 72}: "Inventec Multimedia & Telecom Corporation",
- [3]byte{0, 20, 73}: "Sichuan Changhong Electric Ltd.",
- [3]byte{0, 20, 74}: "Taiwan Thick-Film Ind. Corp.",
- [3]byte{0, 20, 75}: "Hifn, Inc.",
- [3]byte{0, 20, 76}: "General Meters Corp.",
- [3]byte{0, 20, 77}: "Intelligent Systems",
- [3]byte{0, 20, 78}: "SRISA",
- [3]byte{0, 20, 79}: "Oracle Corporation",
- [3]byte{0, 20, 80}: "Heim Systems GmbH",
- [3]byte{0, 20, 81}: "Apple, Inc.",
- [3]byte{0, 20, 82}: "CALCULEX,INC.",
- [3]byte{0, 20, 83}: "ADVANTECH TECHNOLOGIES CO.,LTD",
- [3]byte{0, 20, 84}: "Symwave",
- [3]byte{0, 20, 85}: "Coder Electronics Corporation",
- [3]byte{0, 20, 86}: "Edge Products",
- [3]byte{0, 20, 87}: "T-VIPS AS",
- [3]byte{0, 20, 88}: "HS Automatic ApS",
- [3]byte{0, 20, 89}: "Moram Co., Ltd.",
- [3]byte{0, 20, 90}: "Neratec Solutions AG",
- [3]byte{0, 20, 91}: "SeekerNet Inc.",
- [3]byte{0, 20, 92}: "Intronics B.V.",
- [3]byte{0, 20, 93}: "WJ Communications, Inc.",
- [3]byte{0, 20, 94}: "IBM Corp",
- [3]byte{0, 20, 95}: "ADITEC CO. LTD",
- [3]byte{0, 20, 96}: "Kyocera Wireless Corp.",
- [3]byte{0, 20, 97}: "CORONA CORPORATION",
- [3]byte{0, 20, 98}: "Digiwell Technology, inc",
- [3]byte{0, 20, 99}: "IDCS N.V.",
- [3]byte{0, 20, 100}: "Cryptosoft",
- [3]byte{0, 20, 101}: "Novo Nordisk A/S",
- [3]byte{0, 20, 102}: "Kleinhenz Elektronik GmbH",
- [3]byte{0, 20, 103}: "ArrowSpan Inc.",
- [3]byte{0, 20, 104}: "CelPlan International, Inc.",
- [3]byte{0, 20, 105}: "Cisco Systems, Inc",
- [3]byte{0, 20, 106}: "Cisco Systems, Inc",
- [3]byte{0, 20, 107}: "Anagran, Inc.",
- [3]byte{0, 20, 108}: "NETGEAR",
- [3]byte{0, 20, 109}: "RF Technologies",
- [3]byte{0, 20, 110}: "H. Stoll GmbH & Co. KG",
- [3]byte{0, 20, 111}: "Kohler Co",
- [3]byte{0, 20, 112}: "Prokom Software SA",
- [3]byte{0, 20, 113}: "Eastern Asia Technology Limited",
- [3]byte{0, 20, 114}: "China Broadband Wireless IP Standard Group",
- [3]byte{0, 20, 115}: "Bookham Inc",
- [3]byte{0, 20, 116}: "K40 Electronics",
- [3]byte{0, 20, 117}: "Wiline Networks, Inc.",
- [3]byte{0, 20, 118}: "MultiCom Industries Limited",
- [3]byte{0, 20, 119}: "Nertec Inc.",
- [3]byte{0, 20, 120}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{0, 20, 121}: "NEC Magnus Communications,Ltd.",
- [3]byte{0, 20, 122}: "Eubus GmbH",
- [3]byte{0, 20, 123}: "Iteris, Inc.",
- [3]byte{0, 20, 124}: "3Com Ltd",
- [3]byte{0, 20, 125}: "Aeon Digital International",
- [3]byte{0, 20, 126}: "InnerWireless",
- [3]byte{0, 20, 127}: "Thomson Telecom Belgium",
- [3]byte{0, 20, 128}: "Hitachi-LG Data Storage Korea, Inc",
- [3]byte{0, 20, 129}: "Multilink Inc",
- [3]byte{0, 20, 130}: "Aurora Networks",
- [3]byte{0, 20, 131}: "eXS Inc.",
- [3]byte{0, 20, 132}: "Cermate Technologies Inc.",
- [3]byte{0, 20, 133}: "Giga-Byte",
- [3]byte{0, 20, 134}: "Echo Digital Audio Corporation",
- [3]byte{0, 20, 135}: "American Technology Integrators",
- [3]byte{0, 20, 136}: "Akorri",
- [3]byte{0, 20, 137}: "B15402100 - JANDEI, S.L.",
- [3]byte{0, 20, 138}: "Elin Ebg Traction Gmbh",
- [3]byte{0, 20, 139}: "Globo Electronic GmbH & Co. KG",
- [3]byte{0, 20, 140}: "General Dynamics Mission Systems",
- [3]byte{0, 20, 141}: "Cubic Defense Simulation Systems",
- [3]byte{0, 20, 142}: "Tele Power Inc.",
- [3]byte{0, 20, 143}: "Protronic (Far East) Ltd.",
- [3]byte{0, 20, 144}: "ASP Corporation",
- [3]byte{0, 20, 145}: "Daniels Electronics Ltd. dbo Codan Rado Communications",
- [3]byte{0, 20, 146}: "Liteon, Mobile Media Solution SBU",
- [3]byte{0, 20, 147}: "Systimax Solutions",
- [3]byte{0, 20, 148}: "ESU AG",
- [3]byte{0, 20, 149}: "2Wire Inc",
- [3]byte{0, 20, 150}: "Phonic Corp.",
- [3]byte{0, 20, 151}: "ZHIYUAN Eletronics co.,ltd.",
- [3]byte{0, 20, 152}: "Viking Design Technology",
- [3]byte{0, 20, 153}: "Helicomm Inc",
- [3]byte{0, 20, 154}: "ARRIS Group, Inc.",
- [3]byte{0, 20, 155}: "Nokota Communications, LLC",
- [3]byte{0, 20, 156}: "HF Company",
- [3]byte{0, 20, 157}: "Sound ID Inc.",
- [3]byte{0, 20, 158}: "UbONE Co., Ltd",
- [3]byte{0, 20, 159}: "System and Chips, Inc.",
- [3]byte{0, 20, 160}: "Accsense, Inc.",
- [3]byte{0, 20, 161}: "Synchronous Communication Corp",
- [3]byte{0, 20, 162}: "Core Micro Systems Inc.",
- [3]byte{0, 20, 163}: "Vitelec BV",
- [3]byte{0, 20, 164}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 20, 165}: "Gemtek Technology Co., Ltd.",
- [3]byte{0, 20, 166}: "Teranetics, Inc.",
- [3]byte{0, 20, 167}: "Nokia Danmark A/S",
- [3]byte{0, 20, 168}: "Cisco Systems, Inc",
- [3]byte{0, 20, 169}: "Cisco Systems, Inc",
- [3]byte{0, 20, 170}: "Ashly Audio, Inc.",
- [3]byte{0, 20, 171}: "Senhai Electronic Technology Co., Ltd.",
- [3]byte{0, 20, 172}: "Bountiful WiFi",
- [3]byte{0, 20, 173}: "Gassner Wiege- und Meßtechnik GmbH",
- [3]byte{0, 20, 174}: "Wizlogics Co., Ltd.",
- [3]byte{0, 20, 175}: "Datasym POS Inc.",
- [3]byte{0, 20, 176}: "Naeil Community",
- [3]byte{0, 20, 177}: "Axell Wireless Limited",
- [3]byte{0, 20, 178}: "mCubelogics Corporation",
- [3]byte{0, 20, 179}: "CoreStar International Corp",
- [3]byte{0, 20, 180}: "General Dynamics United Kingdom Ltd",
- [3]byte{0, 20, 181}: "PHYSIOMETRIX,INC",
- [3]byte{0, 20, 182}: "Enswer Technology Inc.",
- [3]byte{0, 20, 183}: "AR Infotek Inc.",
- [3]byte{0, 20, 184}: "Hill-Rom",
- [3]byte{0, 20, 185}: "MSTAR SEMICONDUCTOR",
- [3]byte{0, 20, 186}: "Carvers SA de CV",
- [3]byte{0, 20, 187}: "Open Interface North America",
- [3]byte{0, 20, 188}: "SYNECTIC TELECOM EXPORTS PVT. LTD.",
- [3]byte{0, 20, 189}: "incNETWORKS, Inc",
- [3]byte{0, 20, 190}: "Wink communication technology CO.LTD",
- [3]byte{0, 20, 191}: "Cisco-Linksys, LLC",
- [3]byte{0, 20, 192}: "Symstream Technology Group Ltd",
- [3]byte{0, 20, 193}: "U.S. Robotics Corporation",
- [3]byte{0, 20, 194}: "Hewlett Packard",
- [3]byte{0, 20, 195}: "Seagate Technology",
- [3]byte{0, 20, 196}: "Vitelcom Mobile Technology",
- [3]byte{0, 20, 197}: "Alive Technologies Pty Ltd",
- [3]byte{0, 20, 198}: "Quixant Ltd",
- [3]byte{0, 20, 199}: "Nortel Networks",
- [3]byte{0, 20, 200}: "Contemporary Research Corp",
- [3]byte{0, 20, 201}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 20, 202}: "Key Radio Systems Limited",
- [3]byte{0, 20, 203}: "LifeSync Corporation",
- [3]byte{0, 20, 204}: "Zetec, Inc.",
- [3]byte{0, 20, 205}: "DigitalZone Co., Ltd.",
- [3]byte{0, 20, 206}: "NF CORPORATION",
- [3]byte{0, 20, 207}: "INVISIO Communications",
- [3]byte{0, 20, 208}: "BTI Systems Inc.",
- [3]byte{0, 20, 209}: "TRENDnet, Inc.",
- [3]byte{0, 20, 210}: "Kyuden Technosystems Corporation",
- [3]byte{0, 20, 211}: "SEPSA",
- [3]byte{0, 20, 212}: "K Technology Corporation",
- [3]byte{0, 20, 213}: "Datang Telecom Technology CO. , LCD,Optical Communication Br",
- [3]byte{0, 20, 214}: "Jeongmin Electronics Co.,Ltd.",
- [3]byte{0, 20, 215}: "Datastore Technology Corp",
- [3]byte{0, 20, 216}: "bio-logic SA",
- [3]byte{0, 20, 217}: "IP Fabrics, Inc.",
- [3]byte{0, 20, 218}: "Huntleigh Healthcare",
- [3]byte{0, 20, 219}: "Elma Trenew Electronic GmbH",
- [3]byte{0, 20, 220}: "Communication System Design & Manufacturing (CSDM)",
- [3]byte{0, 20, 221}: "Covergence Inc.",
- [3]byte{0, 20, 222}: "Sage Instruments Inc.",
- [3]byte{0, 20, 223}: "HI-P Tech Corporation",
- [3]byte{0, 20, 224}: "LET'S Corporation",
- [3]byte{0, 20, 225}: "Data Display AG",
- [3]byte{0, 20, 226}: "datacom systems inc.",
- [3]byte{0, 20, 227}: "mm-lab GmbH",
- [3]byte{0, 20, 228}: "infinias, LLC",
- [3]byte{0, 20, 229}: "Alticast",
- [3]byte{0, 20, 230}: "AIM Infrarotmodule GmbH",
- [3]byte{0, 20, 231}: "Stolinx,. Inc",
- [3]byte{0, 20, 232}: "ARRIS Group, Inc.",
- [3]byte{0, 20, 233}: "Nortech International",
- [3]byte{0, 20, 234}: "S Digm Inc. (Safe Paradigm Inc.)",
- [3]byte{0, 20, 235}: "AwarePoint Corporation",
- [3]byte{0, 20, 236}: "Acro Telecom",
- [3]byte{0, 20, 237}: "Airak, Inc.",
- [3]byte{0, 20, 238}: "Western Digital Technologies, Inc.",
- [3]byte{0, 20, 239}: "TZero Technologies, Inc.",
- [3]byte{0, 20, 240}: "Business Security OL AB",
- [3]byte{0, 20, 241}: "Cisco Systems, Inc",
- [3]byte{0, 20, 242}: "Cisco Systems, Inc",
- [3]byte{0, 20, 243}: "ViXS Systems Inc",
- [3]byte{0, 20, 244}: "DekTec Digital Video B.V.",
- [3]byte{0, 20, 245}: "OSI Security Devices",
- [3]byte{0, 20, 246}: "Juniper Networks",
- [3]byte{0, 20, 247}: "CREVIS Co., LTD",
- [3]byte{0, 20, 248}: "Scientific Atlanta",
- [3]byte{0, 20, 249}: "Vantage Controls",
- [3]byte{0, 20, 250}: "AsGa S.A.",
- [3]byte{0, 20, 251}: "Technical Solutions Inc.",
- [3]byte{0, 20, 252}: "Extandon, Inc.",
- [3]byte{0, 20, 253}: "Thecus Technology Corp.",
- [3]byte{0, 20, 254}: "Artech Electronics",
- [3]byte{0, 20, 255}: "Precise Automation, Inc.",
- [3]byte{0, 21, 0}: "Intel Corporate",
- [3]byte{0, 21, 1}: "LexBox",
- [3]byte{0, 21, 2}: "BETA tech",
- [3]byte{0, 21, 3}: "PROFIcomms s.r.o.",
- [3]byte{0, 21, 4}: "GAME PLUS CO., LTD.",
- [3]byte{0, 21, 5}: "Actiontec Electronics, Inc",
- [3]byte{0, 21, 6}: "Neo Photonics",
- [3]byte{0, 21, 7}: "Renaissance Learning Inc",
- [3]byte{0, 21, 8}: "Global Target Enterprise Inc",
- [3]byte{0, 21, 9}: "Plus Technology Co., Ltd",
- [3]byte{0, 21, 10}: "Sonoa Systems, Inc",
- [3]byte{0, 21, 11}: "SAGE INFOTECH LTD.",
- [3]byte{0, 21, 12}: "AVM GmbH",
- [3]byte{0, 21, 13}: "Hoana Medical, Inc.",
- [3]byte{0, 21, 14}: "OPENBRAIN TECHNOLOGIES CO., LTD.",
- [3]byte{0, 21, 15}: "mingjong",
- [3]byte{0, 21, 16}: "Techsphere Co., Ltd",
- [3]byte{0, 21, 17}: "Data Center Systems",
- [3]byte{0, 21, 18}: "Zurich University of Applied Sciences",
- [3]byte{0, 21, 19}: "EFS sas",
- [3]byte{0, 21, 20}: "Hu Zhou NAVA Networks&Electronics Ltd.",
- [3]byte{0, 21, 21}: "Leipold+Co.GmbH",
- [3]byte{0, 21, 22}: "URIEL SYSTEMS INC.",
- [3]byte{0, 21, 23}: "Intel Corporate",
- [3]byte{0, 21, 24}: "Shenzhen 10MOONS Technology Development CO.,Ltd",
- [3]byte{0, 21, 25}: "StoreAge Networking Technologies",
- [3]byte{0, 21, 26}: "Hunter Engineering Company",
- [3]byte{0, 21, 27}: "Isilon Systems Inc.",
- [3]byte{0, 21, 28}: "LENECO",
- [3]byte{0, 21, 29}: "M2I CORPORATION",
- [3]byte{0, 21, 30}: "Ethernet Powerlink Standardization Group (EPSG)",
- [3]byte{0, 21, 31}: "Multivision Intelligent Surveillance (Hong Kong) Ltd",
- [3]byte{0, 21, 32}: "Radiocrafts AS",
- [3]byte{0, 21, 33}: "Horoquartz",
- [3]byte{0, 21, 34}: "Dea Security",
- [3]byte{0, 21, 35}: "Meteor Communications Corporation",
- [3]byte{0, 21, 36}: "Numatics, Inc.",
- [3]byte{0, 21, 37}: "Chamberlain Access Solutions",
- [3]byte{0, 21, 38}: "Remote Technologies Inc",
- [3]byte{0, 21, 39}: "Balboa Instruments",
- [3]byte{0, 21, 40}: "Beacon Medical Products LLC d.b.a. BeaconMedaes",
- [3]byte{0, 21, 41}: "N3 Corporation",
- [3]byte{0, 21, 42}: "Nokia Corporation",
- [3]byte{0, 21, 43}: "Cisco Systems, Inc",
- [3]byte{0, 21, 44}: "Cisco Systems, Inc",
- [3]byte{0, 21, 45}: "TenX Networks, LLC",
- [3]byte{0, 21, 46}: "PacketHop, Inc.",
- [3]byte{0, 21, 47}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 48}: "Dell EMC",
- [3]byte{0, 21, 49}: "KOCOM",
- [3]byte{0, 21, 50}: "Consumer Technologies Group, LLC",
- [3]byte{0, 21, 51}: "NADAM.CO.,LTD",
- [3]byte{0, 21, 52}: "A Beltrónica-Companhia de Comunicações, Lda",
- [3]byte{0, 21, 53}: "OTE Spa",
- [3]byte{0, 21, 54}: "Powertech co.,Ltd",
- [3]byte{0, 21, 55}: "Ventus Networks",
- [3]byte{0, 21, 56}: "RFID, Inc.",
- [3]byte{0, 21, 57}: "Technodrive srl",
- [3]byte{0, 21, 58}: "Shenzhen Syscan Technology Co.,Ltd.",
- [3]byte{0, 21, 59}: "EMH metering GmbH & Co. KG",
- [3]byte{0, 21, 60}: "Kprotech Co., Ltd.",
- [3]byte{0, 21, 61}: "ELIM PRODUCT CO.",
- [3]byte{0, 21, 62}: "Q-Matic Sweden AB",
- [3]byte{0, 21, 63}: "Alcatel Alenia Space Italia",
- [3]byte{0, 21, 64}: "Nortel Networks",
- [3]byte{0, 21, 65}: "StrataLight Communications, Inc.",
- [3]byte{0, 21, 66}: "MICROHARD S.R.L.",
- [3]byte{0, 21, 67}: "Aberdeen Test Center",
- [3]byte{0, 21, 68}: "coM.s.a.t. AG",
- [3]byte{0, 21, 69}: "SEECODE Co., Ltd.",
- [3]byte{0, 21, 70}: "ITG Worldwide Sdn Bhd",
- [3]byte{0, 21, 71}: "AiZen Solutions Inc.",
- [3]byte{0, 21, 72}: "CUBE TECHNOLOGIES",
- [3]byte{0, 21, 73}: "Dixtal Biomedica Ind. Com. Ltda",
- [3]byte{0, 21, 74}: "WANSHIH ELECTRONIC CO., LTD",
- [3]byte{0, 21, 75}: "Wonde Proud Technology Co., Ltd",
- [3]byte{0, 21, 76}: "Saunders Electronics",
- [3]byte{0, 21, 77}: "Netronome Systems, Inc.",
- [3]byte{0, 21, 78}: "IEC",
- [3]byte{0, 21, 79}: "one RF Technology",
- [3]byte{0, 21, 80}: "Nits Technology Inc",
- [3]byte{0, 21, 81}: "RadioPulse Inc.",
- [3]byte{0, 21, 82}: "Wi-Gear Inc.",
- [3]byte{0, 21, 83}: "Cytyc Corporation",
- [3]byte{0, 21, 84}: "Atalum Wireless S.A.",
- [3]byte{0, 21, 85}: "DFM GmbH",
- [3]byte{0, 21, 86}: "Sagemcom Broadband SAS",
- [3]byte{0, 21, 87}: "Olivetti",
- [3]byte{0, 21, 88}: "FOXCONN",
- [3]byte{0, 21, 89}: "Securaplane Technologies, Inc.",
- [3]byte{0, 21, 90}: "DAINIPPON PHARMACEUTICAL CO., LTD.",
- [3]byte{0, 21, 91}: "Sampo Corporation",
- [3]byte{0, 21, 92}: "Dresser Wayne",
- [3]byte{0, 21, 93}: "Microsoft Corporation",
- [3]byte{0, 21, 94}: "Morgan Stanley",
- [3]byte{0, 21, 95}: "GreenPeak Technologies",
- [3]byte{0, 21, 96}: "Hewlett Packard",
- [3]byte{0, 21, 97}: "JJPlus Corporation",
- [3]byte{0, 21, 98}: "Cisco Systems, Inc",
- [3]byte{0, 21, 99}: "Cisco Systems, Inc",
- [3]byte{0, 21, 100}: "BEHRINGER Spezielle Studiotechnik GmbH",
- [3]byte{0, 21, 101}: "XIAMEN YEALINK NETWORK TECHNOLOGY CO.,LTD",
- [3]byte{0, 21, 102}: "A-First Technology Co., Ltd.",
- [3]byte{0, 21, 103}: "RADWIN Inc.",
- [3]byte{0, 21, 104}: "Dilithium Networks",
- [3]byte{0, 21, 105}: "PECO II, Inc.",
- [3]byte{0, 21, 106}: "DG2L Technologies Pvt. Ltd.",
- [3]byte{0, 21, 107}: "Perfisans Networks Corp.",
- [3]byte{0, 21, 108}: "SANE SYSTEM CO., LTD",
- [3]byte{0, 21, 109}: "Ubiquiti Networks Inc.",
- [3]byte{0, 21, 110}: "A. W. Communication Systems Ltd",
- [3]byte{0, 21, 111}: "Xiranet Communications GmbH",
- [3]byte{0, 21, 112}: "Zebra Technologies Inc",
- [3]byte{0, 21, 113}: "Nolan Systems",
- [3]byte{0, 21, 114}: "Red-Lemon",
- [3]byte{0, 21, 115}: "NewSoft Technology Corporation",
- [3]byte{0, 21, 116}: "Horizon Semiconductors Ltd.",
- [3]byte{0, 21, 117}: "Nevis Networks Inc.",
- [3]byte{0, 21, 118}: "LABiTec - Labor Biomedical Technologies GmbH",
- [3]byte{0, 21, 119}: "Allied Telesis, Inc.",
- [3]byte{0, 21, 120}: "Audio / Video Innovations",
- [3]byte{0, 21, 121}: "Lunatone Industrielle Elektronik GmbH",
- [3]byte{0, 21, 122}: "Telefin S.p.A.",
- [3]byte{0, 21, 123}: "Leuze electronic GmbH + Co. KG",
- [3]byte{0, 21, 124}: "Dave Networks, Inc.",
- [3]byte{0, 21, 125}: "POSDATA",
- [3]byte{0, 21, 126}: "Weidmüller Interface GmbH & Co. KG",
- [3]byte{0, 21, 127}: "ChuanG International Holding CO.,LTD.",
- [3]byte{0, 21, 128}: "U-WAY CORPORATION",
- [3]byte{0, 21, 129}: "MAKUS Inc.",
- [3]byte{0, 21, 130}: "Pulse Eight Limited",
- [3]byte{0, 21, 131}: "IVT corporation",
- [3]byte{0, 21, 132}: "Schenck Process GmbH",
- [3]byte{0, 21, 133}: "Aonvision Technolopy Corp.",
- [3]byte{0, 21, 134}: "Xiamen Overseas Chinese Electronic Co., Ltd.",
- [3]byte{0, 21, 135}: "Takenaka Seisakusho Co.,Ltd",
- [3]byte{0, 21, 136}: "Salutica Allied Solutions Sdn Bhd",
- [3]byte{0, 21, 137}: "D-MAX Technology Co.,Ltd",
- [3]byte{0, 21, 138}: "SURECOM Technology Corp.",
- [3]byte{0, 21, 139}: "Park Air Systems Ltd",
- [3]byte{0, 21, 140}: "Liab ApS",
- [3]byte{0, 21, 141}: "Jennic Ltd",
- [3]byte{0, 21, 142}: "Plustek.INC",
- [3]byte{0, 21, 143}: "NTT Advanced Technology Corporation",
- [3]byte{0, 21, 144}: "Hectronic GmbH",
- [3]byte{0, 21, 145}: "RLW Inc.",
- [3]byte{0, 21, 146}: "Facom UK Ltd (Melksham)",
- [3]byte{0, 21, 147}: "U4EA Technologies Inc.",
- [3]byte{0, 21, 148}: "BIXOLON CO.,LTD",
- [3]byte{0, 21, 149}: "Quester Tangent Corporation",
- [3]byte{0, 21, 150}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 151}: "AETA AUDIO SYSTEMS",
- [3]byte{0, 21, 152}: "Kolektor group",
- [3]byte{0, 21, 153}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 21, 154}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 155}: "Nortel Networks",
- [3]byte{0, 21, 156}: "B-KYUNG SYSTEM Co.,Ltd.",
- [3]byte{0, 21, 157}: "Tripp Lite",
- [3]byte{0, 21, 158}: "Mad Catz Interactive Inc",
- [3]byte{0, 21, 159}: "Terascala, Inc.",
- [3]byte{0, 21, 160}: "Nokia Danmark A/S",
- [3]byte{0, 21, 161}: "ECA-SINTERS",
- [3]byte{0, 21, 162}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 163}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 164}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 165}: "DCI Co., Ltd.",
- [3]byte{0, 21, 166}: "Digital Electronics Products Ltd.",
- [3]byte{0, 21, 167}: "Robatech AG",
- [3]byte{0, 21, 168}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 169}: "KWANG WOO I&C CO.,LTD",
- [3]byte{0, 21, 170}: "Rextechnik International Co.,",
- [3]byte{0, 21, 171}: "PRO CO SOUND INC",
- [3]byte{0, 21, 172}: "Capelon AB",
- [3]byte{0, 21, 173}: "Accedian Networks",
- [3]byte{0, 21, 174}: "kyung il",
- [3]byte{0, 21, 175}: "AzureWave Technology Inc.",
- [3]byte{0, 21, 176}: "AUTOTELENET CO.,LTD",
- [3]byte{0, 21, 177}: "Ambient Corporation",
- [3]byte{0, 21, 178}: "Advanced Industrial Computer, Inc.",
- [3]byte{0, 21, 179}: "Caretech AB",
- [3]byte{0, 21, 180}: "Polymap Wireless LLC",
- [3]byte{0, 21, 181}: "CI Network Corp.",
- [3]byte{0, 21, 182}: "ShinMaywa Industries, Ltd.",
- [3]byte{0, 21, 183}: "Toshiba",
- [3]byte{0, 21, 184}: "Tahoe",
- [3]byte{0, 21, 185}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 21, 186}: "iba AG",
- [3]byte{0, 21, 187}: "SMA Solar Technology AG",
- [3]byte{0, 21, 188}: "Develco",
- [3]byte{0, 21, 189}: "Group 4 Technology Ltd",
- [3]byte{0, 21, 190}: "Iqua Ltd.",
- [3]byte{0, 21, 191}: "technicob",
- [3]byte{0, 21, 192}: "DIGITAL TELEMEDIA CO.,LTD.",
- [3]byte{0, 21, 193}: "Sony Interactive Entertainment Inc.",
- [3]byte{0, 21, 194}: "3M Germany",
- [3]byte{0, 21, 195}: "Ruf Telematik AG",
- [3]byte{0, 21, 196}: "FLOVEL CO., LTD.",
- [3]byte{0, 21, 197}: "Dell Inc.",
- [3]byte{0, 21, 198}: "Cisco Systems, Inc",
- [3]byte{0, 21, 199}: "Cisco Systems, Inc",
- [3]byte{0, 21, 200}: "FlexiPanel Ltd",
- [3]byte{0, 21, 201}: "Gumstix, Inc",
- [3]byte{0, 21, 202}: "TeraRecon, Inc.",
- [3]byte{0, 21, 203}: "Surf Communication Solutions Ltd.",
- [3]byte{0, 21, 204}: "UQUEST, LTD.",
- [3]byte{0, 21, 205}: "Exartech International Corp.",
- [3]byte{0, 21, 206}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 207}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 208}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 209}: "ARRIS Group, Inc.",
- [3]byte{0, 21, 210}: "Xantech Corporation",
- [3]byte{0, 21, 211}: "Pantech&Curitel Communications, Inc.",
- [3]byte{0, 21, 212}: "Emitor AB",
- [3]byte{0, 21, 213}: "NICEVT",
- [3]byte{0, 21, 214}: "OSLiNK Sp. z o.o.",
- [3]byte{0, 21, 215}: "Reti Corporation",
- [3]byte{0, 21, 216}: "Interlink Electronics",
- [3]byte{0, 21, 217}: "PKC Electronics Oy",
- [3]byte{0, 21, 218}: "IRITEL A.D.",
- [3]byte{0, 21, 219}: "Canesta Inc.",
- [3]byte{0, 21, 220}: "KT&C Co., Ltd.",
- [3]byte{0, 21, 221}: "IP Control Systems Ltd.",
- [3]byte{0, 21, 222}: "Nokia Danmark A/S",
- [3]byte{0, 21, 223}: "Clivet S.p.A.",
- [3]byte{0, 21, 224}: "Ericsson",
- [3]byte{0, 21, 225}: "Picochip Ltd",
- [3]byte{0, 21, 226}: "Dr.Ing. Herbert Knauer GmbH",
- [3]byte{0, 21, 227}: "Dream Technologies Corporation",
- [3]byte{0, 21, 228}: "Zimmer Elektromedizin",
- [3]byte{0, 21, 229}: "Cheertek Inc.",
- [3]byte{0, 21, 230}: "MOBILE TECHNIKA Inc.",
- [3]byte{0, 21, 231}: "Quantec Tontechnik",
- [3]byte{0, 21, 232}: "Nortel Networks",
- [3]byte{0, 21, 233}: "D-Link Corporation",
- [3]byte{0, 21, 234}: "Tellumat (Pty) Ltd",
- [3]byte{0, 21, 235}: "zte corporation",
- [3]byte{0, 21, 236}: "Boca Devices LLC",
- [3]byte{0, 21, 237}: "Fulcrum Microsystems, Inc.",
- [3]byte{0, 21, 238}: "Omnex Control Systems",
- [3]byte{0, 21, 239}: "NEC TOKIN Corporation",
- [3]byte{0, 21, 240}: "EGO BV",
- [3]byte{0, 21, 241}: "KYLINK Communications Corp.",
- [3]byte{0, 21, 242}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 21, 243}: "PELTOR AB",
- [3]byte{0, 21, 244}: "Eventide",
- [3]byte{0, 21, 245}: "Sustainable Energy Systems",
- [3]byte{0, 21, 246}: "SCIENCE AND ENGINEERING SERVICES, INC.",
- [3]byte{0, 21, 247}: "Wintecronics Ltd.",
- [3]byte{0, 21, 248}: "Kingtronics Industrial Co. Ltd.",
- [3]byte{0, 21, 249}: "Cisco Systems, Inc",
- [3]byte{0, 21, 250}: "Cisco Systems, Inc",
- [3]byte{0, 21, 251}: "setex schermuly textile computer gmbh",
- [3]byte{0, 21, 252}: "Littelfuse Startco",
- [3]byte{0, 21, 253}: "Complete Media Systems",
- [3]byte{0, 21, 254}: "SCHILLING ROBOTICS LLC",
- [3]byte{0, 21, 255}: "Novatel Wireless Solutions, Inc.",
- [3]byte{0, 22, 0}: "CelleBrite Mobile Synchronization",
- [3]byte{0, 22, 1}: "BUFFALO.INC",
- [3]byte{0, 22, 2}: "CEYON TECHNOLOGY CO.,LTD.",
- [3]byte{0, 22, 3}: "COOLKSKY Co., LTD",
- [3]byte{0, 22, 4}: "Sigpro",
- [3]byte{0, 22, 5}: "YORKVILLE SOUND INC.",
- [3]byte{0, 22, 6}: "Ideal Industries",
- [3]byte{0, 22, 7}: "Curves International Inc.",
- [3]byte{0, 22, 8}: "Sequans Communications",
- [3]byte{0, 22, 9}: "Unitech electronics co., ltd.",
- [3]byte{0, 22, 10}: "SWEEX Europe BV",
- [3]byte{0, 22, 11}: "TVWorks LLC",
- [3]byte{0, 22, 12}: "LPL DEVELOPMENT S.A. DE C.V",
- [3]byte{0, 22, 13}: "Be Here Corporation",
- [3]byte{0, 22, 14}: "Optica Technologies Inc.",
- [3]byte{0, 22, 15}: "BADGER METER INC",
- [3]byte{0, 22, 16}: "Carina Technology",
- [3]byte{0, 22, 17}: "Altecon Srl",
- [3]byte{0, 22, 18}: "Otsuka Electronics Co., Ltd.",
- [3]byte{0, 22, 19}: "LibreStream Technologies Inc.",
- [3]byte{0, 22, 20}: "Picosecond Pulse Labs",
- [3]byte{0, 22, 21}: "Nittan Company, Limited",
- [3]byte{0, 22, 22}: "BROWAN COMMUNICATION INC.",
- [3]byte{0, 22, 23}: "MSI",
- [3]byte{0, 22, 24}: "HIVION Co., Ltd.",
- [3]byte{0, 22, 25}: "Lancelan Technologies S.L.",
- [3]byte{0, 22, 26}: "Dametric AB",
- [3]byte{0, 22, 27}: "Micronet Corporation",
- [3]byte{0, 22, 28}: "e:cue",
- [3]byte{0, 22, 29}: "Innovative Wireless Technologies, Inc.",
- [3]byte{0, 22, 30}: "Woojinnet",
- [3]byte{0, 22, 31}: "SUNWAVETEC Co., Ltd.",
- [3]byte{0, 22, 32}: "Sony Mobile Communications AB",
- [3]byte{0, 22, 33}: "Colorado Vnet",
- [3]byte{0, 22, 34}: "BBH SYSTEMS GMBH",
- [3]byte{0, 22, 35}: "Interval Media",
- [3]byte{0, 22, 36}: "Teneros, Inc.",
- [3]byte{0, 22, 37}: "Impinj, Inc.",
- [3]byte{0, 22, 38}: "ARRIS Group, Inc.",
- [3]byte{0, 22, 39}: "embedded-logic DESIGN AND MORE GmbH",
- [3]byte{0, 22, 40}: "Magicard Ltd",
- [3]byte{0, 22, 41}: "Nivus GmbH",
- [3]byte{0, 22, 42}: "Antik computers & communications s.r.o.",
- [3]byte{0, 22, 43}: "Togami Electric Mfg.co.,Ltd.",
- [3]byte{0, 22, 44}: "Xanboo",
- [3]byte{0, 22, 45}: "STNet Co., Ltd.",
- [3]byte{0, 22, 46}: "Space Shuttle Hi-Tech Co., Ltd.",
- [3]byte{0, 22, 47}: "Geutebrück GmbH",
- [3]byte{0, 22, 48}: "Vativ Technologies",
- [3]byte{0, 22, 49}: "Xteam",
- [3]byte{0, 22, 50}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 22, 51}: "Oxford Diagnostics Ltd.",
- [3]byte{0, 22, 52}: "Mathtech, Inc.",
- [3]byte{0, 22, 53}: "Hewlett Packard",
- [3]byte{0, 22, 54}: "QUANTA COMPUTER INC.",
- [3]byte{0, 22, 55}: "CITEL SpA",
- [3]byte{0, 22, 56}: "TECOM Co., Ltd.",
- [3]byte{0, 22, 57}: "Ubiquam Co., Ltd.",
- [3]byte{0, 22, 58}: "YVES TECHNOLOGY CO., LTD.",
- [3]byte{0, 22, 59}: "VertexRSI/General Dynamics",
- [3]byte{0, 22, 60}: "Rebox B.V.",
- [3]byte{0, 22, 61}: "Tsinghua Tongfang Legend Silicon Tech. Co., Ltd.",
- [3]byte{0, 22, 62}: "Xensource, Inc.",
- [3]byte{0, 22, 63}: "CReTE SYSTEMS Inc.",
- [3]byte{0, 22, 64}: "Asmobile Communication Inc.",
- [3]byte{0, 22, 65}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{0, 22, 66}: "Pangolin",
- [3]byte{0, 22, 67}: "Sunhillo Corporation",
- [3]byte{0, 22, 68}: "LITE-ON Technology Corp.",
- [3]byte{0, 22, 69}: "Power Distribution, Inc.",
- [3]byte{0, 22, 70}: "Cisco Systems, Inc",
- [3]byte{0, 22, 71}: "Cisco Systems, Inc",
- [3]byte{0, 22, 72}: "SSD Company Limited",
- [3]byte{0, 22, 73}: "SetOne GmbH",
- [3]byte{0, 22, 74}: "Vibration Technology Limited",
- [3]byte{0, 22, 75}: "Quorion Data Systems GmbH",
- [3]byte{0, 22, 76}: "PLANET INT Co., Ltd",
- [3]byte{0, 22, 77}: "Alcatel-Lucent IPD",
- [3]byte{0, 22, 78}: "Nokia Danmark A/S",
- [3]byte{0, 22, 79}: "World Ethnic Broadcastin Inc.",
- [3]byte{0, 22, 80}: "Kratos EPD",
- [3]byte{0, 22, 81}: "Exeo Systems",
- [3]byte{0, 22, 82}: "Hoatech Technologies, Inc.",
- [3]byte{0, 22, 83}: "LEGO System A/S IE Electronics Division",
- [3]byte{0, 22, 84}: "Flex-P Industries Sdn. Bhd.",
- [3]byte{0, 22, 85}: "FUHO TECHNOLOGY Co., LTD",
- [3]byte{0, 22, 86}: "Nintendo Co., Ltd.",
- [3]byte{0, 22, 87}: "Aegate Ltd",
- [3]byte{0, 22, 88}: "Fusiontech Technologies Inc.",
- [3]byte{0, 22, 89}: "Z.M.P. RADWAG",
- [3]byte{0, 22, 90}: "Harman Specialty Group",
- [3]byte{0, 22, 91}: "Grip Audio",
- [3]byte{0, 22, 92}: "Trackflow Ltd",
- [3]byte{0, 22, 93}: "AirDefense, Inc.",
- [3]byte{0, 22, 94}: "Precision I/O",
- [3]byte{0, 22, 95}: "Fairmount Automation",
- [3]byte{0, 22, 96}: "Nortel Networks",
- [3]byte{0, 22, 97}: "Novatium Solutions (P) Ltd",
- [3]byte{0, 22, 98}: "Liyuh Technology Ltd.",
- [3]byte{0, 22, 99}: "KBT Mobile",
- [3]byte{0, 22, 100}: "Prod-El SpA",
- [3]byte{0, 22, 101}: "Cellon France",
- [3]byte{0, 22, 102}: "Quantier Communication Inc.",
- [3]byte{0, 22, 103}: "A-TEC Subsystem INC.",
- [3]byte{0, 22, 104}: "Eishin Electronics",
- [3]byte{0, 22, 105}: "MRV Communication (Networks) LTD",
- [3]byte{0, 22, 106}: "TPS",
- [3]byte{0, 22, 107}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 22, 108}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 22, 109}: "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
- [3]byte{0, 22, 110}: "Arbitron Inc.",
- [3]byte{0, 22, 111}: "Intel Corporate",
- [3]byte{0, 22, 112}: "SKNET Corporation",
- [3]byte{0, 22, 113}: "Symphox Information Co.",
- [3]byte{0, 22, 114}: "Zenway enterprise ltd",
- [3]byte{0, 22, 115}: "Bury GmbH & Co. KG",
- [3]byte{0, 22, 116}: "EuroCB (Phils.), Inc.",
- [3]byte{0, 22, 117}: "ARRIS Group, Inc.",
- [3]byte{0, 22, 118}: "Intel Corporate",
- [3]byte{0, 22, 119}: "Bihl + Wiedemann GmbH",
- [3]byte{0, 22, 120}: "SHENZHEN BAOAN GAOKE ELECTRONICS CO., LTD",
- [3]byte{0, 22, 121}: "eOn Communications",
- [3]byte{0, 22, 122}: "Skyworth Overseas Development Ltd.",
- [3]byte{0, 22, 123}: "Haver&Boecker",
- [3]byte{0, 22, 124}: "iRex Technologies BV",
- [3]byte{0, 22, 125}: "Sky-Line Information Co., Ltd.",
- [3]byte{0, 22, 126}: "DIBOSS.CO.,LTD",
- [3]byte{0, 22, 127}: "Bluebird Soft Inc.",
- [3]byte{0, 22, 128}: "Bally Gaming + Systems",
- [3]byte{0, 22, 129}: "Vector Informatik GmbH",
- [3]byte{0, 22, 130}: "Pro Dex, Inc",
- [3]byte{0, 22, 131}: "WEBIO International Co.,.Ltd.",
- [3]byte{0, 22, 132}: "Donjin Co.,Ltd.",
- [3]byte{0, 22, 133}: "Elisa Oyj",
- [3]byte{0, 22, 134}: "Karl Storz Imaging",
- [3]byte{0, 22, 135}: "Chubb CSC-Vendor AP",
- [3]byte{0, 22, 136}: "ServerEngines LLC",
- [3]byte{0, 22, 137}: "Pilkor Electronics Co., Ltd",
- [3]byte{0, 22, 138}: "id-Confirm Inc",
- [3]byte{0, 22, 139}: "Paralan Corporation",
- [3]byte{0, 22, 140}: "DSL Partner AS",
- [3]byte{0, 22, 141}: "KORWIN CO., Ltd.",
- [3]byte{0, 22, 142}: "Vimicro corporation",
- [3]byte{0, 22, 143}: "GN Netcom A/S",
- [3]byte{0, 22, 144}: "J-TEK INCORPORATION",
- [3]byte{0, 22, 145}: "Moser-Baer AG",
- [3]byte{0, 22, 146}: "Scientific-Atlanta, Inc.",
- [3]byte{0, 22, 147}: "PowerLink Technology Inc.",
- [3]byte{0, 22, 148}: "Sennheiser Communications A/S",
- [3]byte{0, 22, 149}: "AVC Technology (International) Limited",
- [3]byte{0, 22, 150}: "QDI Technology (H.K.) Limited",
- [3]byte{0, 22, 151}: "NEC Corporation",
- [3]byte{0, 22, 152}: "T&A Mobile Phones",
- [3]byte{0, 22, 153}: "Tonic DVB Marketing Ltd",
- [3]byte{0, 22, 154}: "Quadrics Ltd",
- [3]byte{0, 22, 155}: "Alstom Transport",
- [3]byte{0, 22, 156}: "Cisco Systems, Inc",
- [3]byte{0, 22, 157}: "Cisco Systems, Inc",
- [3]byte{0, 22, 158}: "TV One Ltd",
- [3]byte{0, 22, 159}: "Vimtron Electronics Co., Ltd.",
- [3]byte{0, 22, 160}: "Auto-Maskin",
- [3]byte{0, 22, 161}: "3Leaf Networks",
- [3]byte{0, 22, 162}: "CentraLite Systems, Inc.",
- [3]byte{0, 22, 163}: "Ingeteam Transmission&Distribution, S.A.",
- [3]byte{0, 22, 164}: "Ezurio Ltd",
- [3]byte{0, 22, 165}: "Tandberg Storage ASA",
- [3]byte{0, 22, 166}: "Dovado FZ-LLC",
- [3]byte{0, 22, 167}: "AWETA G&P",
- [3]byte{0, 22, 168}: "CWT CO., LTD.",
- [3]byte{0, 22, 169}: "2EI",
- [3]byte{0, 22, 170}: "Kei Communication Technology Inc.",
- [3]byte{0, 22, 171}: "Dansensor A/S",
- [3]byte{0, 22, 172}: "Toho Technology Corp.",
- [3]byte{0, 22, 173}: "BT-Links Company Limited",
- [3]byte{0, 22, 174}: "INVENTEL",
- [3]byte{0, 22, 175}: "Shenzhen Union Networks Equipment Co.,Ltd.",
- [3]byte{0, 22, 176}: "VK Corporation",
- [3]byte{0, 22, 177}: "KBS",
- [3]byte{0, 22, 178}: "DriveCam Inc",
- [3]byte{0, 22, 179}: "Photonicbridges (China) Co., Ltd.",
- [3]byte{0, 22, 180}: "Private",
- [3]byte{0, 22, 181}: "ARRIS Group, Inc.",
- [3]byte{0, 22, 182}: "Cisco-Linksys, LLC",
- [3]byte{0, 22, 183}: "Seoul Commtech",
- [3]byte{0, 22, 184}: "Sony Mobile Communications AB",
- [3]byte{0, 22, 185}: "ProCurve Networking by HP",
- [3]byte{0, 22, 186}: "WEATHERNEWS INC.",
- [3]byte{0, 22, 187}: "Law-Chain Computer Technology Co Ltd",
- [3]byte{0, 22, 188}: "Nokia Danmark A/S",
- [3]byte{0, 22, 189}: "ATI Industrial Automation",
- [3]byte{0, 22, 190}: "INFRANET, Inc.",
- [3]byte{0, 22, 191}: "PaloDEx Group Oy",
- [3]byte{0, 22, 192}: "Semtech Corporation",
- [3]byte{0, 22, 193}: "Eleksen Ltd",
- [3]byte{0, 22, 194}: "Avtec Systems Inc",
- [3]byte{0, 22, 195}: "BA Systems Inc",
- [3]byte{0, 22, 196}: "SiRF Technology, Inc.",
- [3]byte{0, 22, 197}: "Shenzhen Xing Feng Industry Co.,Ltd",
- [3]byte{0, 22, 198}: "North Atlantic Industries",
- [3]byte{0, 22, 199}: "Cisco Systems, Inc",
- [3]byte{0, 22, 200}: "Cisco Systems, Inc",
- [3]byte{0, 22, 201}: "NAT Seattle, Inc.",
- [3]byte{0, 22, 202}: "Nortel Networks",
- [3]byte{0, 22, 203}: "Apple, Inc.",
- [3]byte{0, 22, 204}: "Xcute Mobile Corp.",
- [3]byte{0, 22, 205}: "HIJI HIGH-TECH CO., LTD.",
- [3]byte{0, 22, 206}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 22, 207}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 22, 208}: "ATech elektronika d.o.o.",
- [3]byte{0, 22, 209}: "ZAT a.s.",
- [3]byte{0, 22, 210}: "Caspian",
- [3]byte{0, 22, 211}: "Wistron Corporation",
- [3]byte{0, 22, 212}: "Compal Communications, Inc.",
- [3]byte{0, 22, 213}: "Synccom Co., Ltd",
- [3]byte{0, 22, 214}: "TDA Tech Pty Ltd",
- [3]byte{0, 22, 215}: "Sunways AG",
- [3]byte{0, 22, 216}: "Senea AB",
- [3]byte{0, 22, 217}: "NINGBO BIRD CO.,LTD.",
- [3]byte{0, 22, 218}: "Futronic Technology Co. Ltd.",
- [3]byte{0, 22, 219}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 22, 220}: "ARCHOS",
- [3]byte{0, 22, 221}: "Gigabeam Corporation",
- [3]byte{0, 22, 222}: "FAST Inc",
- [3]byte{0, 22, 223}: "Lundinova AB",
- [3]byte{0, 22, 224}: "3Com Ltd",
- [3]byte{0, 22, 225}: "SiliconStor, Inc.",
- [3]byte{0, 22, 226}: "American Fibertek, Inc.",
- [3]byte{0, 22, 227}: "ASKEY COMPUTER CORP",
- [3]byte{0, 22, 228}: "VANGUARD SECURITY ENGINEERING CORP.",
- [3]byte{0, 22, 229}: "FORDLEY DEVELOPMENT LIMITED",
- [3]byte{0, 22, 230}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{0, 22, 231}: "Dynamix Promotions Limited",
- [3]byte{0, 22, 232}: "Sigma Designs, Inc.",
- [3]byte{0, 22, 233}: "Tiba Medical Inc",
- [3]byte{0, 22, 234}: "Intel Corporate",
- [3]byte{0, 22, 235}: "Intel Corporate",
- [3]byte{0, 22, 236}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 22, 237}: "Utility, Inc",
- [3]byte{0, 22, 238}: "Royaldigital Inc.",
- [3]byte{0, 22, 239}: "Koko Fitness, Inc.",
- [3]byte{0, 22, 240}: "Dell",
- [3]byte{0, 22, 241}: "OmniSense, LLC",
- [3]byte{0, 22, 242}: "Dmobile System Co., Ltd.",
- [3]byte{0, 22, 243}: "CAST Information Co., Ltd",
- [3]byte{0, 22, 244}: "Eidicom Co., Ltd.",
- [3]byte{0, 22, 245}: "Dalian Golden Hualu Digital Technology Co.,Ltd",
- [3]byte{0, 22, 246}: "Video Products Group",
- [3]byte{0, 22, 247}: "L-3 Communications, Aviation Recorders",
- [3]byte{0, 22, 248}: "AVIQTECH TECHNOLOGY CO., LTD.",
- [3]byte{0, 22, 249}: "CETRTA POT, d.o.o., Kranj",
- [3]byte{0, 22, 250}: "ECI Telecom Ltd.",
- [3]byte{0, 22, 251}: "SHENZHEN MTC CO LTD",
- [3]byte{0, 22, 252}: "TOHKEN CO.,LTD.",
- [3]byte{0, 22, 253}: "Jaty Electronics",
- [3]byte{0, 22, 254}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 22, 255}: "Wamin Optocomm Mfg Corp",
- [3]byte{0, 23, 0}: "ARRIS Group, Inc.",
- [3]byte{0, 23, 1}: "KDE, Inc.",
- [3]byte{0, 23, 2}: "Osung Midicom Co., Ltd",
- [3]byte{0, 23, 3}: "MOSDAN Internation Co.,Ltd",
- [3]byte{0, 23, 4}: "Shinco Electronics Group Co.,Ltd",
- [3]byte{0, 23, 5}: "Methode Electronics",
- [3]byte{0, 23, 6}: "Techfaithwireless Communication Technology Limited.",
- [3]byte{0, 23, 7}: "InGrid, Inc",
- [3]byte{0, 23, 8}: "Hewlett Packard",
- [3]byte{0, 23, 9}: "Exalt Communications",
- [3]byte{0, 23, 10}: "INEW DIGITAL COMPANY",
- [3]byte{0, 23, 11}: "Contela, Inc.",
- [3]byte{0, 23, 12}: "Twig Com Ltd.",
- [3]byte{0, 23, 13}: "Dust Networks Inc.",
- [3]byte{0, 23, 14}: "Cisco Systems, Inc",
- [3]byte{0, 23, 15}: "Cisco Systems, Inc",
- [3]byte{0, 23, 16}: "Casa Systems Inc.",
- [3]byte{0, 23, 17}: "GE Healthcare Bio-Sciences AB",
- [3]byte{0, 23, 18}: "ISCO International",
- [3]byte{0, 23, 19}: "Tiger NetCom",
- [3]byte{0, 23, 20}: "BR Controls Nederland bv",
- [3]byte{0, 23, 21}: "Qstik",
- [3]byte{0, 23, 22}: "Qno Technology Inc.",
- [3]byte{0, 23, 23}: "Leica Geosystems AG",
- [3]byte{0, 23, 24}: "Vansco Electronics Oy",
- [3]byte{0, 23, 25}: "Audiocodes USA, Inc",
- [3]byte{0, 23, 26}: "Winegard Company",
- [3]byte{0, 23, 27}: "Innovation Lab Corp.",
- [3]byte{0, 23, 28}: "NT MicroSystems, Inc.",
- [3]byte{0, 23, 29}: "DIGIT",
- [3]byte{0, 23, 30}: "Theo Benning GmbH & Co. KG",
- [3]byte{0, 23, 31}: "IMV Corporation",
- [3]byte{0, 23, 32}: "Image Sensing Systems, Inc.",
- [3]byte{0, 23, 33}: "FITRE S.p.A.",
- [3]byte{0, 23, 34}: "Hanazeder Electronic GmbH",
- [3]byte{0, 23, 35}: "Summit Data Communications",
- [3]byte{0, 23, 36}: "Studer Professional Audio GmbH",
- [3]byte{0, 23, 37}: "Liquid Computing",
- [3]byte{0, 23, 38}: "m2c Electronic Technology Ltd.",
- [3]byte{0, 23, 39}: "Thermo Ramsey Italia s.r.l.",
- [3]byte{0, 23, 40}: "Selex Communications",
- [3]byte{0, 23, 41}: "Ubicod Co.LTD",
- [3]byte{0, 23, 42}: "Proware Technology Corp.(By Unifosa)",
- [3]byte{0, 23, 43}: "Global Technologies Inc.",
- [3]byte{0, 23, 44}: "TAEJIN INFOTECH",
- [3]byte{0, 23, 45}: "Axcen Photonics Corporation",
- [3]byte{0, 23, 46}: "FXC Inc.",
- [3]byte{0, 23, 47}: "NeuLion Incorporated",
- [3]byte{0, 23, 48}: "Automation Electronics",
- [3]byte{0, 23, 49}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 23, 50}: "Science-Technical Center RISSA",
- [3]byte{0, 23, 51}: "SFR",
- [3]byte{0, 23, 52}: "ADC Telecommunications",
- [3]byte{0, 23, 53}: "Intel Wireless Network Group",
- [3]byte{0, 23, 54}: "iiTron Inc.",
- [3]byte{0, 23, 55}: "Industrie Dial Face S.p.A.",
- [3]byte{0, 23, 56}: "International Business Machines",
- [3]byte{0, 23, 57}: "Bright Headphone Electronics Company",
- [3]byte{0, 23, 58}: "Cloudastructure Inc",
- [3]byte{0, 23, 59}: "Cisco Systems, Inc",
- [3]byte{0, 23, 60}: "Extreme Engineering Solutions",
- [3]byte{0, 23, 61}: "Neology",
- [3]byte{0, 23, 62}: "LeucotronEquipamentos Ltda.",
- [3]byte{0, 23, 63}: "Belkin International Inc.",
- [3]byte{0, 23, 64}: "Bluberi Gaming Technologies Inc",
- [3]byte{0, 23, 65}: "DEFIDEV",
- [3]byte{0, 23, 66}: "FUJITSU LIMITED",
- [3]byte{0, 23, 67}: "Deck Srl",
- [3]byte{0, 23, 68}: "Araneo Ltd.",
- [3]byte{0, 23, 69}: "INNOTZ CO., Ltd",
- [3]byte{0, 23, 70}: "Freedom9 Inc.",
- [3]byte{0, 23, 71}: "Trimble",
- [3]byte{0, 23, 72}: "Neokoros Brasil Ltda",
- [3]byte{0, 23, 73}: "HYUNDAE YONG-O-SA CO.,LTD",
- [3]byte{0, 23, 74}: "SOCOMEC",
- [3]byte{0, 23, 75}: "Nokia Danmark A/S",
- [3]byte{0, 23, 76}: "Millipore",
- [3]byte{0, 23, 77}: "DYNAMIC NETWORK FACTORY, INC.",
- [3]byte{0, 23, 78}: "Parama-tech Co.,Ltd.",
- [3]byte{0, 23, 79}: "iCatch Inc.",
- [3]byte{0, 23, 80}: "GSI Group, MicroE Systems",
- [3]byte{0, 23, 81}: "Online Corporation",
- [3]byte{0, 23, 82}: "DAGS, Inc",
- [3]byte{0, 23, 83}: "nFore Technology Inc.",
- [3]byte{0, 23, 84}: "Arkino HiTOP Corporation Limited",
- [3]byte{0, 23, 85}: "GE Security",
- [3]byte{0, 23, 86}: "Vinci Labs Oy",
- [3]byte{0, 23, 87}: "RIX TECHNOLOGY LIMITED",
- [3]byte{0, 23, 88}: "ThruVision Ltd",
- [3]byte{0, 23, 89}: "Cisco Systems, Inc",
- [3]byte{0, 23, 90}: "Cisco Systems, Inc",
- [3]byte{0, 23, 91}: "ACS Solutions Switzerland Ltd.",
- [3]byte{0, 23, 92}: "SHARP CORPORATION",
- [3]byte{0, 23, 93}: "Dongseo system.",
- [3]byte{0, 23, 94}: "Zed-3",
- [3]byte{0, 23, 95}: "XENOLINK Communications Co., Ltd.",
- [3]byte{0, 23, 96}: "Naito Densei Machida MFG.CO.,LTD",
- [3]byte{0, 23, 97}: "Private",
- [3]byte{0, 23, 98}: "Solar Technology, Inc.",
- [3]byte{0, 23, 99}: "Essentia S.p.A.",
- [3]byte{0, 23, 100}: "ATMedia GmbH",
- [3]byte{0, 23, 101}: "Nortel Networks",
- [3]byte{0, 23, 102}: "Accense Technology, Inc.",
- [3]byte{0, 23, 103}: "Earforce AS",
- [3]byte{0, 23, 104}: "Zinwave Ltd",
- [3]byte{0, 23, 105}: "Cymphonix Corp",
- [3]byte{0, 23, 106}: "Avago Technologies",
- [3]byte{0, 23, 107}: "Kiyon, Inc.",
- [3]byte{0, 23, 108}: "Pivot3, Inc.",
- [3]byte{0, 23, 109}: "CORE CORPORATION",
- [3]byte{0, 23, 110}: "DUCATI SISTEMI",
- [3]byte{0, 23, 111}: "PAX Computer Technology(Shenzhen) Ltd.",
- [3]byte{0, 23, 112}: "Arti Industrial Electronics Ltd.",
- [3]byte{0, 23, 113}: "APD Communications Ltd",
- [3]byte{0, 23, 114}: "ASTRO Strobel Kommunikationssysteme GmbH",
- [3]byte{0, 23, 115}: "Laketune Technologies Co. Ltd",
- [3]byte{0, 23, 116}: "Elesta GmbH",
- [3]byte{0, 23, 117}: "TTE Germany GmbH",
- [3]byte{0, 23, 118}: "Meso Scale Diagnostics, LLC",
- [3]byte{0, 23, 119}: "Obsidian Research Corporation",
- [3]byte{0, 23, 120}: "Central Music Co.",
- [3]byte{0, 23, 121}: "QuickTel",
- [3]byte{0, 23, 122}: "ASSA ABLOY AB",
- [3]byte{0, 23, 123}: "Azalea Networks inc",
- [3]byte{0, 23, 124}: "Smartlink Network Systems Limited",
- [3]byte{0, 23, 125}: "IDT Technology Limited",
- [3]byte{0, 23, 126}: "Meshcom Technologies Inc.",
- [3]byte{0, 23, 127}: "Worldsmart Retech",
- [3]byte{0, 23, 128}: "Applied Biosystems B.V.",
- [3]byte{0, 23, 129}: "Greystone Data System, Inc.",
- [3]byte{0, 23, 130}: "LoBenn Inc.",
- [3]byte{0, 23, 131}: "Texas Instruments",
- [3]byte{0, 23, 132}: "ARRIS Group, Inc.",
- [3]byte{0, 23, 133}: "Sparr Electronics Ltd",
- [3]byte{0, 23, 134}: "wisembed",
- [3]byte{0, 23, 135}: "Brother, Brother & Sons ApS",
- [3]byte{0, 23, 136}: "Philips Lighting BV",
- [3]byte{0, 23, 137}: "Zenitron Corporation",
- [3]byte{0, 23, 138}: "DARTS TECHNOLOGIES CORP.",
- [3]byte{0, 23, 139}: "Teledyne Technologies Incorporated",
- [3]byte{0, 23, 140}: "Independent Witness, Inc",
- [3]byte{0, 23, 141}: "Checkpoint Systems, Inc.",
- [3]byte{0, 23, 142}: "Gunnebo Cash Automation AB",
- [3]byte{0, 23, 143}: "NINGBO YIDONG ELECTRONIC CO.,LTD.",
- [3]byte{0, 23, 144}: "HYUNDAI DIGITECH Co, Ltd.",
- [3]byte{0, 23, 145}: "LinTech GmbH",
- [3]byte{0, 23, 146}: "Falcom Wireless Comunications Gmbh",
- [3]byte{0, 23, 147}: "Tigi Corporation",
- [3]byte{0, 23, 148}: "Cisco Systems, Inc",
- [3]byte{0, 23, 149}: "Cisco Systems, Inc",
- [3]byte{0, 23, 150}: "Rittmeyer AG",
- [3]byte{0, 23, 151}: "Telsy Elettronica S.p.A.",
- [3]byte{0, 23, 152}: "Azonic Technology Co., LTD",
- [3]byte{0, 23, 153}: "SmarTire Systems Inc.",
- [3]byte{0, 23, 154}: "D-Link Corporation",
- [3]byte{0, 23, 155}: "CHANT SINCERE CO.,LTD",
- [3]byte{0, 23, 156}: "DEPRAG SCHULZ GMBH u. CO.",
- [3]byte{0, 23, 157}: "Kelman Limited",
- [3]byte{0, 23, 158}: "Sirit Inc",
- [3]byte{0, 23, 159}: "Apricorn",
- [3]byte{0, 23, 160}: "RoboTech srl",
- [3]byte{0, 23, 161}: "3soft inc.",
- [3]byte{0, 23, 162}: "Camrivox Ltd.",
- [3]byte{0, 23, 163}: "MIX s.r.l.",
- [3]byte{0, 23, 164}: "Hewlett Packard",
- [3]byte{0, 23, 165}: "Ralink Technology Corp",
- [3]byte{0, 23, 166}: "YOSIN ELECTRONICS CO., LTD.",
- [3]byte{0, 23, 167}: "Mobile Computing Promotion Consortium",
- [3]byte{0, 23, 168}: "EDM Corporation",
- [3]byte{0, 23, 169}: "Sentivision",
- [3]byte{0, 23, 170}: "elab-experience inc.",
- [3]byte{0, 23, 171}: "Nintendo Co., Ltd.",
- [3]byte{0, 23, 172}: "O'Neil Product Development Inc.",
- [3]byte{0, 23, 173}: "AceNet Corporation",
- [3]byte{0, 23, 174}: "GAI-Tronics",
- [3]byte{0, 23, 175}: "Enermet",
- [3]byte{0, 23, 176}: "Nokia Danmark A/S",
- [3]byte{0, 23, 177}: "ACIST Medical Systems, Inc.",
- [3]byte{0, 23, 178}: "SK Telesys",
- [3]byte{0, 23, 179}: "Aftek Infosys Limited",
- [3]byte{0, 23, 180}: "Remote Security Systems, LLC",
- [3]byte{0, 23, 181}: "Peerless Systems Corporation",
- [3]byte{0, 23, 182}: "Aquantia",
- [3]byte{0, 23, 183}: "Tonze Technology Co.",
- [3]byte{0, 23, 184}: "NOVATRON CO., LTD.",
- [3]byte{0, 23, 185}: "Gambro Lundia AB",
- [3]byte{0, 23, 186}: "SEDO CO., LTD.",
- [3]byte{0, 23, 187}: "Syrinx Industrial Electronics",
- [3]byte{0, 23, 188}: "Touchtunes Music Corporation",
- [3]byte{0, 23, 189}: "Tibetsystem",
- [3]byte{0, 23, 190}: "Tratec Telecom B.V.",
- [3]byte{0, 23, 191}: "Coherent Research Limited",
- [3]byte{0, 23, 192}: "PureTech Systems, Inc.",
- [3]byte{0, 23, 193}: "CM Precision Technology LTD.",
- [3]byte{0, 23, 194}: "ADB Broadband Italia",
- [3]byte{0, 23, 195}: "KTF Technologies Inc.",
- [3]byte{0, 23, 196}: "Quanta Microsystems, INC.",
- [3]byte{0, 23, 197}: "SonicWALL",
- [3]byte{0, 23, 198}: "Cross Match Technologies Inc",
- [3]byte{0, 23, 199}: "MARA Systems Consulting AB",
- [3]byte{0, 23, 200}: "KYOCERA Display Corporation",
- [3]byte{0, 23, 201}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 23, 202}: "Qisda Corporation",
- [3]byte{0, 23, 203}: "Juniper Networks",
- [3]byte{0, 23, 204}: "Alcatel-Lucent",
- [3]byte{0, 23, 205}: "CEC Wireless R&D Ltd.",
- [3]byte{0, 23, 206}: "Screen Service Spa",
- [3]byte{0, 23, 207}: "iMCA-GmbH",
- [3]byte{0, 23, 208}: "Opticom Communications, LLC",
- [3]byte{0, 23, 209}: "Nortel Networks",
- [3]byte{0, 23, 210}: "THINLINX PTY LTD",
- [3]byte{0, 23, 211}: "Etymotic Research, Inc.",
- [3]byte{0, 23, 212}: "Monsoon Multimedia, Inc",
- [3]byte{0, 23, 213}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 23, 214}: "Bluechips Microhouse Co.,Ltd.",
- [3]byte{0, 23, 215}: "ION Geophysical Corporation Inc.",
- [3]byte{0, 23, 216}: "Magnum Semiconductor, Inc.",
- [3]byte{0, 23, 217}: "AAI Corporation",
- [3]byte{0, 23, 218}: "Spans Logic",
- [3]byte{0, 23, 219}: "CANKO TECHNOLOGIES INC.",
- [3]byte{0, 23, 220}: "DAEMYUNG ZERO1",
- [3]byte{0, 23, 221}: "Clipsal Australia",
- [3]byte{0, 23, 222}: "Advantage Six Ltd",
- [3]byte{0, 23, 223}: "Cisco Systems, Inc",
- [3]byte{0, 23, 224}: "Cisco Systems, Inc",
- [3]byte{0, 23, 225}: "DACOS Technologies Co., Ltd.",
- [3]byte{0, 23, 226}: "ARRIS Group, Inc.",
- [3]byte{0, 23, 227}: "Texas Instruments",
- [3]byte{0, 23, 228}: "Texas Instruments",
- [3]byte{0, 23, 229}: "Texas Instruments",
- [3]byte{0, 23, 230}: "Texas Instruments",
- [3]byte{0, 23, 231}: "Texas Instruments",
- [3]byte{0, 23, 232}: "Texas Instruments",
- [3]byte{0, 23, 233}: "Texas Instruments",
- [3]byte{0, 23, 234}: "Texas Instruments",
- [3]byte{0, 23, 235}: "Texas Instruments",
- [3]byte{0, 23, 236}: "Texas Instruments",
- [3]byte{0, 23, 237}: "WooJooIT Ltd.",
- [3]byte{0, 23, 238}: "ARRIS Group, Inc.",
- [3]byte{0, 23, 239}: "IBM Corp",
- [3]byte{0, 23, 240}: "SZCOM Broadband Network Technology Co.,Ltd",
- [3]byte{0, 23, 241}: "Renu Electronics Pvt Ltd",
- [3]byte{0, 23, 242}: "Apple, Inc.",
- [3]byte{0, 23, 243}: "Harris Corparation",
- [3]byte{0, 23, 244}: "ZERON ALLIANCE",
- [3]byte{0, 23, 245}: "LIG NEOPTEK",
- [3]byte{0, 23, 246}: "Pyramid Meriden Inc.",
- [3]byte{0, 23, 247}: "CEM Solutions Pvt Ltd",
- [3]byte{0, 23, 248}: "Motech Industries Inc.",
- [3]byte{0, 23, 249}: "Forcom Sp. z o.o.",
- [3]byte{0, 23, 250}: "Microsoft Corporation",
- [3]byte{0, 23, 251}: "FA",
- [3]byte{0, 23, 252}: "Suprema Inc.",
- [3]byte{0, 23, 253}: "Amulet Hotkey",
- [3]byte{0, 23, 254}: "TALOS SYSTEM INC.",
- [3]byte{0, 23, 255}: "PLAYLINE Co.,Ltd.",
- [3]byte{0, 24, 0}: "UNIGRAND LTD",
- [3]byte{0, 24, 1}: "Actiontec Electronics, Inc",
- [3]byte{0, 24, 2}: "Alpha Networks Inc.",
- [3]byte{0, 24, 3}: "ArcSoft Shanghai Co. LTD",
- [3]byte{0, 24, 4}: "E-TEK DIGITAL TECHNOLOGY LIMITED",
- [3]byte{0, 24, 5}: "Beijing InHand Networking Technology Co.,Ltd.",
- [3]byte{0, 24, 6}: "Hokkei Industries Co., Ltd.",
- [3]byte{0, 24, 7}: "Fanstel Corp.",
- [3]byte{0, 24, 8}: "SightLogix, Inc.",
- [3]byte{0, 24, 9}: "CRESYN",
- [3]byte{0, 24, 10}: "Cisco Meraki",
- [3]byte{0, 24, 11}: "Brilliant Telecommunications",
- [3]byte{0, 24, 12}: "Optelian Access Networks",
- [3]byte{0, 24, 13}: "Terabytes Server Storage Tech Corp",
- [3]byte{0, 24, 14}: "Avega Systems",
- [3]byte{0, 24, 15}: "Nokia Danmark A/S",
- [3]byte{0, 24, 16}: "IPTrade S.A.",
- [3]byte{0, 24, 17}: "Neuros Technology International, LLC.",
- [3]byte{0, 24, 18}: "Beijing Xinwei Telecom Technology Co., Ltd.",
- [3]byte{0, 24, 19}: "Sony Mobile Communications AB",
- [3]byte{0, 24, 20}: "Mitutoyo Corporation",
- [3]byte{0, 24, 21}: "GZ Technologies, Inc.",
- [3]byte{0, 24, 22}: "Ubixon Co., Ltd.",
- [3]byte{0, 24, 23}: "D. E. Shaw Research, LLC",
- [3]byte{0, 24, 24}: "Cisco Systems, Inc",
- [3]byte{0, 24, 25}: "Cisco Systems, Inc",
- [3]byte{0, 24, 26}: "AVerMedia Information Inc.",
- [3]byte{0, 24, 27}: "TaiJin Metal Co., Ltd.",
- [3]byte{0, 24, 28}: "Exterity Limited",
- [3]byte{0, 24, 29}: "ASIA ELECTRONICS CO.,LTD",
- [3]byte{0, 24, 30}: "GDX Technologies Ltd.",
- [3]byte{0, 24, 31}: "Palmmicro Communications",
- [3]byte{0, 24, 32}: "w5networks",
- [3]byte{0, 24, 33}: "SINDORICOH",
- [3]byte{0, 24, 34}: "CEC TELECOM CO.,LTD.",
- [3]byte{0, 24, 35}: "Delta Electronics, Inc.",
- [3]byte{0, 24, 36}: "Kimaldi Electronics, S.L.",
- [3]byte{0, 24, 37}: "Private",
- [3]byte{0, 24, 38}: "Cale Access AB",
- [3]byte{0, 24, 39}: "NEC UNIFIED SOLUTIONS NEDERLAND B.V.",
- [3]byte{0, 24, 40}: "e2v technologies (UK) ltd.",
- [3]byte{0, 24, 41}: "Gatsometer",
- [3]byte{0, 24, 42}: "Taiwan Video & Monitor",
- [3]byte{0, 24, 43}: "Softier",
- [3]byte{0, 24, 44}: "Ascend Networks, Inc.",
- [3]byte{0, 24, 45}: "Artec Design",
- [3]byte{0, 24, 46}: "XStreamHD",
- [3]byte{0, 24, 47}: "Texas Instruments",
- [3]byte{0, 24, 48}: "Texas Instruments",
- [3]byte{0, 24, 49}: "Texas Instruments",
- [3]byte{0, 24, 50}: "Texas Instruments",
- [3]byte{0, 24, 51}: "Texas Instruments",
- [3]byte{0, 24, 52}: "Texas Instruments",
- [3]byte{0, 24, 53}: "Thoratec / ITC",
- [3]byte{0, 24, 54}: "Reliance Electric Limited",
- [3]byte{0, 24, 55}: "Universal ABIT Co., Ltd.",
- [3]byte{0, 24, 56}: "PanAccess Communications,Inc.",
- [3]byte{0, 24, 57}: "Cisco-Linksys, LLC",
- [3]byte{0, 24, 58}: "Westell Technologies Inc.",
- [3]byte{0, 24, 59}: "CENITS Co., Ltd.",
- [3]byte{0, 24, 60}: "Encore Software Limited",
- [3]byte{0, 24, 61}: "Vertex Link Corporation",
- [3]byte{0, 24, 62}: "Digilent, Inc",
- [3]byte{0, 24, 63}: "2Wire Inc",
- [3]byte{0, 24, 64}: "3 Phoenix, Inc.",
- [3]byte{0, 24, 65}: "High Tech Computer Corp",
- [3]byte{0, 24, 66}: "Nokia Danmark A/S",
- [3]byte{0, 24, 67}: "Dawevision Ltd",
- [3]byte{0, 24, 68}: "Heads Up Technologies, Inc.",
- [3]byte{0, 24, 69}: "Pulsar-Telecom LLC.",
- [3]byte{0, 24, 70}: "Crypto S.A.",
- [3]byte{0, 24, 71}: "AceNet Technology Inc.",
- [3]byte{0, 24, 72}: "Vecima Networks Inc.",
- [3]byte{0, 24, 73}: "Pigeon Point Systems LLC",
- [3]byte{0, 24, 74}: "Catcher, Inc.",
- [3]byte{0, 24, 75}: "Las Vegas Gaming, Inc.",
- [3]byte{0, 24, 76}: "Bogen Communications",
- [3]byte{0, 24, 77}: "NETGEAR",
- [3]byte{0, 24, 78}: "Lianhe Technologies, Inc.",
- [3]byte{0, 24, 79}: "8 Ways Technology Corp.",
- [3]byte{0, 24, 80}: "Secfone Kft",
- [3]byte{0, 24, 81}: "SWsoft",
- [3]byte{0, 24, 82}: "StorLink Semiconductors, Inc.",
- [3]byte{0, 24, 83}: "Atera Networks LTD.",
- [3]byte{0, 24, 84}: "Argard Co., Ltd",
- [3]byte{0, 24, 85}: "Aeromaritime Systembau GmbH",
- [3]byte{0, 24, 86}: "EyeFi, Inc",
- [3]byte{0, 24, 87}: "Unilever R&D",
- [3]byte{0, 24, 88}: "TagMaster AB",
- [3]byte{0, 24, 89}: "Strawberry Linux Co.,Ltd.",
- [3]byte{0, 24, 90}: "uControl, Inc.",
- [3]byte{0, 24, 91}: "Network Chemistry, Inc",
- [3]byte{0, 24, 92}: "EDSLAB Technologies",
- [3]byte{0, 24, 93}: "TAIGUEN TECHNOLOGY (SHEN-ZHEN) CO., LTD.",
- [3]byte{0, 24, 94}: "Nexterm Inc.",
- [3]byte{0, 24, 95}: "TAC Inc.",
- [3]byte{0, 24, 96}: "SIM Technology Group Shanghai Simcom Ltd.,",
- [3]byte{0, 24, 97}: "Ooma, Inc.",
- [3]byte{0, 24, 98}: "Seagate Technology",
- [3]byte{0, 24, 99}: "Veritech Electronics Limited",
- [3]byte{0, 24, 100}: "Eaton Corporation",
- [3]byte{0, 24, 101}: "Siemens Healthcare Diagnostics Manufacturing Ltd",
- [3]byte{0, 24, 102}: "Leutron Vision",
- [3]byte{0, 24, 103}: "Datalogic ADC",
- [3]byte{0, 24, 104}: "Cisco SPVTG",
- [3]byte{0, 24, 105}: "KINGJIM",
- [3]byte{0, 24, 106}: "Global Link Digital Technology Co,.LTD",
- [3]byte{0, 24, 107}: "Sambu Communics CO., LTD.",
- [3]byte{0, 24, 108}: "Neonode AB",
- [3]byte{0, 24, 109}: "Zhenjiang Sapphire Electronic Industry CO.",
- [3]byte{0, 24, 110}: "3Com Ltd",
- [3]byte{0, 24, 111}: "Setha Industria Eletronica LTDA",
- [3]byte{0, 24, 112}: "E28 Shanghai Limited",
- [3]byte{0, 24, 113}: "Hewlett Packard",
- [3]byte{0, 24, 114}: "Expertise Engineering",
- [3]byte{0, 24, 115}: "Cisco Systems, Inc",
- [3]byte{0, 24, 116}: "Cisco Systems, Inc",
- [3]byte{0, 24, 117}: "AnaCise Testnology Pte Ltd",
- [3]byte{0, 24, 118}: "WowWee Ltd.",
- [3]byte{0, 24, 119}: "Amplex A/S",
- [3]byte{0, 24, 120}: "Mackware GmbH",
- [3]byte{0, 24, 121}: "dSys",
- [3]byte{0, 24, 122}: "Wiremold",
- [3]byte{0, 24, 123}: "4NSYS Co. Ltd.",
- [3]byte{0, 24, 124}: "INTERCROSS, LLC",
- [3]byte{0, 24, 125}: "Armorlink Co .Ltd",
- [3]byte{0, 24, 126}: "RGB Spectrum",
- [3]byte{0, 24, 127}: "ZODIANET",
- [3]byte{0, 24, 128}: "Maxim Integrated Products",
- [3]byte{0, 24, 129}: "Buyang Electronics Industrial Co., Ltd",
- [3]byte{0, 24, 130}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 24, 131}: "FORMOSA21 INC.",
- [3]byte{0, 24, 132}: "Fon Technology S.L.",
- [3]byte{0, 24, 133}: "Avigilon Corporation",
- [3]byte{0, 24, 134}: "EL-TECH, INC.",
- [3]byte{0, 24, 135}: "Metasystem SpA",
- [3]byte{0, 24, 136}: "GOTIVE a.s.",
- [3]byte{0, 24, 137}: "WinNet Solutions Limited",
- [3]byte{0, 24, 138}: "Infinova LLC",
- [3]byte{0, 24, 139}: "Dell Inc.",
- [3]byte{0, 24, 140}: "Mobile Action Technology Inc.",
- [3]byte{0, 24, 141}: "Nokia Danmark A/S",
- [3]byte{0, 24, 142}: "Ekahau, Inc.",
- [3]byte{0, 24, 143}: "Montgomery Technology, Inc.",
- [3]byte{0, 24, 144}: "RadioCOM, s.r.o.",
- [3]byte{0, 24, 145}: "Zhongshan General K-mate Electronics Co., Ltd",
- [3]byte{0, 24, 146}: "ads-tec GmbH",
- [3]byte{0, 24, 147}: "SHENZHEN PHOTON BROADBAND TECHNOLOGY CO.,LTD",
- [3]byte{0, 24, 148}: "NPCore, Inc.",
- [3]byte{0, 24, 149}: "Hansun Technologies Inc.",
- [3]byte{0, 24, 150}: "Great Well Electronic LTD",
- [3]byte{0, 24, 151}: "JESS-LINK PRODUCTS Co., LTD",
- [3]byte{0, 24, 152}: "KINGSTATE ELECTRONICS CORPORATION",
- [3]byte{0, 24, 153}: "ShenZhen jieshun Science&Technology Industry CO,LTD.",
- [3]byte{0, 24, 154}: "HANA Micron Inc.",
- [3]byte{0, 24, 155}: "Thomson Inc.",
- [3]byte{0, 24, 156}: "Weldex Corporation",
- [3]byte{0, 24, 157}: "Navcast Inc.",
- [3]byte{0, 24, 158}: "OMNIKEY GmbH.",
- [3]byte{0, 24, 159}: "Lenntek Corporation",
- [3]byte{0, 24, 160}: "Cierma Ascenseurs",
- [3]byte{0, 24, 161}: "Tiqit Computers, Inc.",
- [3]byte{0, 24, 162}: "XIP Technology AB",
- [3]byte{0, 24, 163}: "ZIPPY TECHNOLOGY CORP.",
- [3]byte{0, 24, 164}: "ARRIS Group, Inc.",
- [3]byte{0, 24, 165}: "ADigit Technologies Corp.",
- [3]byte{0, 24, 166}: "Persistent Systems, LLC",
- [3]byte{0, 24, 167}: "Yoggie Security Systems LTD.",
- [3]byte{0, 24, 168}: "AnNeal Technology Inc.",
- [3]byte{0, 24, 169}: "Ethernet Direct Corporation",
- [3]byte{0, 24, 170}: "Protec Fire Detection plc",
- [3]byte{0, 24, 171}: "BEIJING LHWT MICROELECTRONICS INC.",
- [3]byte{0, 24, 172}: "Shanghai Jiao Da HISYS Technology Co. Ltd.",
- [3]byte{0, 24, 173}: "NIDEC SANKYO CORPORATION",
- [3]byte{0, 24, 174}: "TVT CO.,LTD",
- [3]byte{0, 24, 175}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 24, 176}: "Nortel Networks",
- [3]byte{0, 24, 177}: "IBM Corp",
- [3]byte{0, 24, 178}: "ADEUNIS RF",
- [3]byte{0, 24, 179}: "TEC WizHome Co., Ltd.",
- [3]byte{0, 24, 180}: "Dawon Media Inc.",
- [3]byte{0, 24, 181}: "Magna Carta",
- [3]byte{0, 24, 182}: "S3C, Inc.",
- [3]byte{0, 24, 183}: "D3 LED, LLC",
- [3]byte{0, 24, 184}: "New Voice International AG",
- [3]byte{0, 24, 185}: "Cisco Systems, Inc",
- [3]byte{0, 24, 186}: "Cisco Systems, Inc",
- [3]byte{0, 24, 187}: "Eliwell Controls srl",
- [3]byte{0, 24, 188}: "ZAO NVP Bolid",
- [3]byte{0, 24, 189}: "SHENZHEN DVBWORLD TECHNOLOGY CO., LTD.",
- [3]byte{0, 24, 190}: "ANSA Corporation",
- [3]byte{0, 24, 191}: "Essence Technology Solution, Inc.",
- [3]byte{0, 24, 192}: "ARRIS Group, Inc.",
- [3]byte{0, 24, 193}: "Almitec Informática e Comércio",
- [3]byte{0, 24, 194}: "Firetide, Inc",
- [3]byte{0, 24, 195}: "CS Corporation",
- [3]byte{0, 24, 196}: "Raba Technologies LLC",
- [3]byte{0, 24, 197}: "Nokia Danmark A/S",
- [3]byte{0, 24, 198}: "OPW Fuel Management Systems",
- [3]byte{0, 24, 199}: "Real Time Automation",
- [3]byte{0, 24, 200}: "ISONAS Inc.",
- [3]byte{0, 24, 201}: "EOps Technology Limited",
- [3]byte{0, 24, 202}: "Viprinet GmbH",
- [3]byte{0, 24, 203}: "Tecobest Technology Limited",
- [3]byte{0, 24, 204}: "AXIOHM SAS",
- [3]byte{0, 24, 205}: "Erae Electronics Industry Co., Ltd",
- [3]byte{0, 24, 206}: "Dreamtech Co., Ltd",
- [3]byte{0, 24, 207}: "Baldor Electric Company",
- [3]byte{0, 24, 208}: "AtRoad, A Trimble Company",
- [3]byte{0, 24, 209}: "Siemens Home & Office Comm. Devices",
- [3]byte{0, 24, 210}: "High-Gain Antennas LLC",
- [3]byte{0, 24, 211}: "TEAMCAST",
- [3]byte{0, 24, 212}: "Unified Display Interface SIG",
- [3]byte{0, 24, 213}: "REIGNCOM",
- [3]byte{0, 24, 214}: "Swirlnet A/S",
- [3]byte{0, 24, 215}: "JAVAD GNSS, Inc.",
- [3]byte{0, 24, 216}: "ARCH METER Corporation",
- [3]byte{0, 24, 217}: "Santosha Internatonal, Inc",
- [3]byte{0, 24, 218}: "AMBER wireless GmbH",
- [3]byte{0, 24, 219}: "EPL Technology Ltd",
- [3]byte{0, 24, 220}: "Prostar Co., Ltd.",
- [3]byte{0, 24, 221}: "Silicondust Engineering Ltd",
- [3]byte{0, 24, 222}: "Intel Corporate",
- [3]byte{0, 24, 223}: "The Morey Corporation",
- [3]byte{0, 24, 224}: "ANAVEO",
- [3]byte{0, 24, 225}: "Verkerk Service Systemen",
- [3]byte{0, 24, 226}: "Topdata Sistemas de Automacao Ltda",
- [3]byte{0, 24, 227}: "Visualgate Systems, Inc.",
- [3]byte{0, 24, 228}: "YIGUANG",
- [3]byte{0, 24, 229}: "Adhoco AG",
- [3]byte{0, 24, 230}: "Computer Hardware Design SIA",
- [3]byte{0, 24, 231}: "Cameo Communications, INC.",
- [3]byte{0, 24, 232}: "Hacetron Corporation",
- [3]byte{0, 24, 233}: "Numata Corporation",
- [3]byte{0, 24, 234}: "Alltec GmbH",
- [3]byte{0, 24, 235}: "Blue Zen Enterprises Private Limited",
- [3]byte{0, 24, 236}: "Welding Technology Corporation",
- [3]byte{0, 24, 237}: "Accutech Ultrasystems Co., Ltd.",
- [3]byte{0, 24, 238}: "Videology Imaging Solutions, Inc.",
- [3]byte{0, 24, 239}: "Escape Communications, Inc.",
- [3]byte{0, 24, 240}: "JOYTOTO Co., Ltd.",
- [3]byte{0, 24, 241}: "Chunichi Denshi Co.,LTD.",
- [3]byte{0, 24, 242}: "Beijing Tianyu Communication Equipment Co., Ltd",
- [3]byte{0, 24, 243}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 24, 244}: "EO TECHNICS Co., Ltd.",
- [3]byte{0, 24, 245}: "Shenzhen Streaming Video Technology Company Limited",
- [3]byte{0, 24, 246}: "Thomson Telecom Belgium",
- [3]byte{0, 24, 247}: "Kameleon Technologies",
- [3]byte{0, 24, 248}: "Cisco-Linksys, LLC",
- [3]byte{0, 24, 249}: "VVOND, Inc.",
- [3]byte{0, 24, 250}: "Yushin Precision Equipment Co.,Ltd.",
- [3]byte{0, 24, 251}: "Compro Technology",
- [3]byte{0, 24, 252}: "Altec Electronic AG",
- [3]byte{0, 24, 253}: "Optimal Technologies International Inc.",
- [3]byte{0, 24, 254}: "Hewlett Packard",
- [3]byte{0, 24, 255}: "PowerQuattro Co.",
- [3]byte{0, 25, 0}: "Intelliverese - DBA Voicecom",
- [3]byte{0, 25, 1}: "F1MEDIA",
- [3]byte{0, 25, 2}: "Cambridge Consultants Ltd",
- [3]byte{0, 25, 3}: "Bigfoot Networks Inc",
- [3]byte{0, 25, 4}: "WB Electronics Sp. z o.o.",
- [3]byte{0, 25, 5}: "SCHRACK Seconet AG",
- [3]byte{0, 25, 6}: "Cisco Systems, Inc",
- [3]byte{0, 25, 7}: "Cisco Systems, Inc",
- [3]byte{0, 25, 8}: "Duaxes Corporation",
- [3]byte{0, 25, 9}: "DEVI - Danfoss A/S",
- [3]byte{0, 25, 10}: "HASWARE INC.",
- [3]byte{0, 25, 11}: "Southern Vision Systems, Inc.",
- [3]byte{0, 25, 12}: "Encore Electronics, Inc.",
- [3]byte{0, 25, 13}: "IEEE 1394c",
- [3]byte{0, 25, 14}: "Atech Technology Co., Ltd.",
- [3]byte{0, 25, 15}: "Advansus Corp.",
- [3]byte{0, 25, 16}: "Knick Elektronische Messgeraete GmbH & Co. KG",
- [3]byte{0, 25, 17}: "Just In Mobile Information Technologies (Shanghai) Co., Ltd.",
- [3]byte{0, 25, 18}: "Welcat Inc",
- [3]byte{0, 25, 19}: "Chuang-Yi Network Equipment Co.Ltd.",
- [3]byte{0, 25, 20}: "Winix Co., Ltd",
- [3]byte{0, 25, 21}: "TECOM Co., Ltd.",
- [3]byte{0, 25, 22}: "PayTec AG",
- [3]byte{0, 25, 23}: "Posiflex Inc.",
- [3]byte{0, 25, 24}: "Interactive Wear AG",
- [3]byte{0, 25, 25}: "ASTEL Inc.",
- [3]byte{0, 25, 26}: "IRLINK",
- [3]byte{0, 25, 27}: "Sputnik Engineering AG",
- [3]byte{0, 25, 28}: "Sensicast Systems",
- [3]byte{0, 25, 29}: "Nintendo Co., Ltd.",
- [3]byte{0, 25, 30}: "Beyondwiz Co., Ltd.",
- [3]byte{0, 25, 31}: "Microlink communications Inc.",
- [3]byte{0, 25, 32}: "KUME electric Co.,Ltd.",
- [3]byte{0, 25, 33}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 25, 34}: "CM Comandos Lineares",
- [3]byte{0, 25, 35}: "Phonex Korea Co., LTD.",
- [3]byte{0, 25, 36}: "LBNL Engineering",
- [3]byte{0, 25, 37}: "Intelicis Corporation",
- [3]byte{0, 25, 38}: "BitsGen Co., Ltd.",
- [3]byte{0, 25, 39}: "ImCoSys Ltd",
- [3]byte{0, 25, 40}: "Siemens AG, Transportation Systems",
- [3]byte{0, 25, 41}: "2M2B Montadora de Maquinas Bahia Brasil LTDA",
- [3]byte{0, 25, 42}: "Antiope Associates",
- [3]byte{0, 25, 43}: "Aclara RF Systems Inc.",
- [3]byte{0, 25, 44}: "ARRIS Group, Inc.",
- [3]byte{0, 25, 45}: "Nokia Corporation",
- [3]byte{0, 25, 46}: "Spectral Instruments, Inc.",
- [3]byte{0, 25, 47}: "Cisco Systems, Inc",
- [3]byte{0, 25, 48}: "Cisco Systems, Inc",
- [3]byte{0, 25, 49}: "Balluff GmbH",
- [3]byte{0, 25, 50}: "Gude Analog- und Digialsysteme GmbH",
- [3]byte{0, 25, 51}: "Strix Systems, Inc.",
- [3]byte{0, 25, 52}: "TRENDON TOUCH TECHNOLOGY CORP.",
- [3]byte{0, 25, 53}: "DUERR DENTAL AG",
- [3]byte{0, 25, 54}: "STERLITE OPTICAL TECHNOLOGIES LIMITED",
- [3]byte{0, 25, 55}: "CommerceGuard AB",
- [3]byte{0, 25, 56}: "UMB Communications Co., Ltd.",
- [3]byte{0, 25, 57}: "Gigamips",
- [3]byte{0, 25, 58}: "OESOLUTIONS",
- [3]byte{0, 25, 59}: "Wilibox Deliberant Group LLC",
- [3]byte{0, 25, 60}: "HighPoint Technologies Incorporated",
- [3]byte{0, 25, 61}: "GMC Guardian Mobility Corp.",
- [3]byte{0, 25, 62}: "ADB Broadband Italia",
- [3]byte{0, 25, 63}: "RDI technology(Shenzhen) Co.,LTD",
- [3]byte{0, 25, 64}: "Rackable Systems",
- [3]byte{0, 25, 65}: "Pitney Bowes, Inc",
- [3]byte{0, 25, 66}: "ON SOFTWARE INTERNATIONAL LIMITED",
- [3]byte{0, 25, 67}: "Belden",
- [3]byte{0, 25, 68}: "Fossil Partners, L.P.",
- [3]byte{0, 25, 69}: "RF COncepts, LLC",
- [3]byte{0, 25, 70}: "Cianet Industria e Comercio S/A",
- [3]byte{0, 25, 71}: "Cisco SPVTG",
- [3]byte{0, 25, 72}: "AireSpider Networks",
- [3]byte{0, 25, 73}: "TENTEL COMTECH CO., LTD.",
- [3]byte{0, 25, 74}: "TESTO AG",
- [3]byte{0, 25, 75}: "Sagemcom Broadband SAS",
- [3]byte{0, 25, 76}: "Fujian Stelcom information & Technology CO.,Ltd",
- [3]byte{0, 25, 77}: "Avago Technologies Sdn Bhd",
- [3]byte{0, 25, 78}: "Ultra Electronics - TCS (Tactical Communication Systems)",
- [3]byte{0, 25, 79}: "Nokia Danmark A/S",
- [3]byte{0, 25, 80}: "Harman Multimedia",
- [3]byte{0, 25, 81}: "NETCONS, s.r.o.",
- [3]byte{0, 25, 82}: "ACOGITO Co., Ltd",
- [3]byte{0, 25, 83}: "Chainleader Communications Corp.",
- [3]byte{0, 25, 84}: "Leaf Corporation.",
- [3]byte{0, 25, 85}: "Cisco Systems, Inc",
- [3]byte{0, 25, 86}: "Cisco Systems, Inc",
- [3]byte{0, 25, 87}: "Saafnet Canada Inc.",
- [3]byte{0, 25, 88}: "Bluetooth SIG, Inc.",
- [3]byte{0, 25, 89}: "Staccato Communications Inc.",
- [3]byte{0, 25, 90}: "Jenaer Antriebstechnik GmbH",
- [3]byte{0, 25, 91}: "D-Link Corporation",
- [3]byte{0, 25, 92}: "Innotech Corporation",
- [3]byte{0, 25, 93}: "ShenZhen XinHuaTong Opto Electronics Co.,Ltd",
- [3]byte{0, 25, 94}: "ARRIS Group, Inc.",
- [3]byte{0, 25, 95}: "Valemount Networks Corporation",
- [3]byte{0, 25, 96}: "DoCoMo Systems, Inc.",
- [3]byte{0, 25, 97}: "Blaupunkt Embedded Systems GmbH",
- [3]byte{0, 25, 98}: "Commerciant, LP",
- [3]byte{0, 25, 99}: "Sony Mobile Communications AB",
- [3]byte{0, 25, 100}: "Doorking Inc.",
- [3]byte{0, 25, 101}: "YuHua TelTech (ShangHai) Co., Ltd.",
- [3]byte{0, 25, 102}: "Asiarock Technology Limited",
- [3]byte{0, 25, 103}: "TELDAT Sp.J.",
- [3]byte{0, 25, 104}: "Digital Video Networks(Shanghai) CO. LTD.",
- [3]byte{0, 25, 105}: "Nortel Networks",
- [3]byte{0, 25, 106}: "MikroM GmbH",
- [3]byte{0, 25, 107}: "Danpex Corporation",
- [3]byte{0, 25, 108}: "ETROVISION TECHNOLOGY",
- [3]byte{0, 25, 109}: "Raybit Systems Korea, Inc",
- [3]byte{0, 25, 110}: "Metacom (Pty) Ltd.",
- [3]byte{0, 25, 111}: "SensoPart GmbH",
- [3]byte{0, 25, 112}: "Z-Com, Inc.",
- [3]byte{0, 25, 113}: "Guangzhou Unicomp Technology Co.,Ltd",
- [3]byte{0, 25, 114}: "Plexus (Xiamen) Co.,ltd.",
- [3]byte{0, 25, 115}: "Zeugma Systems",
- [3]byte{0, 25, 116}: "16063",
- [3]byte{0, 25, 117}: "Beijing Huisen networks technology Inc",
- [3]byte{0, 25, 118}: "Xipher Technologies, LLC",
- [3]byte{0, 25, 119}: "Aerohive Networks Inc.",
- [3]byte{0, 25, 120}: "Datum Systems, Inc.",
- [3]byte{0, 25, 121}: "Nokia Danmark A/S",
- [3]byte{0, 25, 122}: "MAZeT GmbH",
- [3]byte{0, 25, 123}: "Picotest Corp.",
- [3]byte{0, 25, 124}: "Riedel Communications GmbH",
- [3]byte{0, 25, 125}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 25, 126}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 25, 127}: "PLANTRONICS, INC.",
- [3]byte{0, 25, 128}: "Gridpoint Systems",
- [3]byte{0, 25, 129}: "Vivox Inc",
- [3]byte{0, 25, 130}: "SmarDTV",
- [3]byte{0, 25, 131}: "CCT R&D Limited",
- [3]byte{0, 25, 132}: "ESTIC Corporation",
- [3]byte{0, 25, 133}: "IT Watchdogs, Inc",
- [3]byte{0, 25, 134}: "Cheng Hongjian",
- [3]byte{0, 25, 135}: "Panasonic Mobile Communications Co.,Ltd.",
- [3]byte{0, 25, 136}: "Wi2Wi, Inc",
- [3]byte{0, 25, 137}: "Sonitrol Corporation",
- [3]byte{0, 25, 138}: "Northrop Grumman Systems Corp.",
- [3]byte{0, 25, 139}: "Novera Optics Korea, Inc.",
- [3]byte{0, 25, 140}: "iXSea",
- [3]byte{0, 25, 141}: "Ocean Optics, Inc.",
- [3]byte{0, 25, 142}: "Oticon A/S",
- [3]byte{0, 25, 143}: "Alcatel Bell N.V.",
- [3]byte{0, 25, 144}: "ELM DATA Co., Ltd.",
- [3]byte{0, 25, 145}: "avinfo",
- [3]byte{0, 25, 146}: "Adtran Inc",
- [3]byte{0, 25, 147}: "Changshu Switchgear MFG. Co.,Ltd. (Former Changshu Switchgea",
- [3]byte{0, 25, 148}: "Jorjin Technologies Inc.",
- [3]byte{0, 25, 149}: "Jurong Hi-Tech (Suzhou)Co.ltd",
- [3]byte{0, 25, 150}: "TurboChef Technologies Inc.",
- [3]byte{0, 25, 151}: "Soft Device Sdn Bhd",
- [3]byte{0, 25, 152}: "SATO CORPORATION",
- [3]byte{0, 25, 153}: "Fujitsu Technology Solutions GmbH",
- [3]byte{0, 25, 154}: "EDO-EVI",
- [3]byte{0, 25, 155}: "Diversified Technical Systems, Inc.",
- [3]byte{0, 25, 156}: "CTRING",
- [3]byte{0, 25, 157}: "Vizio, Inc",
- [3]byte{0, 25, 158}: "Nifty",
- [3]byte{0, 25, 159}: "DKT A/S",
- [3]byte{0, 25, 160}: "NIHON DATA SYSTENS, INC.",
- [3]byte{0, 25, 161}: "LG INFORMATION & COMM.",
- [3]byte{0, 25, 162}: "ORDYN TECHNOLOGIES",
- [3]byte{0, 25, 163}: "asteel electronique atlantique",
- [3]byte{0, 25, 164}: "Austar Technology (hang zhou) Co.,Ltd",
- [3]byte{0, 25, 165}: "RadarFind Corporation",
- [3]byte{0, 25, 166}: "ARRIS Group, Inc.",
- [3]byte{0, 25, 167}: "ITU-T",
- [3]byte{0, 25, 168}: "WiQuest Communications",
- [3]byte{0, 25, 169}: "Cisco Systems, Inc",
- [3]byte{0, 25, 170}: "Cisco Systems, Inc",
- [3]byte{0, 25, 171}: "Raycom CO ., LTD",
- [3]byte{0, 25, 172}: "GSP SYSTEMS Inc.",
- [3]byte{0, 25, 173}: "BOBST SA",
- [3]byte{0, 25, 174}: "Hopling Technologies b.v.",
- [3]byte{0, 25, 175}: "Rigol Technologies, Inc.",
- [3]byte{0, 25, 176}: "HanYang System",
- [3]byte{0, 25, 177}: "Arrow7 Corporation",
- [3]byte{0, 25, 178}: "XYnetsoft Co.,Ltd",
- [3]byte{0, 25, 179}: "Stanford Research Systems",
- [3]byte{0, 25, 180}: "Intellio Ltd",
- [3]byte{0, 25, 181}: "Famar Fueguina S.A.",
- [3]byte{0, 25, 182}: "Euro Emme s.r.l.",
- [3]byte{0, 25, 183}: "Nokia Danmark A/S",
- [3]byte{0, 25, 184}: "Boundary Devices",
- [3]byte{0, 25, 185}: "Dell Inc.",
- [3]byte{0, 25, 186}: "Paradox Security Systems Ltd",
- [3]byte{0, 25, 187}: "Hewlett Packard",
- [3]byte{0, 25, 188}: "ELECTRO CHANCE SRL",
- [3]byte{0, 25, 189}: "New Media Life",
- [3]byte{0, 25, 190}: "Altai Technologies Limited",
- [3]byte{0, 25, 191}: "Citiway technology Co.,ltd",
- [3]byte{0, 25, 192}: "ARRIS Group, Inc.",
- [3]byte{0, 25, 193}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 25, 194}: "Equustek Solutions, Inc.",
- [3]byte{0, 25, 195}: "Qualitrol",
- [3]byte{0, 25, 196}: "Infocrypt Inc.",
- [3]byte{0, 25, 197}: "Sony Interactive Entertainment Inc.",
- [3]byte{0, 25, 198}: "zte corporation",
- [3]byte{0, 25, 199}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{0, 25, 200}: "AnyDATA Corporation",
- [3]byte{0, 25, 201}: "S&C ELECTRIC COMPANY",
- [3]byte{0, 25, 202}: "Broadata Communications, Inc",
- [3]byte{0, 25, 203}: "Zyxel Communications Corporation",
- [3]byte{0, 25, 204}: "RCG (HK) Ltd",
- [3]byte{0, 25, 205}: "Chengdu ethercom information technology Ltd.",
- [3]byte{0, 25, 206}: "Progressive Gaming International",
- [3]byte{0, 25, 207}: "SALICRU, S.A.",
- [3]byte{0, 25, 208}: "Cathexis",
- [3]byte{0, 25, 209}: "Intel Corporate",
- [3]byte{0, 25, 210}: "Intel Corporate",
- [3]byte{0, 25, 211}: "TRAK Microwave",
- [3]byte{0, 25, 212}: "ICX Technologies",
- [3]byte{0, 25, 213}: "IP Innovations, Inc.",
- [3]byte{0, 25, 214}: "LS Cable and System Ltd.",
- [3]byte{0, 25, 215}: "FORTUNETEK CO., LTD",
- [3]byte{0, 25, 216}: "MAXFOR",
- [3]byte{0, 25, 217}: "Zeutschel GmbH",
- [3]byte{0, 25, 218}: "Welltrans O&E Technology Co. , Ltd.",
- [3]byte{0, 25, 219}: "MICRO-STAR INTERNATIONAL CO., LTD.",
- [3]byte{0, 25, 220}: "ENENSYS Technologies",
- [3]byte{0, 25, 221}: "FEI-Zyfer, Inc.",
- [3]byte{0, 25, 222}: "MOBITEK",
- [3]byte{0, 25, 223}: "Thomson Inc.",
- [3]byte{0, 25, 224}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{0, 25, 225}: "Nortel Networks",
- [3]byte{0, 25, 226}: "Juniper Networks",
- [3]byte{0, 25, 227}: "Apple, Inc.",
- [3]byte{0, 25, 228}: "2Wire Inc",
- [3]byte{0, 25, 229}: "Lynx Studio Technology, Inc.",
- [3]byte{0, 25, 230}: "TOYO MEDIC CO.,LTD.",
- [3]byte{0, 25, 231}: "Cisco Systems, Inc",
- [3]byte{0, 25, 232}: "Cisco Systems, Inc",
- [3]byte{0, 25, 233}: "S-Information Technolgy, Co., Ltd.",
- [3]byte{0, 25, 234}: "TeraMage Technologies Co., Ltd.",
- [3]byte{0, 25, 235}: "Pyronix Ltd",
- [3]byte{0, 25, 236}: "Sagamore Systems, Inc.",
- [3]byte{0, 25, 237}: "Axesstel Inc.",
- [3]byte{0, 25, 238}: "CARLO GAVAZZI CONTROLS SPA-Controls Division",
- [3]byte{0, 25, 239}: "SHENZHEN LINNKING ELECTRONICS CO.,LTD",
- [3]byte{0, 25, 240}: "UNIONMAN TECHNOLOGY CO.,LTD",
- [3]byte{0, 25, 241}: "Star Communication Network Technology Co.,Ltd",
- [3]byte{0, 25, 242}: "Teradyne K.K.",
- [3]byte{0, 25, 243}: "Cetis, Inc",
- [3]byte{0, 25, 244}: "Convergens Oy Ltd",
- [3]byte{0, 25, 245}: "Imagination Technologies Ltd",
- [3]byte{0, 25, 246}: "Acconet (PTE) Ltd",
- [3]byte{0, 25, 247}: "Onset Computer Corporation",
- [3]byte{0, 25, 248}: "Embedded Systems Design, Inc.",
- [3]byte{0, 25, 249}: "TDK-Lambda",
- [3]byte{0, 25, 250}: "Cable Vision Electronics CO., LTD.",
- [3]byte{0, 25, 251}: "BSkyB Ltd",
- [3]byte{0, 25, 252}: "PT. Ufoakses Sukses Luarbiasa",
- [3]byte{0, 25, 253}: "Nintendo Co., Ltd.",
- [3]byte{0, 25, 254}: "SHENZHEN SEECOMM TECHNOLOGY CO.,LTD.",
- [3]byte{0, 25, 255}: "Finnzymes",
- [3]byte{0, 26, 0}: "MATRIX INC.",
- [3]byte{0, 26, 1}: "Smiths Medical",
- [3]byte{0, 26, 2}: "SECURE CARE PRODUCTS, INC",
- [3]byte{0, 26, 3}: "Angel Electronics Co., Ltd.",
- [3]byte{0, 26, 4}: "Interay Solutions BV",
- [3]byte{0, 26, 5}: "OPTIBASE LTD",
- [3]byte{0, 26, 6}: "OpVista, Inc.",
- [3]byte{0, 26, 7}: "Arecont Vision",
- [3]byte{0, 26, 8}: "Simoco Ltd.",
- [3]byte{0, 26, 9}: "Wayfarer Transit Systems Ltd",
- [3]byte{0, 26, 10}: "Adaptive Micro-Ware Inc.",
- [3]byte{0, 26, 11}: "BONA TECHNOLOGY INC.",
- [3]byte{0, 26, 12}: "Swe-Dish Satellite Systems AB",
- [3]byte{0, 26, 13}: "HandHeld entertainment, Inc.",
- [3]byte{0, 26, 14}: "Cheng Uei Precision Industry Co.,Ltd",
- [3]byte{0, 26, 15}: "Sistemas Avanzados de Control, S.A.",
- [3]byte{0, 26, 16}: "LUCENT TRANS ELECTRONICS CO.,LTD",
- [3]byte{0, 26, 17}: "Google, Inc.",
- [3]byte{0, 26, 18}: "Essilor",
- [3]byte{0, 26, 19}: "Wanlida Group Co., LTD",
- [3]byte{0, 26, 20}: "Xin Hua Control Engineering Co.,Ltd.",
- [3]byte{0, 26, 21}: "gemalto e-Payment",
- [3]byte{0, 26, 22}: "Nokia Danmark A/S",
- [3]byte{0, 26, 23}: "Teak Technologies, Inc.",
- [3]byte{0, 26, 24}: "Advanced Simulation Technology inc.",
- [3]byte{0, 26, 25}: "Computer Engineering Limited",
- [3]byte{0, 26, 26}: "Gentex Corporation/Electro-Acoustic Products",
- [3]byte{0, 26, 27}: "ARRIS Group, Inc.",
- [3]byte{0, 26, 28}: "GT&T Engineering Pte Ltd",
- [3]byte{0, 26, 29}: "PChome Online Inc.",
- [3]byte{0, 26, 30}: "Aruba Networks",
- [3]byte{0, 26, 31}: "Coastal Environmental Systems",
- [3]byte{0, 26, 32}: "CMOTECH Co. Ltd.",
- [3]byte{0, 26, 33}: "Brookhuis Applied Technologies BV",
- [3]byte{0, 26, 34}: "eQ-3 Entwicklung GmbH",
- [3]byte{0, 26, 35}: "Ice Qube, Inc",
- [3]byte{0, 26, 36}: "Galaxy Telecom Technologies Ltd",
- [3]byte{0, 26, 37}: "DELTA DORE",
- [3]byte{0, 26, 38}: "Deltanode Solutions AB",
- [3]byte{0, 26, 39}: "Ubistar",
- [3]byte{0, 26, 40}: "ASWT Co., LTD. Taiwan Branch H.K.",
- [3]byte{0, 26, 41}: "Johnson Outdoors Marine Electronics d/b/a Minnkota",
- [3]byte{0, 26, 42}: "Arcadyan Technology Corporation",
- [3]byte{0, 26, 43}: "Ayecom Technology Co., Ltd.",
- [3]byte{0, 26, 44}: "SATEC Co.,LTD",
- [3]byte{0, 26, 45}: "The Navvo Group",
- [3]byte{0, 26, 46}: "Ziova Coporation",
- [3]byte{0, 26, 47}: "Cisco Systems, Inc",
- [3]byte{0, 26, 48}: "Cisco Systems, Inc",
- [3]byte{0, 26, 49}: "SCAN COIN Industries AB",
- [3]byte{0, 26, 50}: "ACTIVA MULTIMEDIA",
- [3]byte{0, 26, 51}: "ASI Communications, Inc.",
- [3]byte{0, 26, 52}: "Konka Group Co., Ltd.",
- [3]byte{0, 26, 53}: "BARTEC GmbH",
- [3]byte{0, 26, 54}: "Aipermon GmbH & Co. KG",
- [3]byte{0, 26, 55}: "Lear Corporation",
- [3]byte{0, 26, 56}: "Sanmina-SCI",
- [3]byte{0, 26, 57}: "Merten GmbH&CoKG",
- [3]byte{0, 26, 58}: "Dongahelecomm",
- [3]byte{0, 26, 59}: "Doah Elecom Inc.",
- [3]byte{0, 26, 60}: "Technowave Ltd.",
- [3]byte{0, 26, 61}: "Ajin Vision Co.,Ltd",
- [3]byte{0, 26, 62}: "Faster Technology LLC",
- [3]byte{0, 26, 63}: "intelbras",
- [3]byte{0, 26, 64}: "A-FOUR TECH CO., LTD.",
- [3]byte{0, 26, 65}: "INOCOVA Co.,Ltd",
- [3]byte{0, 26, 66}: "Techcity Technology co., Ltd.",
- [3]byte{0, 26, 67}: "Logical Link Communications",
- [3]byte{0, 26, 68}: "JWTrading Co., Ltd",
- [3]byte{0, 26, 69}: "GN Netcom A/S",
- [3]byte{0, 26, 70}: "Digital Multimedia Technology Co., Ltd",
- [3]byte{0, 26, 71}: "Agami Systems, Inc.",
- [3]byte{0, 26, 72}: "Takacom Corporation",
- [3]byte{0, 26, 73}: "Micro Vision Co.,LTD",
- [3]byte{0, 26, 74}: "Qumranet Inc.",
- [3]byte{0, 26, 75}: "Hewlett Packard",
- [3]byte{0, 26, 76}: "Crossbow Technology, Inc",
- [3]byte{0, 26, 77}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{0, 26, 78}: "NTI AG / LinMot",
- [3]byte{0, 26, 79}: "AVM GmbH",
- [3]byte{0, 26, 80}: "PheeNet Technology Corp.",
- [3]byte{0, 26, 81}: "Alfred Mann Foundation",
- [3]byte{0, 26, 82}: "Meshlinx Wireless Inc.",
- [3]byte{0, 26, 83}: "Zylaya",
- [3]byte{0, 26, 84}: "Hip Shing Electronics Ltd.",
- [3]byte{0, 26, 85}: "ACA-Digital Corporation",
- [3]byte{0, 26, 86}: "ViewTel Co,. Ltd.",
- [3]byte{0, 26, 87}: "Matrix Design Group, LLC",
- [3]byte{0, 26, 88}: "CCV Deutschland GmbH - Celectronic eHealth Div.",
- [3]byte{0, 26, 89}: "Ircona",
- [3]byte{0, 26, 90}: "Korea Electric Power Data Network (KDN) Co., Ltd",
- [3]byte{0, 26, 91}: "NetCare Service Co., Ltd.",
- [3]byte{0, 26, 92}: "Euchner GmbH+Co. KG",
- [3]byte{0, 26, 93}: "Mobinnova Corp.",
- [3]byte{0, 26, 94}: "Thincom Technology Co.,Ltd",
- [3]byte{0, 26, 95}: "KitWorks.fi Ltd.",
- [3]byte{0, 26, 96}: "Wave Electronics Co.,Ltd.",
- [3]byte{0, 26, 97}: "PacStar Corp.",
- [3]byte{0, 26, 98}: "Data Robotics, Incorporated",
- [3]byte{0, 26, 99}: "Elster Solutions, LLC,",
- [3]byte{0, 26, 100}: "IBM Corp",
- [3]byte{0, 26, 101}: "Seluxit",
- [3]byte{0, 26, 102}: "ARRIS Group, Inc.",
- [3]byte{0, 26, 103}: "Infinite QL Sdn Bhd",
- [3]byte{0, 26, 104}: "Weltec Enterprise Co., Ltd.",
- [3]byte{0, 26, 105}: "Wuhan Yangtze Optical Technology CO.,Ltd.",
- [3]byte{0, 26, 106}: "Tranzas, Inc.",
- [3]byte{0, 26, 107}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{0, 26, 108}: "Cisco Systems, Inc",
- [3]byte{0, 26, 109}: "Cisco Systems, Inc",
- [3]byte{0, 26, 110}: "Impro Technologies",
- [3]byte{0, 26, 111}: "MI.TEL s.r.l.",
- [3]byte{0, 26, 112}: "Cisco-Linksys, LLC",
- [3]byte{0, 26, 113}: "Diostech Co., Ltd.",
- [3]byte{0, 26, 114}: "Mosart Semiconductor Corp.",
- [3]byte{0, 26, 115}: "Gemtek Technology Co., Ltd.",
- [3]byte{0, 26, 116}: "Procare International Co",
- [3]byte{0, 26, 117}: "Sony Mobile Communications AB",
- [3]byte{0, 26, 118}: "SDT information Technology Co.,LTD.",
- [3]byte{0, 26, 119}: "ARRIS Group, Inc.",
- [3]byte{0, 26, 120}: "ubtos",
- [3]byte{0, 26, 121}: "TELECOMUNICATION TECHNOLOGIES LTD.",
- [3]byte{0, 26, 122}: "Lismore Instruments Limited",
- [3]byte{0, 26, 123}: "Teleco, Inc.",
- [3]byte{0, 26, 124}: "Hirschmann Multimedia B.V.",
- [3]byte{0, 26, 125}: "cyber-blue(HK)Ltd",
- [3]byte{0, 26, 126}: "LN Srithai Comm Ltd.",
- [3]byte{0, 26, 127}: "GCI Science & Technology Co.,LTD",
- [3]byte{0, 26, 128}: "Sony Corporation",
- [3]byte{0, 26, 129}: "Zelax",
- [3]byte{0, 26, 130}: "PROBA Building Automation Co.,LTD",
- [3]byte{0, 26, 131}: "Pegasus Technologies Inc.",
- [3]byte{0, 26, 132}: "V One Multimedia Pte Ltd",
- [3]byte{0, 26, 133}: "NV Michel Van de Wiele",
- [3]byte{0, 26, 134}: "AdvancedIO Systems Inc",
- [3]byte{0, 26, 135}: "Canhold International Limited",
- [3]byte{0, 26, 136}: "Venergy,Co,Ltd",
- [3]byte{0, 26, 137}: "Nokia Danmark A/S",
- [3]byte{0, 26, 138}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 26, 139}: "CHUNIL ELECTRIC IND., CO.",
- [3]byte{0, 26, 140}: "Sophos Ltd",
- [3]byte{0, 26, 141}: "AVECS Bergen GmbH",
- [3]byte{0, 26, 142}: "3Way Networks Ltd",
- [3]byte{0, 26, 143}: "Nortel Networks",
- [3]byte{0, 26, 144}: "Trópico Sistemas e Telecomunicações da Amazônia LTDA.",
- [3]byte{0, 26, 145}: "FusionDynamic Ltd.",
- [3]byte{0, 26, 146}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 26, 147}: "ERCO Leuchten GmbH",
- [3]byte{0, 26, 148}: "Votronic GmbH",
- [3]byte{0, 26, 149}: "Hisense Mobile Communications Technoligy Co.,Ltd.",
- [3]byte{0, 26, 150}: "ECLER S.A.",
- [3]byte{0, 26, 151}: "fitivision technology Inc.",
- [3]byte{0, 26, 152}: "Asotel Communication Limited Taiwan Branch",
- [3]byte{0, 26, 153}: "Smarty (HZ) Information Electronics Co., Ltd",
- [3]byte{0, 26, 154}: "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
- [3]byte{0, 26, 155}: "ADEC & Parter AG",
- [3]byte{0, 26, 156}: "RightHand Technologies, Inc.",
- [3]byte{0, 26, 157}: "Skipper Wireless, Inc.",
- [3]byte{0, 26, 158}: "ICON Digital International Limited",
- [3]byte{0, 26, 159}: "A-Link Ltd",
- [3]byte{0, 26, 160}: "Dell Inc.",
- [3]byte{0, 26, 161}: "Cisco Systems, Inc",
- [3]byte{0, 26, 162}: "Cisco Systems, Inc",
- [3]byte{0, 26, 163}: "DELORME",
- [3]byte{0, 26, 164}: "Future University-Hakodate",
- [3]byte{0, 26, 165}: "BRN Phoenix",
- [3]byte{0, 26, 166}: "Telefunken Radio Communication Systems GmbH &CO.KG",
- [3]byte{0, 26, 167}: "Torian Wireless",
- [3]byte{0, 26, 168}: "Mamiya Digital Imaging Co., Ltd.",
- [3]byte{0, 26, 169}: "FUJIAN STAR-NET COMMUNICATION CO.,LTD",
- [3]byte{0, 26, 170}: "Analogic Corp.",
- [3]byte{0, 26, 171}: "eWings s.r.l.",
- [3]byte{0, 26, 172}: "Corelatus AB",
- [3]byte{0, 26, 173}: "ARRIS Group, Inc.",
- [3]byte{0, 26, 174}: "Savant Systems LLC",
- [3]byte{0, 26, 175}: "BLUSENS TECHNOLOGY",
- [3]byte{0, 26, 176}: "Signal Networks Pvt. Ltd.,",
- [3]byte{0, 26, 177}: "Asia Pacific Satellite Industries Co., Ltd.",
- [3]byte{0, 26, 178}: "Cyber Solutions Inc.",
- [3]byte{0, 26, 179}: "VISIONITE INC.",
- [3]byte{0, 26, 180}: "FFEI Ltd.",
- [3]byte{0, 26, 181}: "Home Network System",
- [3]byte{0, 26, 182}: "Texas Instruments",
- [3]byte{0, 26, 183}: "Ethos Networks LTD.",
- [3]byte{0, 26, 184}: "Anseri Corporation",
- [3]byte{0, 26, 185}: "PMC",
- [3]byte{0, 26, 186}: "Caton Overseas Limited",
- [3]byte{0, 26, 187}: "Fontal Technology Incorporation",
- [3]byte{0, 26, 188}: "U4EA Technologies Ltd",
- [3]byte{0, 26, 189}: "Impatica Inc.",
- [3]byte{0, 26, 190}: "COMPUTER HI-TECH INC.",
- [3]byte{0, 26, 191}: "TRUMPF Laser Marking Systems AG",
- [3]byte{0, 26, 192}: "JOYBIEN TECHNOLOGIES CO., LTD.",
- [3]byte{0, 26, 193}: "3Com Ltd",
- [3]byte{0, 26, 194}: "YEC Co.,Ltd.",
- [3]byte{0, 26, 195}: "Scientific-Atlanta, Inc",
- [3]byte{0, 26, 196}: "2Wire Inc",
- [3]byte{0, 26, 197}: "BreakingPoint Systems, Inc.",
- [3]byte{0, 26, 198}: "Micro Control Designs",
- [3]byte{0, 26, 199}: "UNIPOINT",
- [3]byte{0, 26, 200}: "ISL (Instrumentation Scientifique de Laboratoire)",
- [3]byte{0, 26, 201}: "SUZUKEN CO.,LTD",
- [3]byte{0, 26, 202}: "Tilera Corporation",
- [3]byte{0, 26, 203}: "Autocom Products Ltd",
- [3]byte{0, 26, 204}: "Celestial Semiconductor, Ltd",
- [3]byte{0, 26, 205}: "Tidel Engineering LP",
- [3]byte{0, 26, 206}: "YUPITERU CORPORATION",
- [3]byte{0, 26, 207}: "C.T. ELETTRONICA",
- [3]byte{0, 26, 208}: "Albis Technologies AG",
- [3]byte{0, 26, 209}: "FARGO CO., LTD.",
- [3]byte{0, 26, 210}: "Eletronica Nitron Ltda",
- [3]byte{0, 26, 211}: "Vamp Ltd.",
- [3]byte{0, 26, 212}: "iPOX Technology Co., Ltd.",
- [3]byte{0, 26, 213}: "KMC CHAIN INDUSTRIAL CO., LTD.",
- [3]byte{0, 26, 214}: "JIAGNSU AETNA ELECTRIC CO.,LTD",
- [3]byte{0, 26, 215}: "Christie Digital Systems, Inc.",
- [3]byte{0, 26, 216}: "AlsterAero GmbH",
- [3]byte{0, 26, 217}: "International Broadband Electric Communications, Inc.",
- [3]byte{0, 26, 218}: "Biz-2-Me Inc.",
- [3]byte{0, 26, 219}: "ARRIS Group, Inc.",
- [3]byte{0, 26, 220}: "Nokia Danmark A/S",
- [3]byte{0, 26, 221}: "PePWave Ltd",
- [3]byte{0, 26, 222}: "ARRIS Group, Inc.",
- [3]byte{0, 26, 223}: "Interactivetv Pty Limited",
- [3]byte{0, 26, 224}: "Mythology Tech Express Inc.",
- [3]byte{0, 26, 225}: "EDGE ACCESS INC",
- [3]byte{0, 26, 226}: "Cisco Systems, Inc",
- [3]byte{0, 26, 227}: "Cisco Systems, Inc",
- [3]byte{0, 26, 228}: "Medicis Technologies Corporation",
- [3]byte{0, 26, 229}: "Mvox Technologies Inc.",
- [3]byte{0, 26, 230}: "Atlanta Advanced Communications Holdings Limited",
- [3]byte{0, 26, 231}: "Aztek Networks, Inc.",
- [3]byte{0, 26, 232}: "Unify Software and Solutions GmbH & Co. KG",
- [3]byte{0, 26, 233}: "Nintendo Co., Ltd.",
- [3]byte{0, 26, 234}: "Radio Terminal Systems Pty Ltd",
- [3]byte{0, 26, 235}: "Allied Telesis R&D Center K.K.",
- [3]byte{0, 26, 236}: "Keumbee Electronics Co.,Ltd.",
- [3]byte{0, 26, 237}: "INCOTEC GmbH",
- [3]byte{0, 26, 238}: "Shenztech Ltd",
- [3]byte{0, 26, 239}: "Loopcomm Technology, Inc.",
- [3]byte{0, 26, 240}: "Alcatel-Lucent IPD",
- [3]byte{0, 26, 241}: "Embedded Artists AB",
- [3]byte{0, 26, 242}: "Dynavisions Schweiz AG",
- [3]byte{0, 26, 243}: "Samyoung Electronics",
- [3]byte{0, 26, 244}: "Handreamnet",
- [3]byte{0, 26, 245}: "PENTAONE. CO., LTD.",
- [3]byte{0, 26, 246}: "Woven Systems, Inc.",
- [3]byte{0, 26, 247}: "dataschalt e+a GmbH",
- [3]byte{0, 26, 248}: "Copley Controls Corporation",
- [3]byte{0, 26, 249}: "AeroVIronment (AV Inc)",
- [3]byte{0, 26, 250}: "Welch Allyn, Inc.",
- [3]byte{0, 26, 251}: "Joby Inc.",
- [3]byte{0, 26, 252}: "ModusLink Corporation",
- [3]byte{0, 26, 253}: "EVOLIS",
- [3]byte{0, 26, 254}: "SOFACREAL",
- [3]byte{0, 26, 255}: "Wizyoung Tech.",
- [3]byte{0, 27, 0}: "Neopost Technologies",
- [3]byte{0, 27, 1}: "Applied Radio Technologies",
- [3]byte{0, 27, 2}: "ED Co.Ltd",
- [3]byte{0, 27, 3}: "Action Technology (SZ) Co., Ltd",
- [3]byte{0, 27, 4}: "Affinity International S.p.a",
- [3]byte{0, 27, 5}: "YMC AG",
- [3]byte{0, 27, 6}: "Ateliers R. LAUMONIER",
- [3]byte{0, 27, 7}: "Mendocino Software",
- [3]byte{0, 27, 8}: "Danfoss Drives A/S",
- [3]byte{0, 27, 9}: "Matrix Telecom Pvt. Ltd.",
- [3]byte{0, 27, 10}: "Intelligent Distributed Controls Ltd",
- [3]byte{0, 27, 11}: "Phidgets Inc.",
- [3]byte{0, 27, 12}: "Cisco Systems, Inc",
- [3]byte{0, 27, 13}: "Cisco Systems, Inc",
- [3]byte{0, 27, 14}: "InoTec GmbH Organisationssysteme",
- [3]byte{0, 27, 15}: "Petratec",
- [3]byte{0, 27, 16}: "ShenZhen Kang Hui Technology Co.,ltd",
- [3]byte{0, 27, 17}: "D-Link Corporation",
- [3]byte{0, 27, 18}: "Apprion",
- [3]byte{0, 27, 19}: "Icron Technologies Corporation",
- [3]byte{0, 27, 20}: "Carex Lighting Equipment Factory",
- [3]byte{0, 27, 21}: "Voxtel, Inc.",
- [3]byte{0, 27, 22}: "Celtro Ltd.",
- [3]byte{0, 27, 23}: "Palo Alto Networks",
- [3]byte{0, 27, 24}: "Tsuken Electric Ind. Co.,Ltd",
- [3]byte{0, 27, 25}: "IEEE I&M Society TC9",
- [3]byte{0, 27, 26}: "e-trees Japan, Inc.",
- [3]byte{0, 27, 27}: "Siemens AG,",
- [3]byte{0, 27, 28}: "Coherent",
- [3]byte{0, 27, 29}: "Phoenix International Co., Ltd",
- [3]byte{0, 27, 30}: "HART Communication Foundation",
- [3]byte{0, 27, 31}: "DELTA - Danish Electronics, Light & Acoustics",
- [3]byte{0, 27, 32}: "TPine Technology",
- [3]byte{0, 27, 33}: "Intel Corporate",
- [3]byte{0, 27, 34}: "Palit Microsystems ( H.K.) Ltd.",
- [3]byte{0, 27, 35}: "SimpleComTools",
- [3]byte{0, 27, 36}: "QUANTA COMPUTER INC.",
- [3]byte{0, 27, 37}: "Nortel Networks",
- [3]byte{0, 27, 38}: "RON-Telecom ZAO",
- [3]byte{0, 27, 39}: "Merlin CSI",
- [3]byte{0, 27, 40}: "POLYGON, JSC",
- [3]byte{0, 27, 41}: "Avantis.Co.,Ltd",
- [3]byte{0, 27, 42}: "Cisco Systems, Inc",
- [3]byte{0, 27, 43}: "Cisco Systems, Inc",
- [3]byte{0, 27, 44}: "ATRON electronic GmbH",
- [3]byte{0, 27, 45}: "Med-Eng Systems Inc.",
- [3]byte{0, 27, 46}: "Sinkyo Electron Inc",
- [3]byte{0, 27, 47}: "NETGEAR",
- [3]byte{0, 27, 48}: "Solitech Inc.",
- [3]byte{0, 27, 49}: "Neural Image. Co. Ltd.",
- [3]byte{0, 27, 50}: "QLogic Corporation",
- [3]byte{0, 27, 51}: "Nokia Danmark A/S",
- [3]byte{0, 27, 52}: "Focus System Inc.",
- [3]byte{0, 27, 53}: "ChongQing JINOU Science & Technology Development CO.,Ltd",
- [3]byte{0, 27, 54}: "Tsubata Engineering Co.,Ltd. (Head Office)",
- [3]byte{0, 27, 55}: "Computec Oy",
- [3]byte{0, 27, 56}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{0, 27, 57}: "Proxicast",
- [3]byte{0, 27, 58}: "SIMS Corp.",
- [3]byte{0, 27, 59}: "Yi-Qing CO., LTD",
- [3]byte{0, 27, 60}: "Software Technologies Group,Inc.",
- [3]byte{0, 27, 61}: "EuroTel Spa",
- [3]byte{0, 27, 62}: "Curtis, Inc.",
- [3]byte{0, 27, 63}: "ProCurve Networking by HP",
- [3]byte{0, 27, 64}: "Network Automation mxc AB",
- [3]byte{0, 27, 65}: "General Infinity Co.,Ltd.",
- [3]byte{0, 27, 66}: "Wise & Blue",
- [3]byte{0, 27, 67}: "Beijing DG Telecommunications equipment Co.,Ltd",
- [3]byte{0, 27, 68}: "SanDisk Corporation",
- [3]byte{0, 27, 69}: "ABB AS, Division Automation Products",
- [3]byte{0, 27, 70}: "Blueone Technology Co.,Ltd",
- [3]byte{0, 27, 71}: "Futarque A/S",
- [3]byte{0, 27, 72}: "Shenzhen Lantech Electronics Co., Ltd.",
- [3]byte{0, 27, 73}: "Roberts Radio limited",
- [3]byte{0, 27, 74}: "W&W Communications, Inc.",
- [3]byte{0, 27, 75}: "SANION Co., Ltd.",
- [3]byte{0, 27, 76}: "Signtech",
- [3]byte{0, 27, 77}: "Areca Technology Corporation",
- [3]byte{0, 27, 78}: "Navman New Zealand",
- [3]byte{0, 27, 79}: "Avaya Inc",
- [3]byte{0, 27, 80}: "Nizhny Novgorod Factory named after M.Frunze, FSUE (NZiF)",
- [3]byte{0, 27, 81}: "Vector Technology Corp.",
- [3]byte{0, 27, 82}: "ARRIS Group, Inc.",
- [3]byte{0, 27, 83}: "Cisco Systems, Inc",
- [3]byte{0, 27, 84}: "Cisco Systems, Inc",
- [3]byte{0, 27, 85}: "Hurco Automation Ltd.",
- [3]byte{0, 27, 86}: "Tehuti Networks Ltd.",
- [3]byte{0, 27, 87}: "SEMINDIA SYSTEMS PRIVATE LIMITED",
- [3]byte{0, 27, 88}: "ACE CAD Enterprise Co., Ltd.",
- [3]byte{0, 27, 89}: "Sony Mobile Communications AB",
- [3]byte{0, 27, 90}: "Apollo Imaging Technologies, Inc.",
- [3]byte{0, 27, 91}: "2Wire Inc",
- [3]byte{0, 27, 92}: "Azuretec Co., Ltd.",
- [3]byte{0, 27, 93}: "Vololink Pty Ltd",
- [3]byte{0, 27, 94}: "BPL Limited",
- [3]byte{0, 27, 95}: "Alien Technology",
- [3]byte{0, 27, 96}: "NAVIGON AG",
- [3]byte{0, 27, 97}: "Digital Acoustics, LLC",
- [3]byte{0, 27, 98}: "JHT Optoelectronics Co.,Ltd.",
- [3]byte{0, 27, 99}: "Apple, Inc.",
- [3]byte{0, 27, 100}: "IsaacLandKorea Co., Ltd,",
- [3]byte{0, 27, 101}: "China Gridcom Co., Ltd",
- [3]byte{0, 27, 102}: "Sennheiser electronic GmbH & Co. KG",
- [3]byte{0, 27, 103}: "Cisco Systems Inc",
- [3]byte{0, 27, 104}: "Modnnet Co., Ltd",
- [3]byte{0, 27, 105}: "Equaline Corporation",
- [3]byte{0, 27, 106}: "Powerwave Technologies Sweden AB",
- [3]byte{0, 27, 107}: "Swyx Solutions AG",
- [3]byte{0, 27, 108}: "LookX Digital Media BV",
- [3]byte{0, 27, 109}: "Midtronics, Inc.",
- [3]byte{0, 27, 110}: "Anue Systems, Inc.",
- [3]byte{0, 27, 111}: "Teletrak Ltd",
- [3]byte{0, 27, 112}: "IRI Ubiteq, INC.",
- [3]byte{0, 27, 113}: "Telular Corp.",
- [3]byte{0, 27, 114}: "Sicep s.p.a.",
- [3]byte{0, 27, 115}: "DTL Broadcast Ltd",
- [3]byte{0, 27, 116}: "MiraLink Corporation",
- [3]byte{0, 27, 117}: "Hypermedia Systems",
- [3]byte{0, 27, 118}: "Ripcode, Inc.",
- [3]byte{0, 27, 119}: "Intel Corporate",
- [3]byte{0, 27, 120}: "Hewlett Packard",
- [3]byte{0, 27, 121}: "FAIVELEY TRANSPORT",
- [3]byte{0, 27, 122}: "Nintendo Co., Ltd.",
- [3]byte{0, 27, 123}: "The Tintometer Ltd",
- [3]byte{0, 27, 124}: "A & R Cambridge",
- [3]byte{0, 27, 125}: "CXR Anderson Jacobson",
- [3]byte{0, 27, 126}: "Beckmann GmbH",
- [3]byte{0, 27, 127}: "TMN Technologies Telecomunicacoes Ltda",
- [3]byte{0, 27, 128}: "LORD Corporation",
- [3]byte{0, 27, 129}: "DATAQ Instruments, Inc.",
- [3]byte{0, 27, 130}: "Taiwan Semiconductor Co., Ltd.",
- [3]byte{0, 27, 131}: "Finsoft Ltd",
- [3]byte{0, 27, 132}: "Scan Engineering Telecom",
- [3]byte{0, 27, 133}: "MAN Diesel SE",
- [3]byte{0, 27, 134}: "Bosch Access Systems GmbH",
- [3]byte{0, 27, 135}: "Deepsound Tech. Co., Ltd",
- [3]byte{0, 27, 136}: "Divinet Access Technologies Ltd",
- [3]byte{0, 27, 137}: "EMZA Visual Sense Ltd.",
- [3]byte{0, 27, 138}: "2M Electronic A/S",
- [3]byte{0, 27, 139}: "NEC Platforms, Ltd.",
- [3]byte{0, 27, 140}: "JMicron Technology Corp.",
- [3]byte{0, 27, 141}: "Electronic Computer Systems, Inc.",
- [3]byte{0, 27, 142}: "Hulu Sweden AB",
- [3]byte{0, 27, 143}: "Cisco Systems, Inc",
- [3]byte{0, 27, 144}: "Cisco Systems, Inc",
- [3]byte{0, 27, 145}: "EFKON AG",
- [3]byte{0, 27, 146}: "l-acoustics",
- [3]byte{0, 27, 147}: "JC Decaux SA DNT",
- [3]byte{0, 27, 148}: "T.E.M.A. S.p.A.",
- [3]byte{0, 27, 149}: "VIDEO SYSTEMS SRL",
- [3]byte{0, 27, 150}: "General Sensing",
- [3]byte{0, 27, 151}: "Violin Technologies",
- [3]byte{0, 27, 152}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 27, 153}: "KS System GmbH",
- [3]byte{0, 27, 154}: "Apollo Fire Detectors Ltd",
- [3]byte{0, 27, 155}: "Hose-McCann Communications",
- [3]byte{0, 27, 156}: "SATEL sp. z o.o.",
- [3]byte{0, 27, 157}: "Novus Security Sp. z o.o.",
- [3]byte{0, 27, 158}: "ASKEY COMPUTER CORP",
- [3]byte{0, 27, 159}: "Calyptech Pty Ltd",
- [3]byte{0, 27, 160}: "Awox",
- [3]byte{0, 27, 161}: "Åmic AB",
- [3]byte{0, 27, 162}: "IDS Imaging Development Systems GmbH",
- [3]byte{0, 27, 163}: "Flexit Group GmbH",
- [3]byte{0, 27, 164}: "S.A.E Afikim",
- [3]byte{0, 27, 165}: "MyungMin Systems, Inc.",
- [3]byte{0, 27, 166}: "intotech inc.",
- [3]byte{0, 27, 167}: "Lorica Solutions",
- [3]byte{0, 27, 168}: "UBI&MOBI,.Inc",
- [3]byte{0, 27, 169}: "Brother industries, LTD.",
- [3]byte{0, 27, 170}: "XenICs nv",
- [3]byte{0, 27, 171}: "Telchemy, Incorporated",
- [3]byte{0, 27, 172}: "Curtiss Wright Controls Embedded Computing",
- [3]byte{0, 27, 173}: "iControl Incorporated",
- [3]byte{0, 27, 174}: "Micro Control Systems, Inc",
- [3]byte{0, 27, 175}: "Nokia Danmark A/S",
- [3]byte{0, 27, 176}: "BHARAT ELECTRONICS",
- [3]byte{0, 27, 177}: "Wistron Neweb Corporation",
- [3]byte{0, 27, 178}: "Intellect International NV",
- [3]byte{0, 27, 179}: "Condalo GmbH",
- [3]byte{0, 27, 180}: "Airvod Limited",
- [3]byte{0, 27, 181}: "Cherry GmbH",
- [3]byte{0, 27, 182}: "Bird Electronic Corp.",
- [3]byte{0, 27, 183}: "Alta Heights Technology Corp.",
- [3]byte{0, 27, 184}: "BLUEWAY ELECTRONIC CO;LTD",
- [3]byte{0, 27, 185}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 27, 186}: "Nortel Networks",
- [3]byte{0, 27, 187}: "RFTech Co.,Ltd",
- [3]byte{0, 27, 188}: "Silver Peak Systems, Inc.",
- [3]byte{0, 27, 189}: "FMC Kongsberg Subsea AS",
- [3]byte{0, 27, 190}: "ICOP Digital",
- [3]byte{0, 27, 191}: "Sagemcom Broadband SAS",
- [3]byte{0, 27, 192}: "Juniper Networks",
- [3]byte{0, 27, 193}: "HOLUX Technology, Inc.",
- [3]byte{0, 27, 194}: "Integrated Control Technology Limitied",
- [3]byte{0, 27, 195}: "Mobisolution Co.,Ltd",
- [3]byte{0, 27, 196}: "Ultratec, Inc.",
- [3]byte{0, 27, 197}: "IEEE Registration Authority",
- [3]byte{0, 27, 198}: "Strato Rechenzentrum AG",
- [3]byte{0, 27, 199}: "StarVedia Technology Inc.",
- [3]byte{0, 27, 200}: "MIURA CO.,LTD",
- [3]byte{0, 27, 201}: "FSN DISPLAY INC",
- [3]byte{0, 27, 202}: "Beijing Run Technology LTD. Company",
- [3]byte{0, 27, 203}: "PEMPEK SYSTEMS PTY LTD",
- [3]byte{0, 27, 204}: "KINGTEK CCTV ALLIANCE CO., LTD.",
- [3]byte{0, 27, 205}: "DAVISCOMMS (S) PTE LTD",
- [3]byte{0, 27, 206}: "Measurement Devices Ltd",
- [3]byte{0, 27, 207}: "Dataupia Corporation",
- [3]byte{0, 27, 208}: "IDENTEC SOLUTIONS",
- [3]byte{0, 27, 209}: "SOGESTMATIC",
- [3]byte{0, 27, 210}: "ULTRA-X ASIA PACIFIC Inc.",
- [3]byte{0, 27, 211}: "Panasonic Corporation AVC Networks Company",
- [3]byte{0, 27, 212}: "Cisco Systems, Inc",
- [3]byte{0, 27, 213}: "Cisco Systems, Inc",
- [3]byte{0, 27, 214}: "Kelvin Hughes Ltd",
- [3]byte{0, 27, 215}: "Cisco SPVTG",
- [3]byte{0, 27, 216}: "DVTel LTD",
- [3]byte{0, 27, 217}: "Edgewater Computer Systems",
- [3]byte{0, 27, 218}: "UTStarcom Inc",
- [3]byte{0, 27, 219}: "Valeo VECS",
- [3]byte{0, 27, 220}: "Vencer Co., Ltd.",
- [3]byte{0, 27, 221}: "ARRIS Group, Inc.",
- [3]byte{0, 27, 222}: "Renkus-Heinz, Inc.",
- [3]byte{0, 27, 223}: "Iskra Sistemi d.d.",
- [3]byte{0, 27, 224}: "TELENOT ELECTRONIC GmbH",
- [3]byte{0, 27, 225}: "ViaLogy",
- [3]byte{0, 27, 226}: "AhnLab,Inc.",
- [3]byte{0, 27, 227}: "Health Hero Network, Inc.",
- [3]byte{0, 27, 228}: "TOWNET SRL",
- [3]byte{0, 27, 229}: "802automation Limited",
- [3]byte{0, 27, 230}: "VR AG",
- [3]byte{0, 27, 231}: "Postek Electronics Co., Ltd.",
- [3]byte{0, 27, 232}: "Ultratronik GmbH",
- [3]byte{0, 27, 233}: "Broadcom",
- [3]byte{0, 27, 234}: "Nintendo Co., Ltd.",
- [3]byte{0, 27, 235}: "DMP Electronics INC.",
- [3]byte{0, 27, 236}: "Netio Technologies Co., Ltd",
- [3]byte{0, 27, 237}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 27, 238}: "Nokia Danmark A/S",
- [3]byte{0, 27, 239}: "Blossoms Digital Technology Co.,Ltd.",
- [3]byte{0, 27, 240}: "Value Platforms Limited",
- [3]byte{0, 27, 241}: "Nanjing SilverNet Software Co., Ltd.",
- [3]byte{0, 27, 242}: "KWORLD COMPUTER CO., LTD",
- [3]byte{0, 27, 243}: "TRANSRADIO SenderSysteme Berlin AG",
- [3]byte{0, 27, 244}: "KENWIN INDUSTRIAL(HK) LTD.",
- [3]byte{0, 27, 245}: "Tellink Sistemas de Telecomunicación S.L.",
- [3]byte{0, 27, 246}: "CONWISE Technology Corporation Ltd.",
- [3]byte{0, 27, 247}: "Lund IP Products AB",
- [3]byte{0, 27, 248}: "Digitrax Inc.",
- [3]byte{0, 27, 249}: "Intellitect Water Ltd",
- [3]byte{0, 27, 250}: "G.i.N. mbH",
- [3]byte{0, 27, 251}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 27, 252}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 27, 253}: "Dignsys Inc.",
- [3]byte{0, 27, 254}: "Zavio Inc.",
- [3]byte{0, 27, 255}: "Millennia Media inc.",
- [3]byte{0, 28, 0}: "Entry Point, LLC",
- [3]byte{0, 28, 1}: "ABB Oy Drives",
- [3]byte{0, 28, 2}: "Pano Logic",
- [3]byte{0, 28, 3}: "Betty TV Technology AG",
- [3]byte{0, 28, 4}: "Airgain, Inc.",
- [3]byte{0, 28, 5}: "Nonin Medical Inc.",
- [3]byte{0, 28, 6}: "Siemens Numerical Control Ltd., Nanjing",
- [3]byte{0, 28, 7}: "Cwlinux Limited",
- [3]byte{0, 28, 8}: "Echo360, Inc.",
- [3]byte{0, 28, 9}: "SAE Electronic Co.,Ltd.",
- [3]byte{0, 28, 10}: "Shenzhen AEE Technology Co.,Ltd.",
- [3]byte{0, 28, 11}: "SmartAnt Telecom",
- [3]byte{0, 28, 12}: "TANITA Corporation",
- [3]byte{0, 28, 13}: "G-Technology, Inc.",
- [3]byte{0, 28, 14}: "Cisco Systems, Inc",
- [3]byte{0, 28, 15}: "Cisco Systems, Inc",
- [3]byte{0, 28, 16}: "Cisco-Linksys, LLC",
- [3]byte{0, 28, 17}: "ARRIS Group, Inc.",
- [3]byte{0, 28, 18}: "ARRIS Group, Inc.",
- [3]byte{0, 28, 19}: "OPTSYS TECHNOLOGY CO., LTD.",
- [3]byte{0, 28, 20}: "VMware, Inc.",
- [3]byte{0, 28, 21}: "iPhotonix LLC",
- [3]byte{0, 28, 22}: "ThyssenKrupp Elevator",
- [3]byte{0, 28, 23}: "Nortel Networks",
- [3]byte{0, 28, 24}: "Sicert S.r.L.",
- [3]byte{0, 28, 25}: "secunet Security Networks AG",
- [3]byte{0, 28, 26}: "Thomas Instrumentation, Inc",
- [3]byte{0, 28, 27}: "Hyperstone GmbH",
- [3]byte{0, 28, 28}: "Center Communication Systems GmbH",
- [3]byte{0, 28, 29}: "CHENZHOU GOSPELL DIGITAL TECHNOLOGY CO.,LTD",
- [3]byte{0, 28, 30}: "emtrion GmbH",
- [3]byte{0, 28, 31}: "Quest Retail Technology Pty Ltd",
- [3]byte{0, 28, 32}: "CLB Benelux",
- [3]byte{0, 28, 33}: "Nucsafe Inc.",
- [3]byte{0, 28, 34}: "Aeris Elettronica s.r.l.",
- [3]byte{0, 28, 35}: "Dell Inc.",
- [3]byte{0, 28, 36}: "Formosa Wireless Systems Corp.",
- [3]byte{0, 28, 37}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 28, 38}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 28, 39}: "Sunell Electronics Co.",
- [3]byte{0, 28, 40}: "Sphairon Technologies GmbH",
- [3]byte{0, 28, 41}: "CORE DIGITAL ELECTRONICS CO., LTD",
- [3]byte{0, 28, 42}: "Envisacor Technologies Inc.",
- [3]byte{0, 28, 43}: "Alertme.com Limited",
- [3]byte{0, 28, 44}: "Synapse",
- [3]byte{0, 28, 45}: "FlexRadio Systems",
- [3]byte{0, 28, 46}: "HPN Supply Chain",
- [3]byte{0, 28, 47}: "Pfister GmbH",
- [3]byte{0, 28, 48}: "Mode Lighting (UK ) Ltd.",
- [3]byte{0, 28, 49}: "Mobile XP Technology Co., LTD",
- [3]byte{0, 28, 50}: "Telian Corporation",
- [3]byte{0, 28, 51}: "Sutron",
- [3]byte{0, 28, 52}: "HUEY CHIAO INTERNATIONAL CO., LTD.",
- [3]byte{0, 28, 53}: "Nokia Danmark A/S",
- [3]byte{0, 28, 54}: "iNEWiT NV",
- [3]byte{0, 28, 55}: "Callpod, Inc.",
- [3]byte{0, 28, 56}: "Bio-Rad Laboratories, Inc.",
- [3]byte{0, 28, 57}: "S Netsystems Inc.",
- [3]byte{0, 28, 58}: "Element Labs, Inc.",
- [3]byte{0, 28, 59}: "AmRoad Technology Inc.",
- [3]byte{0, 28, 60}: "Seon Design Inc.",
- [3]byte{0, 28, 61}: "WaveStorm",
- [3]byte{0, 28, 62}: "ECKey Corporation",
- [3]byte{0, 28, 63}: "International Police Technologies, Inc.",
- [3]byte{0, 28, 64}: "VDG-Security bv",
- [3]byte{0, 28, 65}: "scemtec Transponder Technology GmbH",
- [3]byte{0, 28, 66}: "Parallels, Inc.",
- [3]byte{0, 28, 67}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 28, 68}: "Bosch Security Systems BV",
- [3]byte{0, 28, 69}: "Chenbro Micom Co., Ltd.",
- [3]byte{0, 28, 70}: "QTUM",
- [3]byte{0, 28, 71}: "Hangzhou Hollysys Automation Co., Ltd",
- [3]byte{0, 28, 72}: "WiDeFi, Inc.",
- [3]byte{0, 28, 73}: "Zoltan Technology Inc.",
- [3]byte{0, 28, 74}: "AVM GmbH",
- [3]byte{0, 28, 75}: "Gener8, Inc.",
- [3]byte{0, 28, 76}: "Petrotest Instruments",
- [3]byte{0, 28, 77}: "Aplix IP Holdings Corporation",
- [3]byte{0, 28, 78}: "TASA International Limited",
- [3]byte{0, 28, 79}: "MACAB AB",
- [3]byte{0, 28, 80}: "TCL Technoly Electronics (Huizhou) Co., Ltd.",
- [3]byte{0, 28, 81}: "Celeno Communications",
- [3]byte{0, 28, 82}: "VISIONEE SRL",
- [3]byte{0, 28, 83}: "Synergy Lighting Controls",
- [3]byte{0, 28, 84}: "Hillstone Networks Inc",
- [3]byte{0, 28, 85}: "Shenzhen Kaifa Technology Co.",
- [3]byte{0, 28, 86}: "Pado Systems, Inc.",
- [3]byte{0, 28, 87}: "Cisco Systems, Inc",
- [3]byte{0, 28, 88}: "Cisco Systems, Inc",
- [3]byte{0, 28, 89}: "DEVON IT",
- [3]byte{0, 28, 90}: "Advanced Relay Corporation",
- [3]byte{0, 28, 91}: "Chubb Electronic Security Systems Ltd",
- [3]byte{0, 28, 92}: "Integrated Medical Systems, Inc.",
- [3]byte{0, 28, 93}: "Leica Microsystems",
- [3]byte{0, 28, 94}: "ASTON France",
- [3]byte{0, 28, 95}: "Winland Electronics, Inc.",
- [3]byte{0, 28, 96}: "CSP Frontier Technologies,Inc.",
- [3]byte{0, 28, 97}: "Galaxy Microsystems LImited",
- [3]byte{0, 28, 98}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 28, 99}: "TRUEN",
- [3]byte{0, 28, 100}: "Landis+Gyr",
- [3]byte{0, 28, 101}: "JoeScan, Inc.",
- [3]byte{0, 28, 102}: "UCAMP CO.,LTD",
- [3]byte{0, 28, 103}: "Pumpkin Networks, Inc.",
- [3]byte{0, 28, 104}: "Anhui Sun Create Electronics Co., Ltd",
- [3]byte{0, 28, 105}: "Packet Vision Ltd",
- [3]byte{0, 28, 106}: "Weiss Engineering Ltd.",
- [3]byte{0, 28, 107}: "COVAX Co. Ltd",
- [3]byte{0, 28, 108}: "30805",
- [3]byte{0, 28, 109}: "KYOHRITSU ELECTRONIC INDUSTRY CO., LTD.",
- [3]byte{0, 28, 110}: "Newbury Networks, Inc.",
- [3]byte{0, 28, 111}: "Emfit Ltd",
- [3]byte{0, 28, 112}: "NOVACOMM LTDA",
- [3]byte{0, 28, 113}: "Emergent Electronics",
- [3]byte{0, 28, 114}: "Mayer & Cie GmbH & Co KG",
- [3]byte{0, 28, 115}: "Arista Networks",
- [3]byte{0, 28, 116}: "Syswan Technologies Inc.",
- [3]byte{0, 28, 117}: "Segnet Ltd.",
- [3]byte{0, 28, 118}: "The Wandsworth Group Ltd",
- [3]byte{0, 28, 119}: "Prodys",
- [3]byte{0, 28, 120}: "WYPLAY SAS",
- [3]byte{0, 28, 121}: "Cohesive Financial Technologies LLC",
- [3]byte{0, 28, 122}: "Perfectone Netware Company Ltd",
- [3]byte{0, 28, 123}: "Castlenet Technology Inc.",
- [3]byte{0, 28, 124}: "PERQ SYSTEMS CORPORATION",
- [3]byte{0, 28, 125}: "Excelpoint Manufacturing Pte Ltd",
- [3]byte{0, 28, 126}: "Toshiba",
- [3]byte{0, 28, 127}: "Check Point Software Technologies",
- [3]byte{0, 28, 128}: "New Business Division/Rhea-Information CO., LTD.",
- [3]byte{0, 28, 129}: "NextGen Venturi LTD",
- [3]byte{0, 28, 130}: "Genew Technologies",
- [3]byte{0, 28, 131}: "New Level Telecom Co., Ltd.",
- [3]byte{0, 28, 132}: "STL Solution Co.,Ltd.",
- [3]byte{0, 28, 133}: "Eunicorn",
- [3]byte{0, 28, 134}: "Cranite Systems, Inc.",
- [3]byte{0, 28, 135}: "Uriver Inc.",
- [3]byte{0, 28, 136}: "TRANSYSTEM INC.",
- [3]byte{0, 28, 137}: "Force Communications, Inc.",
- [3]byte{0, 28, 138}: "Cirrascale Corporation",
- [3]byte{0, 28, 139}: "MJ Innovations Ltd.",
- [3]byte{0, 28, 140}: "DIAL TECHNOLOGY LTD.",
- [3]byte{0, 28, 141}: "Mesa Imaging",
- [3]byte{0, 28, 142}: "Alcatel-Lucent IPD",
- [3]byte{0, 28, 143}: "Advanced Electronic Design, Inc.",
- [3]byte{0, 28, 144}: "Empacket Corporation",
- [3]byte{0, 28, 145}: "Gefen Inc.",
- [3]byte{0, 28, 146}: "Tervela",
- [3]byte{0, 28, 147}: "ExaDigm Inc",
- [3]byte{0, 28, 148}: "LI-COR Biosciences",
- [3]byte{0, 28, 149}: "Opticomm Corporation",
- [3]byte{0, 28, 150}: "Linkwise Technology Pte Ltd",
- [3]byte{0, 28, 151}: "Enzytek Technology Inc.,",
- [3]byte{0, 28, 152}: "LUCKY TECHNOLOGY (HK) COMPANY LIMITED",
- [3]byte{0, 28, 153}: "Shunra Software Ltd.",
- [3]byte{0, 28, 154}: "Nokia Danmark A/S",
- [3]byte{0, 28, 155}: "FEIG ELECTRONIC GmbH",
- [3]byte{0, 28, 156}: "Nortel Networks",
- [3]byte{0, 28, 157}: "Liecthi AG",
- [3]byte{0, 28, 158}: "Dualtech IT AB",
- [3]byte{0, 28, 159}: "Razorstream, LLC",
- [3]byte{0, 28, 160}: "Production Resource Group, LLC",
- [3]byte{0, 28, 161}: "AKAMAI TECHNOLOGIES, INC.",
- [3]byte{0, 28, 162}: "ADB Broadband Italia",
- [3]byte{0, 28, 163}: "Terra",
- [3]byte{0, 28, 164}: "Sony Mobile Communications AB",
- [3]byte{0, 28, 165}: "Zygo Corporation",
- [3]byte{0, 28, 166}: "Win4NET",
- [3]byte{0, 28, 167}: "International Quartz Limited",
- [3]byte{0, 28, 168}: "AirTies Wireless Networks",
- [3]byte{0, 28, 169}: "Audiomatica Srl",
- [3]byte{0, 28, 170}: "Bellon Pty Ltd",
- [3]byte{0, 28, 171}: "Meyer Sound Laboratories, Inc.",
- [3]byte{0, 28, 172}: "Qniq Technology Corp.",
- [3]byte{0, 28, 173}: "Wuhan Telecommunication Devices Co.,Ltd",
- [3]byte{0, 28, 174}: "WiChorus, Inc.",
- [3]byte{0, 28, 175}: "Plato Networks Inc.",
- [3]byte{0, 28, 176}: "Cisco Systems, Inc",
- [3]byte{0, 28, 177}: "Cisco Systems, Inc",
- [3]byte{0, 28, 178}: "BPT SPA",
- [3]byte{0, 28, 179}: "Apple, Inc.",
- [3]byte{0, 28, 180}: "Iridium Satellite LLC",
- [3]byte{0, 28, 181}: "Neihua Network Technology Co.,LTD.(NHN)",
- [3]byte{0, 28, 182}: "Duzon CNT Co., Ltd.",
- [3]byte{0, 28, 183}: "USC DigiArk Corporation",
- [3]byte{0, 28, 184}: "CBC Co., Ltd",
- [3]byte{0, 28, 185}: "KWANG SUNG ELECTRONICS CO., LTD.",
- [3]byte{0, 28, 186}: "VerScient, Inc.",
- [3]byte{0, 28, 187}: "MusicianLink",
- [3]byte{0, 28, 188}: "CastGrabber, LLC",
- [3]byte{0, 28, 189}: "Ezze Mobile Tech., Inc.",
- [3]byte{0, 28, 190}: "Nintendo Co., Ltd.",
- [3]byte{0, 28, 191}: "Intel Corporate",
- [3]byte{0, 28, 192}: "Intel Corporate",
- [3]byte{0, 28, 193}: "ARRIS Group, Inc.",
- [3]byte{0, 28, 194}: "Part II Research, Inc.",
- [3]byte{0, 28, 195}: "ARRIS Group, Inc.",
- [3]byte{0, 28, 196}: "Hewlett Packard",
- [3]byte{0, 28, 197}: "3Com Ltd",
- [3]byte{0, 28, 198}: "ProStor Systems",
- [3]byte{0, 28, 199}: "Rembrandt Technologies, LLC d/b/a REMSTREAM",
- [3]byte{0, 28, 200}: "INDUSTRONIC Industrie-Electronic GmbH & Co. KG",
- [3]byte{0, 28, 201}: "Kaise Electronic Technology Co., Ltd.",
- [3]byte{0, 28, 202}: "Shanghai Gaozhi Science & Technology Development Co.",
- [3]byte{0, 28, 203}: "Forth Corporation Public Company Limited",
- [3]byte{0, 28, 204}: "BlackBerry RTS",
- [3]byte{0, 28, 205}: "Alektrona Corporation",
- [3]byte{0, 28, 206}: "By Techdesign",
- [3]byte{0, 28, 207}: "LIMETEK",
- [3]byte{0, 28, 208}: "Circleone Co.,Ltd.",
- [3]byte{0, 28, 209}: "Waves Audio LTD",
- [3]byte{0, 28, 210}: "King Champion (Hong Kong) Limited",
- [3]byte{0, 28, 211}: "ZP Engineering SEL",
- [3]byte{0, 28, 212}: "Nokia Danmark A/S",
- [3]byte{0, 28, 213}: "ZeeVee, Inc.",
- [3]byte{0, 28, 214}: "Nokia Danmark A/S",
- [3]byte{0, 28, 215}: "Harman/Becker Automotive Systems GmbH",
- [3]byte{0, 28, 216}: "BlueAnt Wireless",
- [3]byte{0, 28, 217}: "GlobalTop Technology Inc.",
- [3]byte{0, 28, 218}: "Exegin Technologies Limited",
- [3]byte{0, 28, 219}: "CARPOINT CO.,LTD",
- [3]byte{0, 28, 220}: "Custom Computer Services, Inc.",
- [3]byte{0, 28, 221}: "COWBELL ENGINEERING CO., LTD.",
- [3]byte{0, 28, 222}: "Interactive Multimedia eXchange Inc.",
- [3]byte{0, 28, 223}: "Belkin International Inc.",
- [3]byte{0, 28, 224}: "DASAN TPS",
- [3]byte{0, 28, 225}: "INDRA SISTEMAS, S.A.",
- [3]byte{0, 28, 226}: "Attero Tech, LLC.",
- [3]byte{0, 28, 227}: "Optimedical Systems",
- [3]byte{0, 28, 228}: "EleSy JSC",
- [3]byte{0, 28, 229}: "MBS Electronic Systems GmbH",
- [3]byte{0, 28, 230}: "INNES",
- [3]byte{0, 28, 231}: "Rocon PLC Research Centre",
- [3]byte{0, 28, 232}: "Cummins Inc",
- [3]byte{0, 28, 233}: "Galaxy Technology Limited",
- [3]byte{0, 28, 234}: "Scientific-Atlanta, Inc",
- [3]byte{0, 28, 235}: "Nortel Networks",
- [3]byte{0, 28, 236}: "Mobilesoft (Aust.) Pty Ltd",
- [3]byte{0, 28, 237}: "ENVIRONNEMENT SA",
- [3]byte{0, 28, 238}: "SHARP Corporation",
- [3]byte{0, 28, 239}: "Primax Electronics Ltd.",
- [3]byte{0, 28, 240}: "D-Link Corporation",
- [3]byte{0, 28, 241}: "SUPoX Technology Co. , LTD.",
- [3]byte{0, 28, 242}: "Tenlon Technology Co.,Ltd.",
- [3]byte{0, 28, 243}: "EVS BROADCAST EQUIPMENT",
- [3]byte{0, 28, 244}: "Media Technology Systems Inc",
- [3]byte{0, 28, 245}: "Wiseblue Technology Limited",
- [3]byte{0, 28, 246}: "Cisco Systems, Inc",
- [3]byte{0, 28, 247}: "AudioScience",
- [3]byte{0, 28, 248}: "Parade Technologies, Ltd.",
- [3]byte{0, 28, 249}: "Cisco Systems, Inc",
- [3]byte{0, 28, 250}: "Alarm.com",
- [3]byte{0, 28, 251}: "ARRIS Group, Inc.",
- [3]byte{0, 28, 252}: "Sumitomo Electric Industries,Ltd",
- [3]byte{0, 28, 253}: "Universal Electronics, Inc.",
- [3]byte{0, 28, 254}: "Quartics Inc",
- [3]byte{0, 28, 255}: "Napera Networks Inc",
- [3]byte{0, 29, 0}: "Brivo Systems, LLC",
- [3]byte{0, 29, 1}: "Neptune Digital",
- [3]byte{0, 29, 2}: "Cybertech Telecom Development",
- [3]byte{0, 29, 3}: "Design Solutions Inc.",
- [3]byte{0, 29, 4}: "Zipit Wireless, Inc.",
- [3]byte{0, 29, 5}: "Eaton Corporation",
- [3]byte{0, 29, 6}: "HM Electronics, Inc.",
- [3]byte{0, 29, 7}: "Shenzhen Sang Fei Consumer Communications Co.,Ltd",
- [3]byte{0, 29, 8}: "Jiangsu Yinhe Electronics Co.,Ltd.",
- [3]byte{0, 29, 9}: "Dell Inc.",
- [3]byte{0, 29, 10}: "Davis Instruments, Inc.",
- [3]byte{0, 29, 11}: "Power Standards Lab",
- [3]byte{0, 29, 12}: "MobileCompia",
- [3]byte{0, 29, 13}: "Sony Interactive Entertainment Inc.",
- [3]byte{0, 29, 14}: "Agapha Technology co., Ltd.",
- [3]byte{0, 29, 15}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{0, 29, 16}: "LightHaus Logic, Inc.",
- [3]byte{0, 29, 17}: "Analogue & Micro Ltd",
- [3]byte{0, 29, 18}: "ROHM CO., LTD.",
- [3]byte{0, 29, 19}: "NextGTV",
- [3]byte{0, 29, 20}: "SPERADTONE INFORMATION TECHNOLOGY LIMITED",
- [3]byte{0, 29, 21}: "Shenzhen Dolphin Electronic Co., Ltd",
- [3]byte{0, 29, 22}: "SFR",
- [3]byte{0, 29, 23}: "Digital Sky Corporation",
- [3]byte{0, 29, 24}: "Power Innovation GmbH",
- [3]byte{0, 29, 25}: "Arcadyan Technology Corporation",
- [3]byte{0, 29, 26}: "OvisLink S.A.",
- [3]byte{0, 29, 27}: "Sangean Electronics Inc.",
- [3]byte{0, 29, 28}: "Gennet s.a.",
- [3]byte{0, 29, 29}: "Inter-M Corporation",
- [3]byte{0, 29, 30}: "KYUSHU TEN CO.,LTD",
- [3]byte{0, 29, 31}: "Siauliu Tauro Televizoriai, JSC",
- [3]byte{0, 29, 32}: "Comtrend Corporation",
- [3]byte{0, 29, 33}: "Alcad SL",
- [3]byte{0, 29, 34}: "Foss Analytical A/S",
- [3]byte{0, 29, 35}: "SENSUS",
- [3]byte{0, 29, 36}: "Aclara Power-Line Systems Inc.",
- [3]byte{0, 29, 37}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 29, 38}: "Rockridgesound Technology Co.",
- [3]byte{0, 29, 39}: "NAC-INTERCOM",
- [3]byte{0, 29, 40}: "Sony Mobile Communications AB",
- [3]byte{0, 29, 41}: "Doro AB",
- [3]byte{0, 29, 42}: "SHENZHEN BUL-TECH CO.,LTD.",
- [3]byte{0, 29, 43}: "Wuhan Pont Technology CO. , LTD",
- [3]byte{0, 29, 44}: "Wavetrend Technologies (Pty) Limited",
- [3]byte{0, 29, 45}: "Pylone, Inc.",
- [3]byte{0, 29, 46}: "Ruckus Wireless",
- [3]byte{0, 29, 47}: "QuantumVision Corporation",
- [3]byte{0, 29, 48}: "YX Wireless S.A.",
- [3]byte{0, 29, 49}: "HIGHPRO INTERNATIONAL R&D CO,.LTD.",
- [3]byte{0, 29, 50}: "Longkay Communication & Technology (Shanghai) Co. Ltd",
- [3]byte{0, 29, 51}: "Maverick Systems Inc.",
- [3]byte{0, 29, 52}: "SYRIS Technology Corp",
- [3]byte{0, 29, 53}: "Viconics Electronics Inc.",
- [3]byte{0, 29, 54}: "ELECTRONICS CORPORATION OF INDIA LIMITED",
- [3]byte{0, 29, 55}: "Thales-Panda Transportation System",
- [3]byte{0, 29, 56}: "Seagate Technology",
- [3]byte{0, 29, 57}: "MOOHADIGITAL CO., LTD",
- [3]byte{0, 29, 58}: "mh acoustics LLC",
- [3]byte{0, 29, 59}: "Nokia Danmark A/S",
- [3]byte{0, 29, 60}: "Muscle Corporation",
- [3]byte{0, 29, 61}: "Avidyne Corporation",
- [3]byte{0, 29, 62}: "SAKA TECHNO SCIENCE CO.,LTD",
- [3]byte{0, 29, 63}: "Mitron Pty Ltd",
- [3]byte{0, 29, 64}: "Intel – GE Care Innovations LLC",
- [3]byte{0, 29, 65}: "Hardy Instruments",
- [3]byte{0, 29, 66}: "Nortel Networks",
- [3]byte{0, 29, 67}: "Shenzhen G-link Digital Technology Co., Ltd.",
- [3]byte{0, 29, 68}: "Krohne",
- [3]byte{0, 29, 69}: "Cisco Systems, Inc",
- [3]byte{0, 29, 70}: "Cisco Systems, Inc",
- [3]byte{0, 29, 71}: "Covote GmbH & Co KG",
- [3]byte{0, 29, 72}: "Sensor-Technik Wiedemann GmbH",
- [3]byte{0, 29, 73}: "Innovation Wireless Inc.",
- [3]byte{0, 29, 74}: "Carestream Health, Inc.",
- [3]byte{0, 29, 75}: "Grid Connect Inc.",
- [3]byte{0, 29, 76}: "Alcatel-Lucent",
- [3]byte{0, 29, 77}: "Adaptive Recognition Hungary, Inc",
- [3]byte{0, 29, 78}: "TCM Mobile LLC",
- [3]byte{0, 29, 79}: "Apple, Inc.",
- [3]byte{0, 29, 80}: "SPINETIX SA",
- [3]byte{0, 29, 81}: "Babcock & Wilcox Power Generation Group, Inc",
- [3]byte{0, 29, 82}: "Defzone B.V.",
- [3]byte{0, 29, 83}: "S&O Electronics (Malaysia) Sdn. Bhd.",
- [3]byte{0, 29, 84}: "Sunnic Technology & Merchandise INC.",
- [3]byte{0, 29, 85}: "ZANTAZ, Inc",
- [3]byte{0, 29, 86}: "Kramer Electronics Ltd.",
- [3]byte{0, 29, 87}: "CAETEC Messtechnik",
- [3]byte{0, 29, 88}: "CQ Inc",
- [3]byte{0, 29, 89}: "Mitra Energy & Infrastructure",
- [3]byte{0, 29, 90}: "2Wire Inc",
- [3]byte{0, 29, 91}: "Tecvan Informática Ltda",
- [3]byte{0, 29, 92}: "Tom Communication Industrial Co.,Ltd.",
- [3]byte{0, 29, 93}: "Control Dynamics Pty. Ltd.",
- [3]byte{0, 29, 94}: "COMING MEDIA CORP.",
- [3]byte{0, 29, 95}: "OverSpeed SARL",
- [3]byte{0, 29, 96}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 29, 97}: "BIJ Corporation",
- [3]byte{0, 29, 98}: "InPhase Technologies",
- [3]byte{0, 29, 99}: "Miele & Cie. KG",
- [3]byte{0, 29, 100}: "Adam Communications Systems Int Ltd",
- [3]byte{0, 29, 101}: "Microwave Radio Communications",
- [3]byte{0, 29, 102}: "Hyundai Telecom",
- [3]byte{0, 29, 103}: "AMEC",
- [3]byte{0, 29, 104}: "Thomson Telecom Belgium",
- [3]byte{0, 29, 105}: "Knorr-Bremse IT-Services GmbH",
- [3]byte{0, 29, 106}: "Alpha Networks Inc.",
- [3]byte{0, 29, 107}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 108}: "ClariPhy Communications, Inc.",
- [3]byte{0, 29, 109}: "Confidant International LLC",
- [3]byte{0, 29, 110}: "Nokia Danmark A/S",
- [3]byte{0, 29, 111}: "Chainzone Technology Co., Ltd",
- [3]byte{0, 29, 112}: "Cisco Systems, Inc",
- [3]byte{0, 29, 113}: "Cisco Systems, Inc",
- [3]byte{0, 29, 114}: "Wistron Corporation",
- [3]byte{0, 29, 115}: "BUFFALO.INC",
- [3]byte{0, 29, 116}: "Tianjin China-Silicon Microelectronics Co., Ltd.",
- [3]byte{0, 29, 117}: "Radioscape PLC",
- [3]byte{0, 29, 118}: "Eyeheight Ltd.",
- [3]byte{0, 29, 119}: "NSGate",
- [3]byte{0, 29, 120}: "Invengo Information Technology Co.,Ltd",
- [3]byte{0, 29, 121}: "SIGNAMAX LLC",
- [3]byte{0, 29, 122}: "Wideband Semiconductor, Inc.",
- [3]byte{0, 29, 123}: "Ice Energy, Inc.",
- [3]byte{0, 29, 124}: "ABE Elettronica S.p.A.",
- [3]byte{0, 29, 125}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{0, 29, 126}: "Cisco-Linksys, LLC",
- [3]byte{0, 29, 127}: "Tekron International Ltd",
- [3]byte{0, 29, 128}: "Beijing Huahuan Eletronics Co.,Ltd",
- [3]byte{0, 29, 129}: "GUANGZHOU GATEWAY ELECTRONICS CO., LTD",
- [3]byte{0, 29, 130}: "GN Netcom A/S",
- [3]byte{0, 29, 131}: "Emitech Corporation",
- [3]byte{0, 29, 132}: "Gateway, Inc.",
- [3]byte{0, 29, 133}: "Call Direct Cellular Solutions",
- [3]byte{0, 29, 134}: "Shinwa Industries(China) Ltd.",
- [3]byte{0, 29, 135}: "VigTech Labs Sdn Bhd",
- [3]byte{0, 29, 136}: "Clearwire",
- [3]byte{0, 29, 137}: "VaultStor Corporation",
- [3]byte{0, 29, 138}: "TechTrex Inc",
- [3]byte{0, 29, 139}: "ADB Broadband Italia",
- [3]byte{0, 29, 140}: "La Crosse Technology LTD",
- [3]byte{0, 29, 141}: "Raytek GmbH",
- [3]byte{0, 29, 142}: "Alereon, Inc.",
- [3]byte{0, 29, 143}: "PureWave Networks",
- [3]byte{0, 29, 144}: "EMCO Flow Systems",
- [3]byte{0, 29, 145}: "Digitize, Inc",
- [3]byte{0, 29, 146}: "MICRO-STAR INT'L CO.,LTD.",
- [3]byte{0, 29, 147}: "Modacom",
- [3]byte{0, 29, 148}: "Climax Technology Co., Ltd",
- [3]byte{0, 29, 149}: "Flash, Inc.",
- [3]byte{0, 29, 150}: "WatchGuard Video",
- [3]byte{0, 29, 151}: "Alertus Technologies LLC",
- [3]byte{0, 29, 152}: "Nokia Danmark A/S",
- [3]byte{0, 29, 153}: "Cyan Optic, Inc.",
- [3]byte{0, 29, 154}: "GODEX INTERNATIONAL CO., LTD",
- [3]byte{0, 29, 155}: "Hokuyo Automatic Co., Ltd.",
- [3]byte{0, 29, 156}: "Rockwell Automation",
- [3]byte{0, 29, 157}: "ARTJOY INTERNATIONAL LIMITED",
- [3]byte{0, 29, 158}: "AXION TECHNOLOGIES",
- [3]byte{0, 29, 159}: "MATT R.P.Traczynscy Sp.J.",
- [3]byte{0, 29, 160}: "Heng Yu Electronic Manufacturing Company Limited",
- [3]byte{0, 29, 161}: "Cisco Systems, Inc",
- [3]byte{0, 29, 162}: "Cisco Systems, Inc",
- [3]byte{0, 29, 163}: "SabiOso",
- [3]byte{0, 29, 164}: "Hangzhou System Technology CO., LTD",
- [3]byte{0, 29, 165}: "WB Electronics",
- [3]byte{0, 29, 166}: "Media Numerics Limited",
- [3]byte{0, 29, 167}: "Seamless Internet",
- [3]byte{0, 29, 168}: "Takahata Electronics Co.,Ltd",
- [3]byte{0, 29, 169}: "Castles Technology, Co., LTD",
- [3]byte{0, 29, 170}: "DrayTek Corp.",
- [3]byte{0, 29, 171}: "SwissQual License AG",
- [3]byte{0, 29, 172}: "Gigamon Systems LLC",
- [3]byte{0, 29, 173}: "Sinotech Engineering Consultants, Inc. Geotechnical Enginee",
- [3]byte{0, 29, 174}: "CHANG TSENG TECHNOLOGY CO., LTD",
- [3]byte{0, 29, 175}: "Nortel Networks",
- [3]byte{0, 29, 176}: "FuJian HengTong Information Technology Co.,Ltd",
- [3]byte{0, 29, 177}: "Crescendo Networks",
- [3]byte{0, 29, 178}: "HOKKAIDO ELECTRIC ENGINEERING CO.,LTD.",
- [3]byte{0, 29, 179}: "HPN Supply Chain",
- [3]byte{0, 29, 180}: "KUMHO ENG CO.,LTD",
- [3]byte{0, 29, 181}: "Juniper Networks",
- [3]byte{0, 29, 182}: "BestComm Networks, Inc.",
- [3]byte{0, 29, 183}: "Tendril Networks, Inc.",
- [3]byte{0, 29, 184}: "Intoto Inc.",
- [3]byte{0, 29, 185}: "Wellspring Wireless",
- [3]byte{0, 29, 186}: "Sony Corporation",
- [3]byte{0, 29, 187}: "Dynamic System Electronics Corp.",
- [3]byte{0, 29, 188}: "Nintendo Co., Ltd.",
- [3]byte{0, 29, 189}: "Versamed Inc.",
- [3]byte{0, 29, 190}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 191}: "Radiient Technologies, Inc.",
- [3]byte{0, 29, 192}: "Enphase Energy",
- [3]byte{0, 29, 193}: "Audinate Pty L",
- [3]byte{0, 29, 194}: "XORTEC OY",
- [3]byte{0, 29, 195}: "RIKOR TV, Ltd",
- [3]byte{0, 29, 196}: "AIOI Systems Co., Ltd.",
- [3]byte{0, 29, 197}: "Beijing Jiaxun Feihong Electricial Co., Ltd.",
- [3]byte{0, 29, 198}: "SNR Inc.",
- [3]byte{0, 29, 199}: "L-3 Communications Geneva Aerospace",
- [3]byte{0, 29, 200}: "Navionics Research Inc., dba SCADAmetrics",
- [3]byte{0, 29, 201}: "GainSpan Corp.",
- [3]byte{0, 29, 202}: "PAV Electronics Limited",
- [3]byte{0, 29, 203}: "Exéns Development Oy",
- [3]byte{0, 29, 204}: "Ayon Cyber Security, Inc",
- [3]byte{0, 29, 205}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 206}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 207}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 208}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 209}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 210}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 211}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 212}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 213}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 214}: "ARRIS Group, Inc.",
- [3]byte{0, 29, 215}: "Algolith",
- [3]byte{0, 29, 216}: "Microsoft Corporation",
- [3]byte{0, 29, 217}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 29, 218}: "Mikroelektronika spol. s r. o.",
- [3]byte{0, 29, 219}: "C-BEL Corporation",
- [3]byte{0, 29, 220}: "HangZhou DeChangLong Tech&Info Co.,Ltd",
- [3]byte{0, 29, 221}: "DAT H.K. LIMITED",
- [3]byte{0, 29, 222}: "Zhejiang Broadcast&Television Technology Co.,Ltd.",
- [3]byte{0, 29, 223}: "Sunitec Enterprise Co., Ltd.",
- [3]byte{0, 29, 224}: "Intel Corporate",
- [3]byte{0, 29, 225}: "Intel Corporate",
- [3]byte{0, 29, 226}: "Radionor Communications",
- [3]byte{0, 29, 227}: "Intuicom",
- [3]byte{0, 29, 228}: "Visioneered Image Systems",
- [3]byte{0, 29, 229}: "Cisco Systems, Inc",
- [3]byte{0, 29, 230}: "Cisco Systems, Inc",
- [3]byte{0, 29, 231}: "Marine Sonic Technology, Ltd.",
- [3]byte{0, 29, 232}: "Nikko Denki Tsushin Corporation(NDTC)",
- [3]byte{0, 29, 233}: "Nokia Danmark A/S",
- [3]byte{0, 29, 234}: "Commtest Instruments Ltd",
- [3]byte{0, 29, 235}: "DINEC International",
- [3]byte{0, 29, 236}: "Marusys",
- [3]byte{0, 29, 237}: "Grid Net, Inc.",
- [3]byte{0, 29, 238}: "NEXTVISION SISTEMAS DIGITAIS DE TELEVISÃO LTDA.",
- [3]byte{0, 29, 239}: "TRIMM, INC.",
- [3]byte{0, 29, 240}: "Vidient Systems, Inc.",
- [3]byte{0, 29, 241}: "Intego Systems, Inc.",
- [3]byte{0, 29, 242}: "Netflix, Inc.",
- [3]byte{0, 29, 243}: "SBS Science & Technology Co., Ltd",
- [3]byte{0, 29, 244}: "Magellan Technology Pty Limited",
- [3]byte{0, 29, 245}: "Sunshine Co,LTD",
- [3]byte{0, 29, 246}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 29, 247}: "R. STAHL Schaltgeräte GmbH",
- [3]byte{0, 29, 248}: "Webpro Vision Technology Corporation",
- [3]byte{0, 29, 249}: "Cybiotronics (Far East) Limited",
- [3]byte{0, 29, 250}: "Fujian LANDI Commercial Equipment Co.,Ltd",
- [3]byte{0, 29, 251}: "NETCLEUS Systems Corporation",
- [3]byte{0, 29, 252}: "KSIC",
- [3]byte{0, 29, 253}: "Nokia Danmark A/S",
- [3]byte{0, 29, 254}: "Palm, Inc",
- [3]byte{0, 29, 255}: "Network Critical Solutions Ltd",
- [3]byte{0, 30, 0}: "Shantou Institute of Ultrasonic Instruments",
- [3]byte{0, 30, 1}: "Renesas Technology Sales Co., Ltd.",
- [3]byte{0, 30, 2}: "Sougou Keikaku Kougyou Co.,Ltd.",
- [3]byte{0, 30, 3}: "LiComm Co., Ltd.",
- [3]byte{0, 30, 4}: "Hanson Research Corporation",
- [3]byte{0, 30, 5}: "Xseed Technologies & Computing",
- [3]byte{0, 30, 6}: "WIBRAIN",
- [3]byte{0, 30, 7}: "Winy Technology Co., Ltd.",
- [3]byte{0, 30, 8}: "Centec Networks Inc",
- [3]byte{0, 30, 9}: "ZEFATEK Co.,LTD",
- [3]byte{0, 30, 10}: "Syba Tech Limited",
- [3]byte{0, 30, 11}: "Hewlett Packard",
- [3]byte{0, 30, 12}: "Sherwood Information Partners, Inc.",
- [3]byte{0, 30, 13}: "Micran Ltd.",
- [3]byte{0, 30, 14}: "MAXI VIEW HOLDINGS LIMITED",
- [3]byte{0, 30, 15}: "Briot International",
- [3]byte{0, 30, 16}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 30, 17}: "ELELUX INTERNATIONAL LTD",
- [3]byte{0, 30, 18}: "Ecolab",
- [3]byte{0, 30, 19}: "Cisco Systems, Inc",
- [3]byte{0, 30, 20}: "Cisco Systems, Inc",
- [3]byte{0, 30, 21}: "Beech Hill Electronics",
- [3]byte{0, 30, 22}: "Keytronix",
- [3]byte{0, 30, 23}: "STN BV",
- [3]byte{0, 30, 24}: "Radio Activity srl",
- [3]byte{0, 30, 25}: "GTRI",
- [3]byte{0, 30, 26}: "Best Source Taiwan Inc.",
- [3]byte{0, 30, 27}: "Digital Stream Technology, Inc.",
- [3]byte{0, 30, 28}: "SWS Australia Pty Limited",
- [3]byte{0, 30, 29}: "East Coast Datacom, Inc.",
- [3]byte{0, 30, 30}: "Honeywell Life Safety",
- [3]byte{0, 30, 31}: "Nortel Networks",
- [3]byte{0, 30, 32}: "Intertain Inc.",
- [3]byte{0, 30, 33}: "Qisda Corporation",
- [3]byte{0, 30, 34}: "ARVOO Imaging Products BV",
- [3]byte{0, 30, 35}: "Electronic Educational Devices, Inc",
- [3]byte{0, 30, 36}: "Zhejiang Bell Technology Co.,ltd",
- [3]byte{0, 30, 37}: "INTEK DIGITAL",
- [3]byte{0, 30, 38}: "Digifriends Co. Ltd",
- [3]byte{0, 30, 39}: "SBN TECH Co.,Ltd.",
- [3]byte{0, 30, 40}: "Lumexis Corporation",
- [3]byte{0, 30, 41}: "Hypertherm Inc",
- [3]byte{0, 30, 42}: "NETGEAR",
- [3]byte{0, 30, 43}: "Radio Systems Design, Inc.",
- [3]byte{0, 30, 44}: "CyVerse Corporation",
- [3]byte{0, 30, 45}: "STIM",
- [3]byte{0, 30, 46}: "SIRTI S.p.A.",
- [3]byte{0, 30, 47}: "DiMoto Pty Ltd",
- [3]byte{0, 30, 48}: "Shireen Inc",
- [3]byte{0, 30, 49}: "INFOMARK CO.,LTD.",
- [3]byte{0, 30, 50}: "Zensys",
- [3]byte{0, 30, 51}: "INVENTEC Corporation",
- [3]byte{0, 30, 52}: "CryptoMetrics",
- [3]byte{0, 30, 53}: "Nintendo Co., Ltd.",
- [3]byte{0, 30, 54}: "IPTE",
- [3]byte{0, 30, 55}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{0, 30, 56}: "Bluecard Software Technology Co., Ltd.",
- [3]byte{0, 30, 57}: "Comsys Communication Ltd.",
- [3]byte{0, 30, 58}: "Nokia Danmark A/S",
- [3]byte{0, 30, 59}: "Nokia Danmark A/S",
- [3]byte{0, 30, 60}: "Lyngbox Media AB",
- [3]byte{0, 30, 61}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 30, 62}: "KMW Inc.",
- [3]byte{0, 30, 63}: "TrellisWare Technologies, Inc.",
- [3]byte{0, 30, 64}: "Shanghai DareGlobal Technologies Co.,Ltd",
- [3]byte{0, 30, 65}: "Microwave Communication & Component, Inc.",
- [3]byte{0, 30, 66}: "Teltonika",
- [3]byte{0, 30, 67}: "AISIN AW CO.,LTD.",
- [3]byte{0, 30, 68}: "SANTEC",
- [3]byte{0, 30, 69}: "Sony Mobile Communications AB",
- [3]byte{0, 30, 70}: "ARRIS Group, Inc.",
- [3]byte{0, 30, 71}: "PT. Hariff Daya Tunggal Engineering",
- [3]byte{0, 30, 72}: "Wi-Links",
- [3]byte{0, 30, 73}: "Cisco Systems, Inc",
- [3]byte{0, 30, 74}: "Cisco Systems, Inc",
- [3]byte{0, 30, 75}: "City Theatrical",
- [3]byte{0, 30, 76}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 30, 77}: "Welkin Sciences, LLC",
- [3]byte{0, 30, 78}: "DAKO EDV-Ingenieur- und Systemhaus GmbH",
- [3]byte{0, 30, 79}: "Dell Inc.",
- [3]byte{0, 30, 80}: "BATTISTONI RESEARCH",
- [3]byte{0, 30, 81}: "Converter Industry Srl",
- [3]byte{0, 30, 82}: "Apple, Inc.",
- [3]byte{0, 30, 83}: "Further Tech Co., LTD",
- [3]byte{0, 30, 84}: "TOYO ELECTRIC Corporation",
- [3]byte{0, 30, 85}: "COWON SYSTEMS,Inc.",
- [3]byte{0, 30, 86}: "Bally Wulff Entertainment GmbH",
- [3]byte{0, 30, 87}: "ALCOMA, spol. s r.o.",
- [3]byte{0, 30, 88}: "D-Link Corporation",
- [3]byte{0, 30, 89}: "Silicon Turnkey Express, LLC",
- [3]byte{0, 30, 90}: "ARRIS Group, Inc.",
- [3]byte{0, 30, 91}: "Unitron Company, Inc.",
- [3]byte{0, 30, 92}: "RB GeneralEkonomik",
- [3]byte{0, 30, 93}: "Holosys d.o.o.",
- [3]byte{0, 30, 94}: "COmputime Ltd.",
- [3]byte{0, 30, 95}: "KwikByte, LLC",
- [3]byte{0, 30, 96}: "Digital Lighting Systems, Inc",
- [3]byte{0, 30, 97}: "ITEC GmbH",
- [3]byte{0, 30, 98}: "Siemon",
- [3]byte{0, 30, 99}: "Vibro-Meter SA",
- [3]byte{0, 30, 100}: "Intel Corporate",
- [3]byte{0, 30, 101}: "Intel Corporate",
- [3]byte{0, 30, 102}: "RESOL Elektronische Regelungen GmbH",
- [3]byte{0, 30, 103}: "Intel Corporate",
- [3]byte{0, 30, 104}: "QUANTA COMPUTER INC.",
- [3]byte{0, 30, 105}: "Thomson Inc.",
- [3]byte{0, 30, 106}: "Beijing Bluexon Technology Co.,Ltd",
- [3]byte{0, 30, 107}: "Cisco SPVTG",
- [3]byte{0, 30, 108}: "Opaque Systems",
- [3]byte{0, 30, 109}: "IT R&D Center",
- [3]byte{0, 30, 110}: "Shenzhen First Mile Communications Ltd",
- [3]byte{0, 30, 111}: "Magna-Power Electronics, Inc.",
- [3]byte{0, 30, 112}: "Cobham Defence Communications Ltd",
- [3]byte{0, 30, 113}: "MIrcom Group of Companies",
- [3]byte{0, 30, 114}: "PCS",
- [3]byte{0, 30, 115}: "zte corporation",
- [3]byte{0, 30, 116}: "Sagemcom Broadband SAS",
- [3]byte{0, 30, 117}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 30, 118}: "Thermo Fisher Scientific",
- [3]byte{0, 30, 119}: "Air2App",
- [3]byte{0, 30, 120}: "Owitek Technology Ltd.,",
- [3]byte{0, 30, 121}: "Cisco Systems, Inc",
- [3]byte{0, 30, 122}: "Cisco Systems, Inc",
- [3]byte{0, 30, 123}: "R.I.CO. S.r.l.",
- [3]byte{0, 30, 124}: "Taiwick Limited",
- [3]byte{0, 30, 125}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 30, 126}: "Nortel Networks",
- [3]byte{0, 30, 127}: "CBM of America",
- [3]byte{0, 30, 128}: "Last Mile Ltd.",
- [3]byte{0, 30, 129}: "CNB Technology Inc.",
- [3]byte{0, 30, 130}: "SanDisk Corporation",
- [3]byte{0, 30, 131}: "LAN/MAN Standards Association (LMSC)",
- [3]byte{0, 30, 132}: "Pika Technologies Inc.",
- [3]byte{0, 30, 133}: "Lagotek Corporation",
- [3]byte{0, 30, 134}: "MEL Co.,Ltd.",
- [3]byte{0, 30, 135}: "Realease Limited",
- [3]byte{0, 30, 136}: "ANDOR SYSTEM SUPPORT CO., LTD.",
- [3]byte{0, 30, 137}: "CRFS Limited",
- [3]byte{0, 30, 138}: "eCopy, Inc",
- [3]byte{0, 30, 139}: "Infra Access Korea Co., Ltd.",
- [3]byte{0, 30, 140}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 30, 141}: "ARRIS Group, Inc.",
- [3]byte{0, 30, 142}: "Hunkeler AG",
- [3]byte{0, 30, 143}: "CANON INC.",
- [3]byte{0, 30, 144}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 30, 145}: "KIMIN Electronic Co., Ltd.",
- [3]byte{0, 30, 146}: "JEULIN S.A.",
- [3]byte{0, 30, 147}: "CiriTech Systems Inc",
- [3]byte{0, 30, 148}: "SUPERCOM TECHNOLOGY CORPORATION",
- [3]byte{0, 30, 149}: "SIGMALINK",
- [3]byte{0, 30, 150}: "Sepura Plc",
- [3]byte{0, 30, 151}: "Medium Link System Technology CO., LTD,",
- [3]byte{0, 30, 152}: "GreenLine Communications",
- [3]byte{0, 30, 153}: "Vantanol Industrial Corporation",
- [3]byte{0, 30, 154}: "HAMILTON Bonaduz AG",
- [3]byte{0, 30, 155}: "San-Eisha, Ltd.",
- [3]byte{0, 30, 156}: "Fidustron INC",
- [3]byte{0, 30, 157}: "Recall Technologies, Inc.",
- [3]byte{0, 30, 158}: "ddm hopt + schuler Gmbh + Co. KG",
- [3]byte{0, 30, 159}: "Visioneering Systems, Inc.",
- [3]byte{0, 30, 160}: "XLN-t",
- [3]byte{0, 30, 161}: "Brunata a/s",
- [3]byte{0, 30, 162}: "Symx Systems, Inc.",
- [3]byte{0, 30, 163}: "Nokia Danmark A/S",
- [3]byte{0, 30, 164}: "Nokia Danmark A/S",
- [3]byte{0, 30, 165}: "ROBOTOUS, Inc.",
- [3]byte{0, 30, 166}: "Best IT World (India) Pvt. Ltd.",
- [3]byte{0, 30, 167}: "Actiontec Electronics, Inc",
- [3]byte{0, 30, 168}: "Datang Mobile Communications Equipment CO.,LTD",
- [3]byte{0, 30, 169}: "Nintendo Co., Ltd.",
- [3]byte{0, 30, 170}: "E-Senza Technologies GmbH",
- [3]byte{0, 30, 171}: "TeleWell Oy",
- [3]byte{0, 30, 172}: "Armadeus Systems",
- [3]byte{0, 30, 173}: "Wingtech Group Limited",
- [3]byte{0, 30, 174}: "Continental Automotive Systems Inc.",
- [3]byte{0, 30, 175}: "Ophir Optronics Ltd",
- [3]byte{0, 30, 176}: "ImesD Electronica S.L.",
- [3]byte{0, 30, 177}: "Cryptsoft Pty Ltd",
- [3]byte{0, 30, 178}: "LG innotek",
- [3]byte{0, 30, 179}: "Primex Wireless",
- [3]byte{0, 30, 180}: "UNIFAT TECHNOLOGY LTD.",
- [3]byte{0, 30, 181}: "Ever Sparkle Technologies Ltd",
- [3]byte{0, 30, 182}: "TAG Heuer SA",
- [3]byte{0, 30, 183}: "TBTech, Co., Ltd.",
- [3]byte{0, 30, 184}: "Fortis, Inc.",
- [3]byte{0, 30, 185}: "Sing Fai Technology Limited",
- [3]byte{0, 30, 186}: "High Density Devices AS",
- [3]byte{0, 30, 187}: "BLUELIGHT TECHNOLOGY INC.",
- [3]byte{0, 30, 188}: "WINTECH AUTOMATION CO.,LTD.",
- [3]byte{0, 30, 189}: "Cisco Systems, Inc",
- [3]byte{0, 30, 190}: "Cisco Systems, Inc",
- [3]byte{0, 30, 191}: "Haas Automation Inc.",
- [3]byte{0, 30, 192}: "Microchip Technology Inc.",
- [3]byte{0, 30, 193}: "3COM EUROPE LTD",
- [3]byte{0, 30, 194}: "Apple, Inc.",
- [3]byte{0, 30, 195}: "Kozio, Inc.",
- [3]byte{0, 30, 196}: "Celio Corp",
- [3]byte{0, 30, 197}: "Middle Atlantic Products Inc",
- [3]byte{0, 30, 198}: "Obvius Holdings LLC",
- [3]byte{0, 30, 199}: "2Wire Inc",
- [3]byte{0, 30, 200}: "Rapid Mobile (Pty) Ltd",
- [3]byte{0, 30, 201}: "Dell Inc.",
- [3]byte{0, 30, 202}: "Nortel Networks",
- [3]byte{0, 30, 203}: "RPC Energoautomatika Ltd",
- [3]byte{0, 30, 204}: "CDVI",
- [3]byte{0, 30, 205}: "KYLAND Technology Co. LTD",
- [3]byte{0, 30, 206}: "BISA Technologies (Hong Kong) Limited",
- [3]byte{0, 30, 207}: "PHILIPS ELECTRONICS UK LTD",
- [3]byte{0, 30, 208}: "Ingespace",
- [3]byte{0, 30, 209}: "Keyprocessor B.V.",
- [3]byte{0, 30, 210}: "Ray Shine Video Technology Inc",
- [3]byte{0, 30, 211}: "Dot Technology Int'l Co., Ltd.",
- [3]byte{0, 30, 212}: "Doble Engineering",
- [3]byte{0, 30, 213}: "Tekon-Automatics",
- [3]byte{0, 30, 214}: "Alentec & Orion AB",
- [3]byte{0, 30, 215}: "H-Stream Wireless, Inc.",
- [3]byte{0, 30, 216}: "Digital United Inc.",
- [3]byte{0, 30, 217}: "Mitsubishi Precision Co.,LTd.",
- [3]byte{0, 30, 218}: "Wesemann Elektrotechniek B.V.",
- [3]byte{0, 30, 219}: "Giken Trastem Co., Ltd.",
- [3]byte{0, 30, 220}: "Sony Mobile Communications AB",
- [3]byte{0, 30, 221}: "WASKO S.A.",
- [3]byte{0, 30, 222}: "BYD COMPANY LIMITED",
- [3]byte{0, 30, 223}: "Master Industrialization Center Kista",
- [3]byte{0, 30, 224}: "Urmet Domus SpA",
- [3]byte{0, 30, 225}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 30, 226}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 30, 227}: "T&W Electronics (ShenZhen) Co.,Ltd",
- [3]byte{0, 30, 228}: "ACS Solutions France",
- [3]byte{0, 30, 229}: "Cisco-Linksys, LLC",
- [3]byte{0, 30, 230}: "Shenzhen Advanced Video Info-Tech Co., Ltd.",
- [3]byte{0, 30, 231}: "Epic Systems Inc",
- [3]byte{0, 30, 232}: "Mytek",
- [3]byte{0, 30, 233}: "Stoneridge Electronics AB",
- [3]byte{0, 30, 234}: "Sensor Switch, Inc.",
- [3]byte{0, 30, 235}: "Talk-A-Phone Co.",
- [3]byte{0, 30, 236}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{0, 30, 237}: "Adventiq Ltd.",
- [3]byte{0, 30, 238}: "ETL Systems Ltd",
- [3]byte{0, 30, 239}: "Cantronic International Limited",
- [3]byte{0, 30, 240}: "Gigafin Networks",
- [3]byte{0, 30, 241}: "Servimat",
- [3]byte{0, 30, 242}: "Micro Motion Inc",
- [3]byte{0, 30, 243}: "From2",
- [3]byte{0, 30, 244}: "L-3 Communications Display Systems",
- [3]byte{0, 30, 245}: "Hitek Automated Inc.",
- [3]byte{0, 30, 246}: "Cisco Systems, Inc",
- [3]byte{0, 30, 247}: "Cisco Systems, Inc",
- [3]byte{0, 30, 248}: "Emfinity Inc.",
- [3]byte{0, 30, 249}: "Pascom Kommunikations systeme GmbH.",
- [3]byte{0, 30, 250}: "PROTEI Ltd.",
- [3]byte{0, 30, 251}: "Trio Motion Technology Ltd",
- [3]byte{0, 30, 252}: "JSC MASSA-K",
- [3]byte{0, 30, 253}: "Microbit 2.0 AB",
- [3]byte{0, 30, 254}: "LEVEL s.r.o.",
- [3]byte{0, 30, 255}: "Mueller-Elektronik GmbH & Co. KG",
- [3]byte{0, 31, 0}: "Nokia Danmark A/S",
- [3]byte{0, 31, 1}: "Nokia Danmark A/S",
- [3]byte{0, 31, 2}: "Pixelmetrix Corporation Pte Ltd",
- [3]byte{0, 31, 3}: "NUM AG",
- [3]byte{0, 31, 4}: "Granch Ltd.",
- [3]byte{0, 31, 5}: "iTAS Technology Corp.",
- [3]byte{0, 31, 6}: "Integrated Dispatch Solutions",
- [3]byte{0, 31, 7}: "AZTEQ Mobile",
- [3]byte{0, 31, 8}: "RISCO LTD",
- [3]byte{0, 31, 9}: "Jastec",
- [3]byte{0, 31, 10}: "Nortel Networks",
- [3]byte{0, 31, 11}: "Federal State Unitary Enterprise Industrial UnionElectropribor",
- [3]byte{0, 31, 12}: "Intelligent Digital Services GmbH",
- [3]byte{0, 31, 13}: "L3 Communications - Telemetry West",
- [3]byte{0, 31, 14}: "Japan Kyastem Co., Ltd",
- [3]byte{0, 31, 15}: "Select Engineered Systems",
- [3]byte{0, 31, 16}: "TOLEDO DO BRASIL INDUSTRIA DE BALANCAS LTDA",
- [3]byte{0, 31, 17}: "OPENMOKO, INC.",
- [3]byte{0, 31, 18}: "Juniper Networks",
- [3]byte{0, 31, 19}: "S.& A.S. Ltd.",
- [3]byte{0, 31, 20}: "NexG",
- [3]byte{0, 31, 21}: "Bioscrypt Inc",
- [3]byte{0, 31, 22}: "Wistron Corporation",
- [3]byte{0, 31, 23}: "IDX Company, Ltd.",
- [3]byte{0, 31, 24}: "Hakusan.Mfg.Co,.Ltd",
- [3]byte{0, 31, 25}: "BEN-RI ELECTRONICA S.A.",
- [3]byte{0, 31, 26}: "Prominvest",
- [3]byte{0, 31, 27}: "RoyalTek Company Ltd.",
- [3]byte{0, 31, 28}: "KOBISHI ELECTRIC Co.,Ltd.",
- [3]byte{0, 31, 29}: "Atlas Material Testing Technology LLC",
- [3]byte{0, 31, 30}: "Astec Technology Co., Ltd",
- [3]byte{0, 31, 31}: "Edimax Technology Co. Ltd.",
- [3]byte{0, 31, 32}: "Logitech Europe SA",
- [3]byte{0, 31, 33}: "Inner Mongolia Yin An Science & Technology Development Co.,L",
- [3]byte{0, 31, 34}: "Source Photonics, Inc.",
- [3]byte{0, 31, 35}: "Interacoustics",
- [3]byte{0, 31, 36}: "DIGITVIEW TECHNOLOGY CO., LTD.",
- [3]byte{0, 31, 37}: "MBS GmbH",
- [3]byte{0, 31, 38}: "Cisco Systems, Inc",
- [3]byte{0, 31, 39}: "Cisco Systems, Inc",
- [3]byte{0, 31, 40}: "HPN Supply Chain",
- [3]byte{0, 31, 41}: "Hewlett Packard",
- [3]byte{0, 31, 42}: "ACCM",
- [3]byte{0, 31, 43}: "Orange Logic",
- [3]byte{0, 31, 44}: "Starbridge Networks",
- [3]byte{0, 31, 45}: "Electro-Optical Imaging, Inc.",
- [3]byte{0, 31, 46}: "Triangle Research Int'l Pte Ltd",
- [3]byte{0, 31, 47}: "Berker GmbH & Co. KG",
- [3]byte{0, 31, 48}: "Travelping",
- [3]byte{0, 31, 49}: "Radiocomp",
- [3]byte{0, 31, 50}: "Nintendo Co., Ltd.",
- [3]byte{0, 31, 51}: "NETGEAR",
- [3]byte{0, 31, 52}: "Lung Hwa Electronics Co., Ltd.",
- [3]byte{0, 31, 53}: "AIR802 LLC",
- [3]byte{0, 31, 54}: "Bellwin Information Co. Ltd.,",
- [3]byte{0, 31, 55}: "Genesis I&C",
- [3]byte{0, 31, 56}: "POSITRON",
- [3]byte{0, 31, 57}: "Construcciones y Auxiliar de Ferrocarriles, S.A.",
- [3]byte{0, 31, 58}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 31, 59}: "Intel Corporate",
- [3]byte{0, 31, 60}: "Intel Corporate",
- [3]byte{0, 31, 61}: "Qbit GmbH",
- [3]byte{0, 31, 62}: "RP-Technik e.K.",
- [3]byte{0, 31, 63}: "AVM GmbH",
- [3]byte{0, 31, 64}: "Speakercraft Inc.",
- [3]byte{0, 31, 65}: "Ruckus Wireless",
- [3]byte{0, 31, 66}: "Etherstack plc",
- [3]byte{0, 31, 67}: "ENTES ELEKTRONIK",
- [3]byte{0, 31, 68}: "GE Transportation Systems",
- [3]byte{0, 31, 69}: "Enterasys",
- [3]byte{0, 31, 70}: "Nortel Networks",
- [3]byte{0, 31, 71}: "MCS Logic Inc.",
- [3]byte{0, 31, 72}: "Mojix Inc.",
- [3]byte{0, 31, 73}: "Manhattan TV Ltd",
- [3]byte{0, 31, 74}: "Albentia Systems S.A.",
- [3]byte{0, 31, 75}: "Lineage Power",
- [3]byte{0, 31, 76}: "Roseman Engineering Ltd",
- [3]byte{0, 31, 77}: "Segnetics LLC",
- [3]byte{0, 31, 78}: "ConMed Linvatec",
- [3]byte{0, 31, 79}: "Thinkware Co. Ltd.",
- [3]byte{0, 31, 80}: "Swissdis AG",
- [3]byte{0, 31, 81}: "HD Communications Corp",
- [3]byte{0, 31, 82}: "UVT Unternehmensberatung fur Verkehr und Technik GmbH",
- [3]byte{0, 31, 83}: "GEMAC Gesellschaft für Mikroelektronikanwendung Chemnitz mbH",
- [3]byte{0, 31, 84}: "Lorex Technology Inc.",
- [3]byte{0, 31, 85}: "Honeywell Security (China) Co., Ltd.",
- [3]byte{0, 31, 86}: "DIGITAL FORECAST",
- [3]byte{0, 31, 87}: "Phonik Innovation Co.,LTD",
- [3]byte{0, 31, 88}: "EMH Energiemesstechnik GmbH",
- [3]byte{0, 31, 89}: "Kronback Tracers",
- [3]byte{0, 31, 90}: "Beckwith Electric Co.",
- [3]byte{0, 31, 91}: "Apple, Inc.",
- [3]byte{0, 31, 92}: "Nokia Danmark A/S",
- [3]byte{0, 31, 93}: "Nokia Danmark A/S",
- [3]byte{0, 31, 94}: "Dyna Technology Co.,Ltd.",
- [3]byte{0, 31, 95}: "Blatand GmbH",
- [3]byte{0, 31, 96}: "COMPASS SYSTEMS CORP.",
- [3]byte{0, 31, 97}: "Talent Communication Networks Inc.",
- [3]byte{0, 31, 98}: "JSC Stilsoft",
- [3]byte{0, 31, 99}: "JSC Goodwin-Europa",
- [3]byte{0, 31, 100}: "Beijing Autelan Technology Inc.",
- [3]byte{0, 31, 101}: "KOREA ELECTRIC TERMINAL CO., LTD.",
- [3]byte{0, 31, 102}: "PLANAR LLC",
- [3]byte{0, 31, 103}: "Hitachi,Ltd.",
- [3]byte{0, 31, 104}: "Martinsson Elektronik AB",
- [3]byte{0, 31, 105}: "Pingood Technology Co., Ltd.",
- [3]byte{0, 31, 106}: "PacketFlux Technologies, Inc.",
- [3]byte{0, 31, 107}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 31, 108}: "Cisco Systems, Inc",
- [3]byte{0, 31, 109}: "Cisco Systems, Inc",
- [3]byte{0, 31, 110}: "Vtech Engineering Corporation",
- [3]byte{0, 31, 111}: "Fujian Sunnada Communication Co.,Ltd.",
- [3]byte{0, 31, 112}: "Botik Technologies LTD",
- [3]byte{0, 31, 113}: "xG Technology, Inc.",
- [3]byte{0, 31, 114}: "QingDao Hiphone Technology Co,.Ltd",
- [3]byte{0, 31, 115}: "Teraview Technology Co., Ltd.",
- [3]byte{0, 31, 116}: "Eigen Development",
- [3]byte{0, 31, 117}: "GiBahn Media",
- [3]byte{0, 31, 118}: "AirLogic Systems Inc.",
- [3]byte{0, 31, 119}: "HEOL DESIGN",
- [3]byte{0, 31, 120}: "Blue Fox Porini Textile",
- [3]byte{0, 31, 121}: "Lodam Electronics A/S",
- [3]byte{0, 31, 122}: "WiWide Inc.",
- [3]byte{0, 31, 123}: "TechNexion Ltd.",
- [3]byte{0, 31, 124}: "Witelcom AS",
- [3]byte{0, 31, 125}: "Embedded Wireless GmbH",
- [3]byte{0, 31, 126}: "ARRIS Group, Inc.",
- [3]byte{0, 31, 127}: "Phabrix Limited",
- [3]byte{0, 31, 128}: "Lucas Holding bv",
- [3]byte{0, 31, 129}: "Accel Semiconductor Corp",
- [3]byte{0, 31, 130}: "Cal-Comp Electronics & Communications Company Ltd.",
- [3]byte{0, 31, 131}: "Teleplan Technology Services Sdn Bhd",
- [3]byte{0, 31, 132}: "Gigle Semiconductor",
- [3]byte{0, 31, 133}: "Apriva ISS, LLC",
- [3]byte{0, 31, 134}: "digEcor",
- [3]byte{0, 31, 135}: "Skydigital Inc.",
- [3]byte{0, 31, 136}: "FMS Force Measuring Systems AG",
- [3]byte{0, 31, 137}: "Signalion GmbH",
- [3]byte{0, 31, 138}: "Ellion Digital Inc.",
- [3]byte{0, 31, 139}: "Cache IQ",
- [3]byte{0, 31, 140}: "CCS Inc.",
- [3]byte{0, 31, 141}: "Ingenieurbuero Stark GmbH und Ko. KG",
- [3]byte{0, 31, 142}: "Metris USA Inc.",
- [3]byte{0, 31, 143}: "Shanghai Bellmann Digital Source Co.,Ltd.",
- [3]byte{0, 31, 144}: "Actiontec Electronics, Inc",
- [3]byte{0, 31, 145}: "DBS Lodging Technologies, LLC",
- [3]byte{0, 31, 146}: "Avigilon Corporation",
- [3]byte{0, 31, 147}: "Xiotech Corporation",
- [3]byte{0, 31, 148}: "Lascar Electronics Ltd",
- [3]byte{0, 31, 149}: "Sagemcom Broadband SAS",
- [3]byte{0, 31, 150}: "APROTECH CO.LTD",
- [3]byte{0, 31, 151}: "BERTANA srl",
- [3]byte{0, 31, 152}: "DAIICHI-DENTSU LTD.",
- [3]byte{0, 31, 153}: "SERONICS co.ltd",
- [3]byte{0, 31, 154}: "Nortel Networks",
- [3]byte{0, 31, 155}: "POSBRO",
- [3]byte{0, 31, 156}: "LEDCO",
- [3]byte{0, 31, 157}: "Cisco Systems, Inc",
- [3]byte{0, 31, 158}: "Cisco Systems, Inc",
- [3]byte{0, 31, 159}: "Thomson Telecom Belgium",
- [3]byte{0, 31, 160}: "A10 Networks",
- [3]byte{0, 31, 161}: "Gtran Inc",
- [3]byte{0, 31, 162}: "Datron World Communications, Inc.",
- [3]byte{0, 31, 163}: "T&W Electronics(Shenzhen)Co.,Ltd.",
- [3]byte{0, 31, 164}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{0, 31, 165}: "Blue-White Industries",
- [3]byte{0, 31, 166}: "Stilo srl",
- [3]byte{0, 31, 167}: "Sony Interactive Entertainment Inc.",
- [3]byte{0, 31, 168}: "Smart Energy Instruments Inc.",
- [3]byte{0, 31, 169}: "Atlanta DTH, Inc.",
- [3]byte{0, 31, 170}: "Taseon, Inc.",
- [3]byte{0, 31, 171}: "I.S HIGH TECH.INC",
- [3]byte{0, 31, 172}: "Goodmill Systems Ltd",
- [3]byte{0, 31, 173}: "Brown Innovations, Inc",
- [3]byte{0, 31, 174}: "Blick South Africa (Pty) Ltd",
- [3]byte{0, 31, 175}: "NextIO, Inc.",
- [3]byte{0, 31, 176}: "TimeIPS, Inc.",
- [3]byte{0, 31, 177}: "Cybertech Inc.",
- [3]byte{0, 31, 178}: "Sontheim Industrie Elektronik GmbH",
- [3]byte{0, 31, 179}: "2Wire Inc",
- [3]byte{0, 31, 180}: "SmartShare Systems",
- [3]byte{0, 31, 181}: "I/O Interconnect Inc.",
- [3]byte{0, 31, 182}: "Chi Lin Technology Co., Ltd.",
- [3]byte{0, 31, 183}: "WiMate Technologies Corp.",
- [3]byte{0, 31, 184}: "Universal Remote Control, Inc.",
- [3]byte{0, 31, 185}: "Paltronics",
- [3]byte{0, 31, 186}: "Boyoung Tech",
- [3]byte{0, 31, 187}: "Xenatech Co.,LTD",
- [3]byte{0, 31, 188}: "EVGA Corporation",
- [3]byte{0, 31, 189}: "Kyocera Wireless Corp.",
- [3]byte{0, 31, 190}: "Shenzhen Mopnet Industrial Co.,Ltd",
- [3]byte{0, 31, 191}: "Fulhua Microelectronics Corp. Taiwan Branch",
- [3]byte{0, 31, 192}: "Control Express Finland Oy",
- [3]byte{0, 31, 193}: "Hanlong Technology Co.,LTD",
- [3]byte{0, 31, 194}: "Jow Tong Technology Co Ltd",
- [3]byte{0, 31, 195}: "SmartSynch, Inc",
- [3]byte{0, 31, 196}: "ARRIS Group, Inc.",
- [3]byte{0, 31, 197}: "Nintendo Co., Ltd.",
- [3]byte{0, 31, 198}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 31, 199}: "Casio Hitachi Mobile Communications Co., Ltd.",
- [3]byte{0, 31, 200}: "Up-Today Industrial Co., Ltd.",
- [3]byte{0, 31, 201}: "Cisco Systems, Inc",
- [3]byte{0, 31, 202}: "Cisco Systems, Inc",
- [3]byte{0, 31, 203}: "NIW Solutions",
- [3]byte{0, 31, 204}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 31, 205}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 31, 206}: "QTECH LLC",
- [3]byte{0, 31, 207}: "MSI Technology GmbH",
- [3]byte{0, 31, 208}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{0, 31, 209}: "OPTEX CO.,LTD.",
- [3]byte{0, 31, 210}: "COMMTECH TECHNOLOGY MACAO COMMERCIAL OFFSHORE LTD.",
- [3]byte{0, 31, 211}: "RIVA Networks Inc.",
- [3]byte{0, 31, 212}: "4IPNET, INC.",
- [3]byte{0, 31, 213}: "MICRORISC s.r.o.",
- [3]byte{0, 31, 214}: "Shenzhen Allywll",
- [3]byte{0, 31, 215}: "TELERAD SA",
- [3]byte{0, 31, 216}: "A-TRUST COMPUTER CORPORATION",
- [3]byte{0, 31, 217}: "RSD Communications Ltd",
- [3]byte{0, 31, 218}: "Nortel Networks",
- [3]byte{0, 31, 219}: "Network Supply Corp.,",
- [3]byte{0, 31, 220}: "Mobile Safe Track Ltd",
- [3]byte{0, 31, 221}: "GDI LLC",
- [3]byte{0, 31, 222}: "Nokia Danmark A/S",
- [3]byte{0, 31, 223}: "Nokia Danmark A/S",
- [3]byte{0, 31, 224}: "EdgeVelocity Corp",
- [3]byte{0, 31, 225}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 31, 226}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 31, 227}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 31, 228}: "Sony Mobile Communications AB",
- [3]byte{0, 31, 229}: "In-Circuit GmbH",
- [3]byte{0, 31, 230}: "Alphion Corporation",
- [3]byte{0, 31, 231}: "Simet",
- [3]byte{0, 31, 232}: "KURUSUGAWA Electronics Industry Inc,.",
- [3]byte{0, 31, 233}: "Printrex, Inc.",
- [3]byte{0, 31, 234}: "Applied Media Technologies Corporation",
- [3]byte{0, 31, 235}: "Trio Datacom Pty Ltd",
- [3]byte{0, 31, 236}: "Synapse Électronique",
- [3]byte{0, 31, 237}: "Tecan Systems Inc.",
- [3]byte{0, 31, 238}: "ubisys technologies GmbH",
- [3]byte{0, 31, 239}: "SHINSEI INDUSTRIES CO.,LTD",
- [3]byte{0, 31, 240}: "Audio Partnership",
- [3]byte{0, 31, 241}: "Paradox Hellas S.A.",
- [3]byte{0, 31, 242}: "VIA Technologies, Inc.",
- [3]byte{0, 31, 243}: "Apple, Inc.",
- [3]byte{0, 31, 244}: "Power Monitors, Inc.",
- [3]byte{0, 31, 245}: "Kongsberg Defence & Aerospace",
- [3]byte{0, 31, 246}: "PS Audio International",
- [3]byte{0, 31, 247}: "Nakajima All Precision Co., Ltd.",
- [3]byte{0, 31, 248}: "Siemens AG, Sector Industry, Drive Technologies, Motion Control Systems",
- [3]byte{0, 31, 249}: "Advanced Knowledge Associates",
- [3]byte{0, 31, 250}: "Coretree, Co, Ltd",
- [3]byte{0, 31, 251}: "Green Packet Bhd",
- [3]byte{0, 31, 252}: "Riccius+Sohn GmbH",
- [3]byte{0, 31, 253}: "Indigo Mobile Technologies Corp.",
- [3]byte{0, 31, 254}: "HPN Supply Chain",
- [3]byte{0, 31, 255}: "Respironics, Inc.",
- [3]byte{0, 32, 0}: "LEXMARK INTERNATIONAL, INC.",
- [3]byte{0, 32, 1}: "DSP SOLUTIONS, INC.",
- [3]byte{0, 32, 2}: "SERITECH ENTERPRISE CO., LTD.",
- [3]byte{0, 32, 3}: "PIXEL POWER LTD.",
- [3]byte{0, 32, 4}: "YAMATAKE-HONEYWELL CO., LTD.",
- [3]byte{0, 32, 5}: "SIMPLE TECHNOLOGY",
- [3]byte{0, 32, 6}: "GARRETT COMMUNICATIONS, INC.",
- [3]byte{0, 32, 7}: "SFA, INC.",
- [3]byte{0, 32, 8}: "CABLE & COMPUTER TECHNOLOGY",
- [3]byte{0, 32, 9}: "PACKARD BELL ELEC., INC.",
- [3]byte{0, 32, 10}: "SOURCE-COMM CORP.",
- [3]byte{0, 32, 11}: "OCTAGON SYSTEMS CORP.",
- [3]byte{0, 32, 12}: "ADASTRA SYSTEMS CORP.",
- [3]byte{0, 32, 13}: "CARL ZEISS",
- [3]byte{0, 32, 14}: "SATELLITE TECHNOLOGY MGMT, INC",
- [3]byte{0, 32, 15}: "EBRAINS Inc",
- [3]byte{0, 32, 16}: "JEOL SYSTEM TECHNOLOGY CO. LTD",
- [3]byte{0, 32, 17}: "CANOPUS CO., LTD.",
- [3]byte{0, 32, 18}: "CAMTRONICS MEDICAL SYSTEMS",
- [3]byte{0, 32, 19}: "DIVERSIFIED TECHNOLOGY, INC.",
- [3]byte{0, 32, 20}: "GLOBAL VIEW CO., LTD.",
- [3]byte{0, 32, 21}: "ACTIS COMPUTER SA",
- [3]byte{0, 32, 22}: "SHOWA ELECTRIC WIRE & CABLE CO",
- [3]byte{0, 32, 23}: "ORBOTECH",
- [3]byte{0, 32, 24}: "CIS TECHNOLOGY INC.",
- [3]byte{0, 32, 25}: "OHLER GMBH",
- [3]byte{0, 32, 26}: "MRV Communications, Inc.",
- [3]byte{0, 32, 27}: "NORTHERN TELECOM/NETWORK",
- [3]byte{0, 32, 28}: "EXCEL, INC.",
- [3]byte{0, 32, 29}: "KATANA PRODUCTS",
- [3]byte{0, 32, 30}: "NETQUEST CORPORATION",
- [3]byte{0, 32, 31}: "BEST POWER TECHNOLOGY, INC.",
- [3]byte{0, 32, 32}: "MEGATRON COMPUTER INDUSTRIES PTY, LTD.",
- [3]byte{0, 32, 33}: "ALGORITHMS SOFTWARE PVT. LTD.",
- [3]byte{0, 32, 34}: "NMS Communications",
- [3]byte{0, 32, 35}: "T.C. TECHNOLOGIES PTY. LTD",
- [3]byte{0, 32, 36}: "PACIFIC COMMUNICATION SCIENCES",
- [3]byte{0, 32, 37}: "CONTROL TECHNOLOGY, INC.",
- [3]byte{0, 32, 38}: "AMKLY SYSTEMS, INC.",
- [3]byte{0, 32, 39}: "MING FORTUNE INDUSTRY CO., LTD",
- [3]byte{0, 32, 40}: "WEST EGG SYSTEMS, INC.",
- [3]byte{0, 32, 41}: "TELEPROCESSING PRODUCTS, INC.",
- [3]byte{0, 32, 42}: "N.V. DZINE",
- [3]byte{0, 32, 43}: "ADVANCED TELECOMMUNICATIONS MODULES, LTD.",
- [3]byte{0, 32, 44}: "WELLTRONIX CO., LTD.",
- [3]byte{0, 32, 45}: "TAIYO CORPORATION",
- [3]byte{0, 32, 46}: "DAYSTAR DIGITAL",
- [3]byte{0, 32, 47}: "ZETA COMMUNICATIONS, LTD.",
- [3]byte{0, 32, 48}: "ANALOG & DIGITAL SYSTEMS",
- [3]byte{0, 32, 49}: "Tattile SRL",
- [3]byte{0, 32, 50}: "ALCATEL TAISEL",
- [3]byte{0, 32, 51}: "SYNAPSE TECHNOLOGIES, INC.",
- [3]byte{0, 32, 52}: "ROTEC INDUSTRIEAUTOMATION GMBH",
- [3]byte{0, 32, 53}: "IBM Corp",
- [3]byte{0, 32, 54}: "BMC SOFTWARE",
- [3]byte{0, 32, 55}: "Seagate Technology",
- [3]byte{0, 32, 56}: "VME MICROSYSTEMS INTERNATIONAL CORPORATION",
- [3]byte{0, 32, 57}: "SCINETS",
- [3]byte{0, 32, 58}: "DIGITAL BI0METRICS INC.",
- [3]byte{0, 32, 59}: "WISDM LTD.",
- [3]byte{0, 32, 60}: "EUROTIME AB",
- [3]byte{0, 32, 61}: "Honeywell ECC",
- [3]byte{0, 32, 62}: "LogiCan Technologies, Inc.",
- [3]byte{0, 32, 63}: "JUKI CORPORATION",
- [3]byte{0, 32, 64}: "ARRIS Group, Inc.",
- [3]byte{0, 32, 65}: "DATA NET",
- [3]byte{0, 32, 66}: "DATAMETRICS CORP.",
- [3]byte{0, 32, 67}: "NEURON COMPANY LIMITED",
- [3]byte{0, 32, 68}: "GENITECH PTY LTD",
- [3]byte{0, 32, 69}: "ION Networks, Inc.",
- [3]byte{0, 32, 70}: "CIPRICO, INC.",
- [3]byte{0, 32, 71}: "STEINBRECHER CORP.",
- [3]byte{0, 32, 72}: "Marconi Communications",
- [3]byte{0, 32, 73}: "COMTRON, INC.",
- [3]byte{0, 32, 74}: "PRONET GMBH",
- [3]byte{0, 32, 75}: "AUTOCOMPUTER CO., LTD.",
- [3]byte{0, 32, 76}: "MITRON COMPUTER PTE LTD.",
- [3]byte{0, 32, 77}: "INOVIS GMBH",
- [3]byte{0, 32, 78}: "NETWORK SECURITY SYSTEMS, INC.",
- [3]byte{0, 32, 79}: "DEUTSCHE AEROSPACE AG",
- [3]byte{0, 32, 80}: "KOREA COMPUTER INC.",
- [3]byte{0, 32, 81}: "Verilink Corporation",
- [3]byte{0, 32, 82}: "RAGULA SYSTEMS",
- [3]byte{0, 32, 83}: "HUNTSVILLE MICROSYSTEMS, INC.",
- [3]byte{0, 32, 84}: "Sycamore Networks",
- [3]byte{0, 32, 85}: "ALTECH CO., LTD.",
- [3]byte{0, 32, 86}: "NEOPRODUCTS",
- [3]byte{0, 32, 87}: "TITZE DATENTECHNIK GmbH",
- [3]byte{0, 32, 88}: "ALLIED SIGNAL INC.",
- [3]byte{0, 32, 89}: "MIRO COMPUTER PRODUCTS AG",
- [3]byte{0, 32, 90}: "COMPUTER IDENTICS",
- [3]byte{0, 32, 91}: "Kentrox, LLC",
- [3]byte{0, 32, 92}: "InterNet Systems of Florida, Inc.",
- [3]byte{0, 32, 93}: "NANOMATIC OY",
- [3]byte{0, 32, 94}: "CASTLE ROCK, INC.",
- [3]byte{0, 32, 95}: "GAMMADATA COMPUTER GMBH",
- [3]byte{0, 32, 96}: "ALCATEL ITALIA S.p.A.",
- [3]byte{0, 32, 97}: "GarrettCom, Inc.",
- [3]byte{0, 32, 98}: "SCORPION LOGIC, LTD.",
- [3]byte{0, 32, 99}: "WIPRO INFOTECH LTD.",
- [3]byte{0, 32, 100}: "PROTEC MICROSYSTEMS, INC.",
- [3]byte{0, 32, 101}: "SUPERNET NETWORKING INC.",
- [3]byte{0, 32, 102}: "GENERAL MAGIC, INC.",
- [3]byte{0, 32, 103}: "Private",
- [3]byte{0, 32, 104}: "ISDYNE",
- [3]byte{0, 32, 105}: "ISDN SYSTEMS CORPORATION",
- [3]byte{0, 32, 106}: "OSAKA COMPUTER CORP.",
- [3]byte{0, 32, 107}: "KONICA MINOLTA HOLDINGS, INC.",
- [3]byte{0, 32, 108}: "EVERGREEN TECHNOLOGY CORP.",
- [3]byte{0, 32, 109}: "DATA RACE, INC.",
- [3]byte{0, 32, 110}: "XACT, INC.",
- [3]byte{0, 32, 111}: "FLOWPOINT CORPORATION",
- [3]byte{0, 32, 112}: "HYNET, LTD.",
- [3]byte{0, 32, 113}: "IBR GMBH",
- [3]byte{0, 32, 114}: "WORKLINK INNOVATIONS",
- [3]byte{0, 32, 115}: "FUSION SYSTEMS CORPORATION",
- [3]byte{0, 32, 116}: "SUNGWOON SYSTEMS",
- [3]byte{0, 32, 117}: "MOTOROLA COMMUNICATION ISRAEL",
- [3]byte{0, 32, 118}: "REUDO CORPORATION",
- [3]byte{0, 32, 119}: "KARDIOS SYSTEMS CORP.",
- [3]byte{0, 32, 120}: "RUNTOP, INC.",
- [3]byte{0, 32, 121}: "MIKRON GMBH",
- [3]byte{0, 32, 122}: "WiSE Communications, Inc.",
- [3]byte{0, 32, 123}: "Intel Corporation",
- [3]byte{0, 32, 124}: "AUTEC GMBH",
- [3]byte{0, 32, 125}: "ADVANCED COMPUTER APPLICATIONS",
- [3]byte{0, 32, 126}: "FINECOM CO., LTD.",
- [3]byte{0, 32, 127}: "KYOEI SANGYO CO., LTD.",
- [3]byte{0, 32, 128}: "SYNERGY (UK) LTD.",
- [3]byte{0, 32, 129}: "TITAN ELECTRONICS",
- [3]byte{0, 32, 130}: "ONEAC CORPORATION",
- [3]byte{0, 32, 131}: "PRESTICOM INCORPORATED",
- [3]byte{0, 32, 132}: "OCE PRINTING SYSTEMS, GMBH",
- [3]byte{0, 32, 133}: "Eaton Corporation",
- [3]byte{0, 32, 134}: "MICROTECH ELECTRONICS LIMITED",
- [3]byte{0, 32, 135}: "MEMOTEC, INC.",
- [3]byte{0, 32, 136}: "GLOBAL VILLAGE COMMUNICATION",
- [3]byte{0, 32, 137}: "T3PLUS NETWORKING, INC.",
- [3]byte{0, 32, 138}: "SONIX COMMUNICATIONS, LTD.",
- [3]byte{0, 32, 139}: "LAPIS TECHNOLOGIES, INC.",
- [3]byte{0, 32, 140}: "GALAXY NETWORKS, INC.",
- [3]byte{0, 32, 141}: "CMD TECHNOLOGY",
- [3]byte{0, 32, 142}: "CHEVIN SOFTWARE ENG. LTD.",
- [3]byte{0, 32, 143}: "ECI Telecom Ltd.",
- [3]byte{0, 32, 144}: "ADVANCED COMPRESSION TECHNOLOGY, INC.",
- [3]byte{0, 32, 145}: "J125, NATIONAL SECURITY AGENCY",
- [3]byte{0, 32, 146}: "CHESS ENGINEERING B.V.",
- [3]byte{0, 32, 147}: "LANDINGS TECHNOLOGY CORP.",
- [3]byte{0, 32, 148}: "CUBIX CORPORATION",
- [3]byte{0, 32, 149}: "RIVA ELECTRONICS",
- [3]byte{0, 32, 150}: "Invensys",
- [3]byte{0, 32, 151}: "APPLIED SIGNAL TECHNOLOGY",
- [3]byte{0, 32, 152}: "HECTRONIC AB",
- [3]byte{0, 32, 153}: "BON ELECTRIC CO., LTD.",
- [3]byte{0, 32, 154}: "THE 3DO COMPANY",
- [3]byte{0, 32, 155}: "ERSAT ELECTRONIC GMBH",
- [3]byte{0, 32, 156}: "PRIMARY ACCESS CORP.",
- [3]byte{0, 32, 157}: "LIPPERT AUTOMATIONSTECHNIK",
- [3]byte{0, 32, 158}: "BROWN'S OPERATING SYSTEM SERVICES, LTD.",
- [3]byte{0, 32, 159}: "MERCURY COMPUTER SYSTEMS, INC.",
- [3]byte{0, 32, 160}: "OA LABORATORY CO., LTD.",
- [3]byte{0, 32, 161}: "DOVATRON",
- [3]byte{0, 32, 162}: "GALCOM NETWORKING LTD.",
- [3]byte{0, 32, 163}: "Harmonic, Inc",
- [3]byte{0, 32, 164}: "MULTIPOINT NETWORKS",
- [3]byte{0, 32, 165}: "API ENGINEERING",
- [3]byte{0, 32, 166}: "Proxim Wireless",
- [3]byte{0, 32, 167}: "PAIRGAIN TECHNOLOGIES, INC.",
- [3]byte{0, 32, 168}: "SAST TECHNOLOGY CORP.",
- [3]byte{0, 32, 169}: "WHITE HORSE INDUSTRIAL",
- [3]byte{0, 32, 170}: "Ericsson Television Limited",
- [3]byte{0, 32, 171}: "MICRO INDUSTRIES CORP.",
- [3]byte{0, 32, 172}: "INTERFLEX DATENSYSTEME GMBH",
- [3]byte{0, 32, 173}: "LINQ SYSTEMS",
- [3]byte{0, 32, 174}: "ORNET DATA COMMUNICATION TECH.",
- [3]byte{0, 32, 175}: "3COM CORPORATION",
- [3]byte{0, 32, 176}: "GATEWAY DEVICES, INC.",
- [3]byte{0, 32, 177}: "COMTECH RESEARCH INC.",
- [3]byte{0, 32, 178}: "GKD Gesellschaft Fur Kommunikation Und Datentechnik",
- [3]byte{0, 32, 179}: "Tattile SRL",
- [3]byte{0, 32, 180}: "TERMA ELEKTRONIK AS",
- [3]byte{0, 32, 181}: "YASKAWA ELECTRIC CORPORATION",
- [3]byte{0, 32, 182}: "AGILE NETWORKS, INC.",
- [3]byte{0, 32, 183}: "NAMAQUA COMPUTERWARE",
- [3]byte{0, 32, 184}: "PRIME OPTION, INC.",
- [3]byte{0, 32, 185}: "METRICOM, INC.",
- [3]byte{0, 32, 186}: "CENTER FOR HIGH PERFORMANCE",
- [3]byte{0, 32, 187}: "ZAX CORPORATION",
- [3]byte{0, 32, 188}: "Long Reach Networks Pty Ltd",
- [3]byte{0, 32, 189}: "NIOBRARA R & D CORPORATION",
- [3]byte{0, 32, 190}: "LAN ACCESS CORP.",
- [3]byte{0, 32, 191}: "AEHR TEST SYSTEMS",
- [3]byte{0, 32, 192}: "PULSE ELECTRONICS, INC.",
- [3]byte{0, 32, 193}: "SAXA, Inc.",
- [3]byte{0, 32, 194}: "TEXAS MEMORY SYSTEMS, INC.",
- [3]byte{0, 32, 195}: "COUNTER SOLUTIONS LTD.",
- [3]byte{0, 32, 196}: "INET,INC.",
- [3]byte{0, 32, 197}: "EAGLE TECHNOLOGY",
- [3]byte{0, 32, 198}: "NECTEC",
- [3]byte{0, 32, 199}: "AKAI Professional M.I. Corp.",
- [3]byte{0, 32, 200}: "LARSCOM INCORPORATED",
- [3]byte{0, 32, 201}: "VICTRON BV",
- [3]byte{0, 32, 202}: "DIGITAL OCEAN",
- [3]byte{0, 32, 203}: "PRETEC ELECTRONICS CORP.",
- [3]byte{0, 32, 204}: "DIGITAL SERVICES, LTD.",
- [3]byte{0, 32, 205}: "HYBRID NETWORKS, INC.",
- [3]byte{0, 32, 206}: "LOGICAL DESIGN GROUP, INC.",
- [3]byte{0, 32, 207}: "TEST & MEASUREMENT SYSTEMS INC",
- [3]byte{0, 32, 208}: "VERSALYNX CORPORATION",
- [3]byte{0, 32, 209}: "MICROCOMPUTER SYSTEMS (M) SDN.",
- [3]byte{0, 32, 210}: "RAD DATA COMMUNICATIONS, LTD.",
- [3]byte{0, 32, 211}: "OST (OUEST STANDARD TELEMATIQU",
- [3]byte{0, 32, 212}: "Cabletron Systems, Inc.",
- [3]byte{0, 32, 213}: "VIPA GMBH",
- [3]byte{0, 32, 214}: "Breezecom, Ltd.",
- [3]byte{0, 32, 215}: "JAPAN MINICOMPUTER SYSTEMS CO., Ltd.",
- [3]byte{0, 32, 216}: "Nortel Networks",
- [3]byte{0, 32, 217}: "PANASONIC TECHNOLOGIES, INC./MIECO-US",
- [3]byte{0, 32, 218}: "Alcatel-Lucent Enterprise",
- [3]byte{0, 32, 219}: "XNET TECHNOLOGY, INC.",
- [3]byte{0, 32, 220}: "DENSITRON TAIWAN LTD.",
- [3]byte{0, 32, 221}: "Cybertec Pty Ltd",
- [3]byte{0, 32, 222}: "JAPAN DIGITAL LABORAT'Y CO.LTD",
- [3]byte{0, 32, 223}: "KYOSAN ELECTRIC MFG. CO., LTD.",
- [3]byte{0, 32, 224}: "Actiontec Electronics, Inc",
- [3]byte{0, 32, 225}: "ALAMAR ELECTRONICS",
- [3]byte{0, 32, 226}: "INFORMATION RESOURCE ENGINEERING",
- [3]byte{0, 32, 227}: "MCD KENCOM CORPORATION",
- [3]byte{0, 32, 228}: "HSING TECH ENTERPRISE CO., LTD",
- [3]byte{0, 32, 229}: "APEX DATA, INC.",
- [3]byte{0, 32, 230}: "LIDKOPING MACHINE TOOLS AB",
- [3]byte{0, 32, 231}: "B&W NUCLEAR SERVICE COMPANY",
- [3]byte{0, 32, 232}: "DATATREK CORPORATION",
- [3]byte{0, 32, 233}: "DANTEL",
- [3]byte{0, 32, 234}: "EFFICIENT NETWORKS, INC.",
- [3]byte{0, 32, 235}: "CINCINNATI MICROWAVE, INC.",
- [3]byte{0, 32, 236}: "TECHWARE SYSTEMS CORP.",
- [3]byte{0, 32, 237}: "GIGA-BYTE TECHNOLOGY CO., LTD.",
- [3]byte{0, 32, 238}: "GTECH CORPORATION",
- [3]byte{0, 32, 239}: "USC CORPORATION",
- [3]byte{0, 32, 240}: "UNIVERSAL MICROELECTRONICS CO.",
- [3]byte{0, 32, 241}: "ALTOS INDIA LIMITED",
- [3]byte{0, 32, 242}: "Oracle Corporation",
- [3]byte{0, 32, 243}: "RAYNET CORPORATION",
- [3]byte{0, 32, 244}: "SPECTRIX CORPORATION",
- [3]byte{0, 32, 245}: "PANDATEL AG",
- [3]byte{0, 32, 246}: "NET TEK AND KARLNET, INC.",
- [3]byte{0, 32, 247}: "CYBERDATA CORPORATION",
- [3]byte{0, 32, 248}: "CARRERA COMPUTERS, INC.",
- [3]byte{0, 32, 249}: "PARALINK NETWORKS, INC.",
- [3]byte{0, 32, 250}: "GDE SYSTEMS, INC.",
- [3]byte{0, 32, 251}: "OCTEL COMMUNICATIONS CORP.",
- [3]byte{0, 32, 252}: "MATROX",
- [3]byte{0, 32, 253}: "ITV TECHNOLOGIES, INC.",
- [3]byte{0, 32, 254}: "TOPWARE INC. / GRAND COMPUTER",
- [3]byte{0, 32, 255}: "SYMMETRICAL TECHNOLOGIES",
- [3]byte{0, 33, 0}: "Gemtek Technology Co., Ltd.",
- [3]byte{0, 33, 1}: "Aplicaciones Electronicas Quasar (AEQ)",
- [3]byte{0, 33, 2}: "UpdateLogic Inc.",
- [3]byte{0, 33, 3}: "GHI Electronics, LLC",
- [3]byte{0, 33, 4}: "Gigaset Communications GmbH",
- [3]byte{0, 33, 5}: "Alcatel-Lucent IPD",
- [3]byte{0, 33, 6}: "RIM Testing Services",
- [3]byte{0, 33, 7}: "Seowonintech Co Ltd.",
- [3]byte{0, 33, 8}: "Nokia Danmark A/S",
- [3]byte{0, 33, 9}: "Nokia Danmark A/S",
- [3]byte{0, 33, 10}: "byd:sign Corporation",
- [3]byte{0, 33, 11}: "GEMINI TRAZE RFID PVT. LTD.",
- [3]byte{0, 33, 12}: "Cymtec Systems, Inc.",
- [3]byte{0, 33, 13}: "SAMSIN INNOTEC",
- [3]byte{0, 33, 14}: "Orpak Systems L.T.D.",
- [3]byte{0, 33, 15}: "Cernium Corp",
- [3]byte{0, 33, 16}: "Clearbox Systems",
- [3]byte{0, 33, 17}: "Uniphone Inc.",
- [3]byte{0, 33, 18}: "WISCOM SYSTEM CO.,LTD",
- [3]byte{0, 33, 19}: "Padtec S/A",
- [3]byte{0, 33, 20}: "Hylab Technology Inc.",
- [3]byte{0, 33, 21}: "PHYWE Systeme GmbH & Co. KG",
- [3]byte{0, 33, 22}: "Transcon Electronic Systems, spol. s r. o.",
- [3]byte{0, 33, 23}: "Tellord",
- [3]byte{0, 33, 24}: "Athena Tech, Inc.",
- [3]byte{0, 33, 25}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{0, 33, 26}: "LInTech Corporation",
- [3]byte{0, 33, 27}: "Cisco Systems, Inc",
- [3]byte{0, 33, 28}: "Cisco Systems, Inc",
- [3]byte{0, 33, 29}: "Dataline AB",
- [3]byte{0, 33, 30}: "ARRIS Group, Inc.",
- [3]byte{0, 33, 31}: "SHINSUNG DELTATECH CO.,LTD.",
- [3]byte{0, 33, 32}: "Sequel Technologies",
- [3]byte{0, 33, 33}: "VRmagic GmbH",
- [3]byte{0, 33, 34}: "Chip-pro Ltd.",
- [3]byte{0, 33, 35}: "Aerosat Avionics",
- [3]byte{0, 33, 36}: "Optos Plc",
- [3]byte{0, 33, 37}: "KUK JE TONG SHIN Co.,LTD",
- [3]byte{0, 33, 38}: "Shenzhen Torch Equipment Co., Ltd.",
- [3]byte{0, 33, 39}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{0, 33, 40}: "Oracle Corporation",
- [3]byte{0, 33, 41}: "Cisco-Linksys, LLC",
- [3]byte{0, 33, 42}: "Audiovox Corporation",
- [3]byte{0, 33, 43}: "MSA Auer",
- [3]byte{0, 33, 44}: "SemIndia System Private Limited",
- [3]byte{0, 33, 45}: "SCIMOLEX CORPORATION",
- [3]byte{0, 33, 46}: "dresden-elektronik",
- [3]byte{0, 33, 47}: "Phoebe Micro Inc.",
- [3]byte{0, 33, 48}: "Keico Hightech Inc.",
- [3]byte{0, 33, 49}: "Blynke Inc.",
- [3]byte{0, 33, 50}: "Masterclock, Inc.",
- [3]byte{0, 33, 51}: "Building B, Inc",
- [3]byte{0, 33, 52}: "Brandywine Communications",
- [3]byte{0, 33, 53}: "ALCATEL-LUCENT",
- [3]byte{0, 33, 54}: "ARRIS Group, Inc.",
- [3]byte{0, 33, 55}: "Bay Controls, LLC",
- [3]byte{0, 33, 56}: "Cepheid",
- [3]byte{0, 33, 57}: "Escherlogic Inc.",
- [3]byte{0, 33, 58}: "Winchester Systems Inc.",
- [3]byte{0, 33, 59}: "Berkshire Products, Inc",
- [3]byte{0, 33, 60}: "AliphCom",
- [3]byte{0, 33, 61}: "Cermetek Microelectronics, Inc.",
- [3]byte{0, 33, 62}: "TomTom",
- [3]byte{0, 33, 63}: "A-Team Technology Ltd.",
- [3]byte{0, 33, 64}: "EN Technologies Inc.",
- [3]byte{0, 33, 65}: "RADLIVE",
- [3]byte{0, 33, 66}: "Advanced Control Systems doo",
- [3]byte{0, 33, 67}: "ARRIS Group, Inc.",
- [3]byte{0, 33, 68}: "SS Telecoms",
- [3]byte{0, 33, 69}: "Semptian Technologies Ltd.",
- [3]byte{0, 33, 70}: "Sanmina-SCI",
- [3]byte{0, 33, 71}: "Nintendo Co., Ltd.",
- [3]byte{0, 33, 72}: "Kaco Solar Korea",
- [3]byte{0, 33, 73}: "China Daheng Group ,Inc.",
- [3]byte{0, 33, 74}: "Pixel Velocity, Inc",
- [3]byte{0, 33, 75}: "Shenzhen HAMP Science & Technology Co.,Ltd",
- [3]byte{0, 33, 76}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 33, 77}: "Guangzhou Skytone Transmission Technology Com. Ltd.",
- [3]byte{0, 33, 78}: "GS Yuasa Power Supply Ltd.",
- [3]byte{0, 33, 79}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 33, 80}: "EYEVIEW ELECTRONICS",
- [3]byte{0, 33, 81}: "Millinet Co., Ltd.",
- [3]byte{0, 33, 82}: "General Satellite Research & Development Limited",
- [3]byte{0, 33, 83}: "SeaMicro Inc.",
- [3]byte{0, 33, 84}: "D-TACQ Solutions Ltd",
- [3]byte{0, 33, 85}: "Cisco Systems, Inc",
- [3]byte{0, 33, 86}: "Cisco Systems, Inc",
- [3]byte{0, 33, 87}: "National Datacast, Inc.",
- [3]byte{0, 33, 88}: "Style Flying Technology Co.",
- [3]byte{0, 33, 89}: "Juniper Networks",
- [3]byte{0, 33, 90}: "Hewlett Packard",
- [3]byte{0, 33, 91}: "SenseAnywhere",
- [3]byte{0, 33, 92}: "Intel Corporate",
- [3]byte{0, 33, 93}: "Intel Corporate",
- [3]byte{0, 33, 94}: "IBM Corp",
- [3]byte{0, 33, 95}: "IHSE GmbH",
- [3]byte{0, 33, 96}: "Hidea Solutions Co. Ltd.",
- [3]byte{0, 33, 97}: "Yournet Inc.",
- [3]byte{0, 33, 98}: "Nortel Networks",
- [3]byte{0, 33, 99}: "ASKEY COMPUTER CORP",
- [3]byte{0, 33, 100}: "Special Design Bureau for Seismic Instrumentation",
- [3]byte{0, 33, 101}: "Presstek Inc.",
- [3]byte{0, 33, 102}: "NovAtel Inc.",
- [3]byte{0, 33, 103}: "HWA JIN T&I Corp.",
- [3]byte{0, 33, 104}: "iVeia, LLC",
- [3]byte{0, 33, 105}: "Prologix, LLC.",
- [3]byte{0, 33, 106}: "Intel Corporate",
- [3]byte{0, 33, 107}: "Intel Corporate",
- [3]byte{0, 33, 108}: "ODVA",
- [3]byte{0, 33, 109}: "Soltech Co., Ltd.",
- [3]byte{0, 33, 110}: "Function ATI (Huizhou) Telecommunications Co., Ltd.",
- [3]byte{0, 33, 111}: "SymCom, Inc.",
- [3]byte{0, 33, 112}: "Dell Inc.",
- [3]byte{0, 33, 113}: "Wesung TNC Co., Ltd.",
- [3]byte{0, 33, 114}: "Seoultek Valley",
- [3]byte{0, 33, 115}: "Ion Torrent Systems, Inc.",
- [3]byte{0, 33, 116}: "AvaLAN Wireless",
- [3]byte{0, 33, 117}: "Pacific Satellite International Ltd.",
- [3]byte{0, 33, 118}: "YMax Telecom Ltd.",
- [3]byte{0, 33, 119}: "W. L. Gore & Associates",
- [3]byte{0, 33, 120}: "Matuschek Messtechnik GmbH",
- [3]byte{0, 33, 121}: "IOGEAR, Inc.",
- [3]byte{0, 33, 122}: "Sejin Electron, Inc.",
- [3]byte{0, 33, 123}: "Bastec AB",
- [3]byte{0, 33, 124}: "2Wire Inc",
- [3]byte{0, 33, 125}: "PYXIS S.R.L.",
- [3]byte{0, 33, 126}: "Telit Communication s.p.a",
- [3]byte{0, 33, 127}: "Intraco Technology Pte Ltd",
- [3]byte{0, 33, 128}: "ARRIS Group, Inc.",
- [3]byte{0, 33, 129}: "Si2 Microsystems Limited",
- [3]byte{0, 33, 130}: "SandLinks Systems, Ltd.",
- [3]byte{0, 33, 131}: "ANDRITZ HYDRO GmbH",
- [3]byte{0, 33, 132}: "POWERSOFT SRL",
- [3]byte{0, 33, 133}: "MICRO-STAR INT'L CO.,LTD.",
- [3]byte{0, 33, 134}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{0, 33, 135}: "Imacs GmbH",
- [3]byte{0, 33, 136}: "EMC Corporation",
- [3]byte{0, 33, 137}: "AppTech, Inc.",
- [3]byte{0, 33, 138}: "Electronic Design and Manufacturing Company",
- [3]byte{0, 33, 139}: "Wescon Technology, Inc.",
- [3]byte{0, 33, 140}: "TopControl GMBH",
- [3]byte{0, 33, 141}: "AP Router Ind. Eletronica LTDA",
- [3]byte{0, 33, 142}: "MEKICS CO., LTD.",
- [3]byte{0, 33, 143}: "Avantgarde Acoustic Lautsprechersysteme GmbH",
- [3]byte{0, 33, 144}: "Goliath Solutions",
- [3]byte{0, 33, 145}: "D-Link Corporation",
- [3]byte{0, 33, 146}: "Baoding Galaxy Electronic Technology Co.,Ltd",
- [3]byte{0, 33, 147}: "Videofon MV",
- [3]byte{0, 33, 148}: "Ping Communication",
- [3]byte{0, 33, 149}: "GWD Media Limited",
- [3]byte{0, 33, 150}: "Telsey S.p.A.",
- [3]byte{0, 33, 151}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 33, 152}: "Thai Radio Co, LTD",
- [3]byte{0, 33, 153}: "Vacon Plc",
- [3]byte{0, 33, 154}: "Cambridge Visual Networks Ltd",
- [3]byte{0, 33, 155}: "Dell Inc.",
- [3]byte{0, 33, 156}: "Honeywld Technology Corp.",
- [3]byte{0, 33, 157}: "Adesys BV",
- [3]byte{0, 33, 158}: "Sony Mobile Communications AB",
- [3]byte{0, 33, 159}: "SATEL OY",
- [3]byte{0, 33, 160}: "Cisco Systems, Inc",
- [3]byte{0, 33, 161}: "Cisco Systems, Inc",
- [3]byte{0, 33, 162}: "EKE-Electronics Ltd.",
- [3]byte{0, 33, 163}: "Micromint",
- [3]byte{0, 33, 164}: "Dbii Networks",
- [3]byte{0, 33, 165}: "ERLPhase Power Technologies Ltd.",
- [3]byte{0, 33, 166}: "Videotec Spa",
- [3]byte{0, 33, 167}: "Hantle System Co., Ltd.",
- [3]byte{0, 33, 168}: "Telephonics Corporation",
- [3]byte{0, 33, 169}: "Mobilink Telecom Co.,Ltd",
- [3]byte{0, 33, 170}: "Nokia Danmark A/S",
- [3]byte{0, 33, 171}: "Nokia Danmark A/S",
- [3]byte{0, 33, 172}: "Infrared Integrated Systems Ltd",
- [3]byte{0, 33, 173}: "Nordic ID Oy",
- [3]byte{0, 33, 174}: "ALCATEL-LUCENT FRANCE - WTD",
- [3]byte{0, 33, 175}: "Radio Frequency Systems",
- [3]byte{0, 33, 176}: "Tyco Telecommunications",
- [3]byte{0, 33, 177}: "DIGITAL SOLUTIONS LTD",
- [3]byte{0, 33, 178}: "Fiberblaze A/S",
- [3]byte{0, 33, 179}: "Ross Controls",
- [3]byte{0, 33, 180}: "APRO MEDIA CO., LTD",
- [3]byte{0, 33, 181}: "Galvanic Ltd",
- [3]byte{0, 33, 182}: "Triacta Power Technologies Inc.",
- [3]byte{0, 33, 183}: "Lexmark International Inc.",
- [3]byte{0, 33, 184}: "Inphi Corporation",
- [3]byte{0, 33, 185}: "Universal Devices Inc.",
- [3]byte{0, 33, 186}: "Texas Instruments",
- [3]byte{0, 33, 187}: "Riken Keiki Co., Ltd.",
- [3]byte{0, 33, 188}: "ZALA COMPUTER",
- [3]byte{0, 33, 189}: "Nintendo Co., Ltd.",
- [3]byte{0, 33, 190}: "Cisco SPVTG",
- [3]byte{0, 33, 191}: "Hitachi High-Tech Control Systems Corporation",
- [3]byte{0, 33, 192}: "Mobile Appliance, Inc.",
- [3]byte{0, 33, 193}: "ABB Oy / Medium Voltage Products",
- [3]byte{0, 33, 194}: "GL Communications Inc",
- [3]byte{0, 33, 195}: "CORNELL Communications, Inc.",
- [3]byte{0, 33, 196}: "Consilium AB",
- [3]byte{0, 33, 197}: "3DSP Corp",
- [3]byte{0, 33, 198}: "CSJ Global, Inc.",
- [3]byte{0, 33, 199}: "Russound",
- [3]byte{0, 33, 200}: "LOHUIS Networks",
- [3]byte{0, 33, 201}: "Wavecom Asia Pacific Limited",
- [3]byte{0, 33, 202}: "ART System Co., Ltd.",
- [3]byte{0, 33, 203}: "SMS TECNOLOGIA ELETRONICA LTDA",
- [3]byte{0, 33, 204}: "Flextronics International",
- [3]byte{0, 33, 205}: "LiveTV",
- [3]byte{0, 33, 206}: "NTC-Metrotek",
- [3]byte{0, 33, 207}: "The Crypto Group",
- [3]byte{0, 33, 208}: "Global Display Solutions Spa",
- [3]byte{0, 33, 209}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 33, 210}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 33, 211}: "BOCOM SECURITY(ASIA PACIFIC) LIMITED",
- [3]byte{0, 33, 212}: "Vollmer Werke GmbH",
- [3]byte{0, 33, 213}: "X2E GmbH",
- [3]byte{0, 33, 214}: "LXI Consortium",
- [3]byte{0, 33, 215}: "Cisco Systems, Inc",
- [3]byte{0, 33, 216}: "Cisco Systems, Inc",
- [3]byte{0, 33, 217}: "SEKONIC CORPORATION",
- [3]byte{0, 33, 218}: "Automation Products Group Inc.",
- [3]byte{0, 33, 219}: "Santachi Video Technology (Shenzhen) Co., Ltd.",
- [3]byte{0, 33, 220}: "TECNOALARM S.r.l.",
- [3]byte{0, 33, 221}: "Northstar Systems Corp",
- [3]byte{0, 33, 222}: "Firepro Wireless",
- [3]byte{0, 33, 223}: "Martin Christ GmbH",
- [3]byte{0, 33, 224}: "CommAgility Ltd",
- [3]byte{0, 33, 225}: "Nortel Networks",
- [3]byte{0, 33, 226}: "visago Systems & Controls GmbH & Co. KG",
- [3]byte{0, 33, 227}: "SerialTek LLC",
- [3]byte{0, 33, 228}: "I-WIN",
- [3]byte{0, 33, 229}: "Display Solution AG",
- [3]byte{0, 33, 230}: "Starlight Video Limited",
- [3]byte{0, 33, 231}: "Informatics Services Corporation",
- [3]byte{0, 33, 232}: "Murata Manufacturing Co., Ltd.",
- [3]byte{0, 33, 233}: "Apple, Inc.",
- [3]byte{0, 33, 234}: "Bystronic Laser AG",
- [3]byte{0, 33, 235}: "ESP SYSTEMS, LLC",
- [3]byte{0, 33, 236}: "Solutronic GmbH",
- [3]byte{0, 33, 237}: "Telegesis",
- [3]byte{0, 33, 238}: "Full Spectrum Inc.",
- [3]byte{0, 33, 239}: "Kapsys",
- [3]byte{0, 33, 240}: "EW3 Technologies LLC",
- [3]byte{0, 33, 241}: "Tutus Data AB",
- [3]byte{0, 33, 242}: "EASY3CALL Technology Limited",
- [3]byte{0, 33, 243}: "Si14 SpA",
- [3]byte{0, 33, 244}: "INRange Systems, Inc",
- [3]byte{0, 33, 245}: "Western Engravers Supply, Inc.",
- [3]byte{0, 33, 246}: "Oracle Corporation",
- [3]byte{0, 33, 247}: "HPN Supply Chain",
- [3]byte{0, 33, 248}: "Enseo, Inc.",
- [3]byte{0, 33, 249}: "WIRECOM Technologies",
- [3]byte{0, 33, 250}: "A4SP Technologies Ltd.",
- [3]byte{0, 33, 251}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 33, 252}: "Nokia Danmark A/S",
- [3]byte{0, 33, 253}: "LACROIX TRAFFIC S.A.U",
- [3]byte{0, 33, 254}: "Nokia Danmark A/S",
- [3]byte{0, 33, 255}: "Cyfrowy Polsat SA",
- [3]byte{0, 34, 0}: "IBM Corp",
- [3]byte{0, 34, 1}: "Aksys Networks Inc",
- [3]byte{0, 34, 2}: "Excito Elektronik i Skåne AB",
- [3]byte{0, 34, 3}: "Glensound Electronics Ltd",
- [3]byte{0, 34, 4}: "KORATEK",
- [3]byte{0, 34, 5}: "WeLink Solutions, Inc.",
- [3]byte{0, 34, 6}: "Cyberdyne Inc.",
- [3]byte{0, 34, 7}: "Inteno Broadband Technology AB",
- [3]byte{0, 34, 8}: "Certicom Corp",
- [3]byte{0, 34, 9}: "Omron Healthcare Co., Ltd",
- [3]byte{0, 34, 10}: "OnLive, Inc",
- [3]byte{0, 34, 11}: "National Source Coding Center",
- [3]byte{0, 34, 12}: "Cisco Systems, Inc",
- [3]byte{0, 34, 13}: "Cisco Systems, Inc",
- [3]byte{0, 34, 14}: "Indigo Security Co., Ltd.",
- [3]byte{0, 34, 15}: "MoCA (Multimedia over Coax Alliance)",
- [3]byte{0, 34, 16}: "ARRIS Group, Inc.",
- [3]byte{0, 34, 17}: "Rohati Systems",
- [3]byte{0, 34, 18}: "CAI Networks, Inc.",
- [3]byte{0, 34, 19}: "PCI CORPORATION",
- [3]byte{0, 34, 20}: "RINNAI KOREA",
- [3]byte{0, 34, 21}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 34, 22}: "SHIBAURA VENDING MACHINE CORPORATION",
- [3]byte{0, 34, 23}: "Neat Electronics",
- [3]byte{0, 34, 24}: "Verivue Inc.",
- [3]byte{0, 34, 25}: "Dell Inc.",
- [3]byte{0, 34, 26}: "Audio Precision",
- [3]byte{0, 34, 27}: "Morega Systems",
- [3]byte{0, 34, 28}: "Private",
- [3]byte{0, 34, 29}: "Freegene Technology LTD",
- [3]byte{0, 34, 30}: "Media Devices Co., Ltd.",
- [3]byte{0, 34, 31}: "eSang Technologies Co., Ltd.",
- [3]byte{0, 34, 32}: "Mitac Technology Corp",
- [3]byte{0, 34, 33}: "ITOH DENKI CO,LTD.",
- [3]byte{0, 34, 34}: "Schaffner Deutschland GmbH",
- [3]byte{0, 34, 35}: "TimeKeeping Systems, Inc.",
- [3]byte{0, 34, 36}: "Good Will Instrument Co., Ltd.",
- [3]byte{0, 34, 37}: "Thales Avionics Ltd",
- [3]byte{0, 34, 38}: "Avaak, Inc.",
- [3]byte{0, 34, 39}: "uv-electronic GmbH",
- [3]byte{0, 34, 40}: "Breeze Innovations Ltd.",
- [3]byte{0, 34, 41}: "Compumedics Ltd",
- [3]byte{0, 34, 42}: "SoundEar A/S",
- [3]byte{0, 34, 43}: "Nucomm, Inc.",
- [3]byte{0, 34, 44}: "Ceton Corp",
- [3]byte{0, 34, 45}: "SMC Networks Inc.",
- [3]byte{0, 34, 46}: "maintech GmbH",
- [3]byte{0, 34, 47}: "Open Grid Computing, Inc.",
- [3]byte{0, 34, 48}: "FutureLogic Inc.",
- [3]byte{0, 34, 49}: "SMT&C Co., Ltd.",
- [3]byte{0, 34, 50}: "Design Design Technology Ltd",
- [3]byte{0, 34, 51}: "ADB Broadband Italia",
- [3]byte{0, 34, 52}: "Corventis Inc.",
- [3]byte{0, 34, 53}: "Strukton Systems bv",
- [3]byte{0, 34, 54}: "VECTOR SP. Z O.O.",
- [3]byte{0, 34, 55}: "Shinhint Group",
- [3]byte{0, 34, 56}: "LOGIPLUS",
- [3]byte{0, 34, 57}: "Indiana Life Sciences Incorporated",
- [3]byte{0, 34, 58}: "Cisco SPVTG",
- [3]byte{0, 34, 59}: "Communication Networks, LLC",
- [3]byte{0, 34, 60}: "RATIO Entwicklungen GmbH",
- [3]byte{0, 34, 61}: "JumpGen Systems, LLC",
- [3]byte{0, 34, 62}: "IRTrans GmbH",
- [3]byte{0, 34, 63}: "NETGEAR",
- [3]byte{0, 34, 64}: "Universal Telecom S/A",
- [3]byte{0, 34, 65}: "Apple, Inc.",
- [3]byte{0, 34, 66}: "Alacron Inc.",
- [3]byte{0, 34, 67}: "AzureWave Technology Inc.",
- [3]byte{0, 34, 68}: "Chengdu Linkon Communications Device Co., Ltd",
- [3]byte{0, 34, 69}: "Leine & Linde AB",
- [3]byte{0, 34, 70}: "Evoc Intelligent Technology Co.,Ltd.",
- [3]byte{0, 34, 71}: "DAC ENGINEERING CO., LTD.",
- [3]byte{0, 34, 72}: "Microsoft Corporation",
- [3]byte{0, 34, 73}: "HOME MULTIENERGY SL",
- [3]byte{0, 34, 74}: "RAYLASE AG",
- [3]byte{0, 34, 75}: "AIRTECH TECHNOLOGIES, INC.",
- [3]byte{0, 34, 76}: "Nintendo Co., Ltd.",
- [3]byte{0, 34, 77}: "MITAC INTERNATIONAL CORP.",
- [3]byte{0, 34, 78}: "SEEnergy Corp.",
- [3]byte{0, 34, 79}: "Byzoro Networks Ltd.",
- [3]byte{0, 34, 80}: "Point Six Wireless, LLC",
- [3]byte{0, 34, 81}: "Lumasense Technologies",
- [3]byte{0, 34, 82}: "ZOLL Lifecor Corporation",
- [3]byte{0, 34, 83}: "Entorian Technologies",
- [3]byte{0, 34, 84}: "Bigelow Aerospace",
- [3]byte{0, 34, 85}: "Cisco Systems, Inc",
- [3]byte{0, 34, 86}: "Cisco Systems, Inc",
- [3]byte{0, 34, 87}: "3COM EUROPE LTD",
- [3]byte{0, 34, 88}: "Taiyo Yuden Co., Ltd.",
- [3]byte{0, 34, 89}: "Guangzhou New Postcom Equipment Co.,Ltd.",
- [3]byte{0, 34, 90}: "Garde Security AB",
- [3]byte{0, 34, 91}: "Teradici Corporation",
- [3]byte{0, 34, 92}: "Multimedia & Communication Technology",
- [3]byte{0, 34, 93}: "Digicable Network India Pvt. Ltd.",
- [3]byte{0, 34, 94}: "Uwin Technologies Co.,LTD",
- [3]byte{0, 34, 95}: "Liteon Technology Corporation",
- [3]byte{0, 34, 96}: "AFREEY Inc.",
- [3]byte{0, 34, 97}: "Frontier Silicon Ltd",
- [3]byte{0, 34, 98}: "BEP Marine",
- [3]byte{0, 34, 99}: "Koos Technical Services, Inc.",
- [3]byte{0, 34, 100}: "Hewlett Packard",
- [3]byte{0, 34, 101}: "Nokia Danmark A/S",
- [3]byte{0, 34, 102}: "Nokia Danmark A/S",
- [3]byte{0, 34, 103}: "Nortel Networks",
- [3]byte{0, 34, 104}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 34, 105}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 34, 106}: "Honeywell",
- [3]byte{0, 34, 107}: "Cisco-Linksys, LLC",
- [3]byte{0, 34, 108}: "LinkSprite Technologies, Inc.",
- [3]byte{0, 34, 109}: "Shenzhen GIEC Electronics Co., Ltd.",
- [3]byte{0, 34, 110}: "Gowell Electronic Limited",
- [3]byte{0, 34, 111}: "3onedata Technology Co. Ltd.",
- [3]byte{0, 34, 112}: "ABK North America, LLC",
- [3]byte{0, 34, 113}: "Jäger Computergesteuerte Meßtechnik GmbH.",
- [3]byte{0, 34, 114}: "American Micro-Fuel Device Corp.",
- [3]byte{0, 34, 115}: "Techway",
- [3]byte{0, 34, 116}: "FamilyPhone AB",
- [3]byte{0, 34, 117}: "Belkin International Inc.",
- [3]byte{0, 34, 118}: "Triple EYE B.V.",
- [3]byte{0, 34, 119}: "NEC Australia Pty Ltd",
- [3]byte{0, 34, 120}: "Shenzhen Tongfang Multimedia Technology Co.,Ltd.",
- [3]byte{0, 34, 121}: "Nippon Conlux Co., Ltd.",
- [3]byte{0, 34, 122}: "Telecom Design",
- [3]byte{0, 34, 123}: "Apogee Labs, Inc.",
- [3]byte{0, 34, 124}: "Woori SMT Co.,ltd",
- [3]byte{0, 34, 125}: "YE DATA INC.",
- [3]byte{0, 34, 126}: "Chengdu 30Kaitian Communication Industry Co.Ltd",
- [3]byte{0, 34, 127}: "Ruckus Wireless",
- [3]byte{0, 34, 128}: "A2B Electronics AB",
- [3]byte{0, 34, 129}: "Daintree Networks Pty",
- [3]byte{0, 34, 130}: "8086 Consultancy",
- [3]byte{0, 34, 131}: "Juniper Networks",
- [3]byte{0, 34, 132}: "DESAY A&V SCIENCE AND TECHNOLOGY CO.,LTD",
- [3]byte{0, 34, 133}: "NOMUS COMM SYSTEMS",
- [3]byte{0, 34, 134}: "ASTRON",
- [3]byte{0, 34, 135}: "Titan Wireless LLC",
- [3]byte{0, 34, 136}: "Sagrad, Inc.",
- [3]byte{0, 34, 137}: "Optosecurity Inc.",
- [3]byte{0, 34, 138}: "Teratronik elektronische systeme gmbh",
- [3]byte{0, 34, 139}: "Kensington Computer Products Group",
- [3]byte{0, 34, 140}: "Photon Europe GmbH",
- [3]byte{0, 34, 141}: "GBS Laboratories LLC",
- [3]byte{0, 34, 142}: "TV-NUMERIC",
- [3]byte{0, 34, 143}: "CNRS",
- [3]byte{0, 34, 144}: "Cisco Systems, Inc",
- [3]byte{0, 34, 145}: "Cisco Systems, Inc",
- [3]byte{0, 34, 146}: "Cinetal",
- [3]byte{0, 34, 147}: "zte corporation",
- [3]byte{0, 34, 148}: "KYOCERA CORPORATION",
- [3]byte{0, 34, 149}: "SGM Technology for lighting spa",
- [3]byte{0, 34, 150}: "LinoWave Corporation",
- [3]byte{0, 34, 151}: "XMOS Semiconductor",
- [3]byte{0, 34, 152}: "Sony Mobile Communications AB",
- [3]byte{0, 34, 153}: "SeaMicro Inc.",
- [3]byte{0, 34, 154}: "Lastar, Inc.",
- [3]byte{0, 34, 155}: "AverLogic Technologies, Inc.",
- [3]byte{0, 34, 156}: "Verismo Networks Inc",
- [3]byte{0, 34, 157}: "PYUNG-HWA IND.CO.,LTD",
- [3]byte{0, 34, 158}: "Social Aid Research Co., Ltd.",
- [3]byte{0, 34, 159}: "Sensys Traffic AB",
- [3]byte{0, 34, 160}: "Delphi Corporation",
- [3]byte{0, 34, 161}: "Huawei Symantec Technologies Co.,Ltd.",
- [3]byte{0, 34, 162}: "Xtramus Technologies",
- [3]byte{0, 34, 163}: "California Eastern Laboratories",
- [3]byte{0, 34, 164}: "2Wire Inc",
- [3]byte{0, 34, 165}: "Texas Instruments",
- [3]byte{0, 34, 166}: "Sony Computer Entertainment America",
- [3]byte{0, 34, 167}: "Tyco Electronics AMP GmbH",
- [3]byte{0, 34, 168}: "Ouman Oy",
- [3]byte{0, 34, 169}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 34, 170}: "Nintendo Co., Ltd.",
- [3]byte{0, 34, 171}: "Shenzhen Turbosight Technology Ltd",
- [3]byte{0, 34, 172}: "Hangzhou Siyuan Tech. Co., Ltd",
- [3]byte{0, 34, 173}: "TELESIS TECHNOLOGIES, INC.",
- [3]byte{0, 34, 174}: "Mattel Inc.",
- [3]byte{0, 34, 175}: "Safety Vision",
- [3]byte{0, 34, 176}: "D-Link Corporation",
- [3]byte{0, 34, 177}: "Elbit Systems Ltd.",
- [3]byte{0, 34, 178}: "4RF Communications Ltd",
- [3]byte{0, 34, 179}: "Sei S.p.A.",
- [3]byte{0, 34, 180}: "ARRIS Group, Inc.",
- [3]byte{0, 34, 181}: "NOVITA",
- [3]byte{0, 34, 182}: "Superflow Technologies Group",
- [3]byte{0, 34, 183}: "GSS Grundig SAT-Systems GmbH",
- [3]byte{0, 34, 184}: "Norcott",
- [3]byte{0, 34, 185}: "Analogix Seminconductor, Inc",
- [3]byte{0, 34, 186}: "HUTH Elektronik Systeme GmbH",
- [3]byte{0, 34, 187}: "beyerdynamic GmbH & Co. KG",
- [3]byte{0, 34, 188}: "JDSU France SAS",
- [3]byte{0, 34, 189}: "Cisco Systems, Inc",
- [3]byte{0, 34, 190}: "Cisco Systems, Inc",
- [3]byte{0, 34, 191}: "SieAmp Group of Companies",
- [3]byte{0, 34, 192}: "Shenzhen Forcelink Electronic Co, Ltd",
- [3]byte{0, 34, 193}: "Active Storage Inc.",
- [3]byte{0, 34, 194}: "Proview Eletrônica do Brasil LTDA",
- [3]byte{0, 34, 195}: "Zeeport Technology Inc.",
- [3]byte{0, 34, 196}: "epro GmbH",
- [3]byte{0, 34, 197}: "INFORSON Co,Ltd.",
- [3]byte{0, 34, 198}: "Sutus Inc",
- [3]byte{0, 34, 199}: "SEGGER Microcontroller GmbH & Co. KG",
- [3]byte{0, 34, 200}: "Applied Instruments B.V.",
- [3]byte{0, 34, 201}: "Lenord, Bauer & Co GmbH",
- [3]byte{0, 34, 202}: "Anviz Biometric Tech. Co., Ltd.",
- [3]byte{0, 34, 203}: "IONODES Inc.",
- [3]byte{0, 34, 204}: "SciLog, Inc.",
- [3]byte{0, 34, 205}: "Ared Technology Co., Ltd.",
- [3]byte{0, 34, 206}: "Cisco SPVTG",
- [3]byte{0, 34, 207}: "PLANEX COMMUNICATIONS INC.",
- [3]byte{0, 34, 208}: "Polar Electro Oy",
- [3]byte{0, 34, 209}: "Albrecht Jung GmbH & Co. KG",
- [3]byte{0, 34, 210}: "All Earth Comércio de Eletrônicos LTDA.",
- [3]byte{0, 34, 211}: "Hub-Tech",
- [3]byte{0, 34, 212}: "ComWorth Co., Ltd.",
- [3]byte{0, 34, 213}: "Eaton Corp. Electrical Group Data Center Solutions - Pulizzi",
- [3]byte{0, 34, 214}: "Cypak AB",
- [3]byte{0, 34, 215}: "Nintendo Co., Ltd.",
- [3]byte{0, 34, 216}: "Shenzhen GST Security and Safety Technology Limited",
- [3]byte{0, 34, 217}: "Fortex Industrial Ltd.",
- [3]byte{0, 34, 218}: "ANATEK, LLC",
- [3]byte{0, 34, 219}: "Translogic Corporation",
- [3]byte{0, 34, 220}: "Vigil Health Solutions Inc.",
- [3]byte{0, 34, 221}: "Protecta Electronics Ltd",
- [3]byte{0, 34, 222}: "OPPO Digital, Inc.",
- [3]byte{0, 34, 223}: "TAMUZ Monitors",
- [3]byte{0, 34, 224}: "Atlantic Software Technologies S.r.L.",
- [3]byte{0, 34, 225}: "ZORT Labs, LLC.",
- [3]byte{0, 34, 226}: "WABTEC Transit Division",
- [3]byte{0, 34, 227}: "Amerigon",
- [3]byte{0, 34, 228}: "APASS TECHNOLOGY CO., LTD.",
- [3]byte{0, 34, 229}: "Fisher-Rosemount Systems Inc.",
- [3]byte{0, 34, 230}: "Intelligent Data",
- [3]byte{0, 34, 231}: "WPS Parking Systems",
- [3]byte{0, 34, 232}: "Applition Co., Ltd.",
- [3]byte{0, 34, 233}: "ProVision Communications",
- [3]byte{0, 34, 234}: "Rustelcom Inc.",
- [3]byte{0, 34, 235}: "Data Respons A/S",
- [3]byte{0, 34, 236}: "IDEALBT TECHNOLOGY CORPORATION",
- [3]byte{0, 34, 237}: "TSI Power Corporation",
- [3]byte{0, 34, 238}: "Algo Communication Products Ltd",
- [3]byte{0, 34, 239}: "iWDL Technologies",
- [3]byte{0, 34, 240}: "3 Greens Aviation Limited",
- [3]byte{0, 34, 241}: "Private",
- [3]byte{0, 34, 242}: "SunPower Corp",
- [3]byte{0, 34, 243}: "SHARP Corporation",
- [3]byte{0, 34, 244}: "AMPAK Technology, Inc.",
- [3]byte{0, 34, 245}: "Advanced Realtime Tracking GmbH",
- [3]byte{0, 34, 246}: "Syracuse Research Corporation",
- [3]byte{0, 34, 247}: "Conceptronic",
- [3]byte{0, 34, 248}: "PIMA Electronic Systems Ltd.",
- [3]byte{0, 34, 249}: "Pollin Electronic GmbH",
- [3]byte{0, 34, 250}: "Intel Corporate",
- [3]byte{0, 34, 251}: "Intel Corporate",
- [3]byte{0, 34, 252}: "Nokia Danmark A/S",
- [3]byte{0, 34, 253}: "Nokia Danmark A/S",
- [3]byte{0, 34, 254}: "Advanced Illumination",
- [3]byte{0, 34, 255}: "NIVIS LLC",
- [3]byte{0, 35, 0}: "Cayee Computer Ltd.",
- [3]byte{0, 35, 1}: "Witron Technology Limited",
- [3]byte{0, 35, 2}: "Cobalt Digital, Inc.",
- [3]byte{0, 35, 3}: "LITE-ON IT Corporation",
- [3]byte{0, 35, 4}: "Cisco Systems, Inc",
- [3]byte{0, 35, 5}: "Cisco Systems, Inc",
- [3]byte{0, 35, 6}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 35, 7}: "FUTURE INNOVATION TECH CO.,LTD",
- [3]byte{0, 35, 8}: "Arcadyan Technology Corporation",
- [3]byte{0, 35, 9}: "Janam Technologies LLC",
- [3]byte{0, 35, 10}: "ARBURG GmbH & Co KG",
- [3]byte{0, 35, 11}: "ARRIS Group, Inc.",
- [3]byte{0, 35, 12}: "CLOVER ELECTRONICS CO.,LTD.",
- [3]byte{0, 35, 13}: "Nortel Networks",
- [3]byte{0, 35, 14}: "Gorba AG",
- [3]byte{0, 35, 15}: "Hirsch Electronics Corporation",
- [3]byte{0, 35, 16}: "LNC Technology Co., Ltd.",
- [3]byte{0, 35, 17}: "Gloscom Co., Ltd.",
- [3]byte{0, 35, 18}: "Apple, Inc.",
- [3]byte{0, 35, 19}: "Qool Technologies Ltd.",
- [3]byte{0, 35, 20}: "Intel Corporate",
- [3]byte{0, 35, 21}: "Intel Corporate",
- [3]byte{0, 35, 22}: "KISAN ELECTRONICS CO",
- [3]byte{0, 35, 23}: "Lasercraft Inc",
- [3]byte{0, 35, 24}: "Toshiba",
- [3]byte{0, 35, 25}: "Sielox LLC",
- [3]byte{0, 35, 26}: "ITF Co., Ltd.",
- [3]byte{0, 35, 27}: "Danaher Motion - Kollmorgen",
- [3]byte{0, 35, 28}: "Fourier Systems Ltd.",
- [3]byte{0, 35, 29}: "Deltacom Electronics Ltd",
- [3]byte{0, 35, 30}: "Cezzer Multimedia Technologies",
- [3]byte{0, 35, 31}: "Guangda Electronic & Telecommunication Technology Development Co., Ltd.",
- [3]byte{0, 35, 32}: "Nicira Networks",
- [3]byte{0, 35, 33}: "Avitech International Corp",
- [3]byte{0, 35, 34}: "KISS Teknical Solutions, Inc.",
- [3]byte{0, 35, 35}: "Zylin AS",
- [3]byte{0, 35, 36}: "G-PRO COMPUTER",
- [3]byte{0, 35, 37}: "IOLAN Holding",
- [3]byte{0, 35, 38}: "FUJITSU LIMITED",
- [3]byte{0, 35, 39}: "Shouyo Electronics CO., LTD",
- [3]byte{0, 35, 40}: "ALCON TELECOMMUNICATIONS CO., LTD.",
- [3]byte{0, 35, 41}: "DDRdrive LLC",
- [3]byte{0, 35, 42}: "eonas IT-Beratung und -Entwicklung GmbH",
- [3]byte{0, 35, 43}: "IRD A/S",
- [3]byte{0, 35, 44}: "Senticare",
- [3]byte{0, 35, 45}: "SandForce",
- [3]byte{0, 35, 46}: "Kedah Electronics Engineering, LLC",
- [3]byte{0, 35, 47}: "Advanced Card Systems Ltd.",
- [3]byte{0, 35, 48}: "DIZIPIA, INC.",
- [3]byte{0, 35, 49}: "Nintendo Co., Ltd.",
- [3]byte{0, 35, 50}: "Apple, Inc.",
- [3]byte{0, 35, 51}: "Cisco Systems, Inc",
- [3]byte{0, 35, 52}: "Cisco Systems, Inc",
- [3]byte{0, 35, 53}: "Linkflex Co.,Ltd",
- [3]byte{0, 35, 54}: "METEL s.r.o.",
- [3]byte{0, 35, 55}: "Global Star Solutions ULC",
- [3]byte{0, 35, 56}: "OJ-Electronics A/S",
- [3]byte{0, 35, 57}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 35, 58}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 35, 59}: "C-Matic Systems Ltd",
- [3]byte{0, 35, 60}: "Alflex",
- [3]byte{0, 35, 61}: "Novero holding B.V.",
- [3]byte{0, 35, 62}: "Alcatel-Lucent IPD",
- [3]byte{0, 35, 63}: "Purechoice Inc",
- [3]byte{0, 35, 64}: "MiXTelematics",
- [3]byte{0, 35, 65}: "Vanderbilt International (SWE) AB",
- [3]byte{0, 35, 66}: "Coffee Equipment Company",
- [3]byte{0, 35, 67}: "TEM AG",
- [3]byte{0, 35, 68}: "Objective Interface Systems, Inc.",
- [3]byte{0, 35, 69}: "Sony Mobile Communications AB",
- [3]byte{0, 35, 70}: "Vestac",
- [3]byte{0, 35, 71}: "ProCurve Networking by HP",
- [3]byte{0, 35, 72}: "Sagemcom Broadband SAS",
- [3]byte{0, 35, 73}: "Helmholtz Centre Berlin for Material and Energy",
- [3]byte{0, 35, 74}: "Private",
- [3]byte{0, 35, 75}: "Inyuan Technology Inc.",
- [3]byte{0, 35, 76}: "KTC AB",
- [3]byte{0, 35, 77}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 35, 78}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 35, 79}: "Luminous Power Technologies Pvt. Ltd.",
- [3]byte{0, 35, 80}: "LynTec",
- [3]byte{0, 35, 81}: "2Wire Inc",
- [3]byte{0, 35, 82}: "DATASENSOR S.p.A.",
- [3]byte{0, 35, 83}: "F E T Elettronica snc",
- [3]byte{0, 35, 84}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 35, 85}: "Kinco Automation(Shanghai) Ltd.",
- [3]byte{0, 35, 86}: "Packet Forensics LLC",
- [3]byte{0, 35, 87}: "Pitronot Technologies and Engineering P.T.E. Ltd.",
- [3]byte{0, 35, 88}: "SYSTEL SA",
- [3]byte{0, 35, 89}: "Benchmark Electronics ( Thailand ) Public Company Limited",
- [3]byte{0, 35, 90}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{0, 35, 91}: "Gulfstream",
- [3]byte{0, 35, 92}: "Aprius, Inc.",
- [3]byte{0, 35, 93}: "Cisco Systems, Inc",
- [3]byte{0, 35, 94}: "Cisco Systems, Inc",
- [3]byte{0, 35, 95}: "Silicon Micro Sensors GmbH",
- [3]byte{0, 35, 96}: "Lookit Technology Co., Ltd",
- [3]byte{0, 35, 97}: "Unigen Corporation",
- [3]byte{0, 35, 98}: "Goldline Controls",
- [3]byte{0, 35, 99}: "Zhuhai Raysharp Technology Co.,Ltd",
- [3]byte{0, 35, 100}: "Power Instruments Pte Ltd",
- [3]byte{0, 35, 101}: "Insta Elektro GmbH",
- [3]byte{0, 35, 102}: "Beijing Siasun Electronic System Co.,Ltd.",
- [3]byte{0, 35, 103}: "UniControls a.s.",
- [3]byte{0, 35, 104}: "Zebra Technologies Inc",
- [3]byte{0, 35, 105}: "Cisco-Linksys, LLC",
- [3]byte{0, 35, 106}: "SmartRG Inc",
- [3]byte{0, 35, 107}: "Xembedded, Inc.",
- [3]byte{0, 35, 108}: "Apple, Inc.",
- [3]byte{0, 35, 109}: "ResMed Ltd",
- [3]byte{0, 35, 110}: "Burster GmbH & Co KG",
- [3]byte{0, 35, 111}: "DAQ System",
- [3]byte{0, 35, 112}: "Snell",
- [3]byte{0, 35, 113}: "SOAM Systel",
- [3]byte{0, 35, 114}: "MORE STAR INDUSTRIAL GROUP LIMITED",
- [3]byte{0, 35, 115}: "GridIron Systems, Inc.",
- [3]byte{0, 35, 116}: "ARRIS Group, Inc.",
- [3]byte{0, 35, 117}: "ARRIS Group, Inc.",
- [3]byte{0, 35, 118}: "HTC Corporation",
- [3]byte{0, 35, 119}: "Isotek Electronics Ltd",
- [3]byte{0, 35, 120}: "GN Netcom A/S",
- [3]byte{0, 35, 121}: "Union Business Machines Co. Ltd.",
- [3]byte{0, 35, 122}: "RIM",
- [3]byte{0, 35, 123}: "WHDI LLC",
- [3]byte{0, 35, 124}: "NEOTION",
- [3]byte{0, 35, 125}: "Hewlett Packard",
- [3]byte{0, 35, 126}: "ELSTER GMBH",
- [3]byte{0, 35, 127}: "PLANTRONICS, INC.",
- [3]byte{0, 35, 128}: "Nanoteq",
- [3]byte{0, 35, 129}: "Lengda Technology(Xiamen) Co.,Ltd.",
- [3]byte{0, 35, 130}: "Lih Rong electronic Enterprise Co., Ltd.",
- [3]byte{0, 35, 131}: "InMage Systems Inc",
- [3]byte{0, 35, 132}: "GGH Engineering s.r.l.",
- [3]byte{0, 35, 133}: "ANTIPODE",
- [3]byte{0, 35, 134}: "Tour & Andersson AB",
- [3]byte{0, 35, 135}: "ThinkFlood, Inc.",
- [3]byte{0, 35, 136}: "V.T. Telematica S.p.a.",
- [3]byte{0, 35, 137}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{0, 35, 138}: "Ciena Corporation",
- [3]byte{0, 35, 139}: "QUANTA COMPUTER INC.",
- [3]byte{0, 35, 140}: "Private",
- [3]byte{0, 35, 141}: "Techno Design Co., Ltd.",
- [3]byte{0, 35, 142}: "ADB Broadband Italia",
- [3]byte{0, 35, 143}: "NIDEC COPAL CORPORATION",
- [3]byte{0, 35, 144}: "Algolware Corporation",
- [3]byte{0, 35, 145}: "Maxian",
- [3]byte{0, 35, 146}: "Proteus Industries Inc.",
- [3]byte{0, 35, 147}: "AJINEXTEK",
- [3]byte{0, 35, 148}: "Samjeon",
- [3]byte{0, 35, 149}: "ARRIS Group, Inc.",
- [3]byte{0, 35, 150}: "ANDES TECHNOLOGY CORPORATION",
- [3]byte{0, 35, 151}: "Westell Technologies Inc.",
- [3]byte{0, 35, 152}: "Vutlan sro",
- [3]byte{0, 35, 153}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 35, 154}: "EasyData Hardware GmbH",
- [3]byte{0, 35, 155}: "Elster Solutions, LLC",
- [3]byte{0, 35, 156}: "Juniper Networks",
- [3]byte{0, 35, 157}: "Mapower Electronics Co., Ltd",
- [3]byte{0, 35, 158}: "Jiangsu Lemote Technology Corporation Limited",
- [3]byte{0, 35, 159}: "Institut für Prüftechnik",
- [3]byte{0, 35, 160}: "Hana CNS Co., LTD.",
- [3]byte{0, 35, 161}: "Trend Electronics Ltd",
- [3]byte{0, 35, 162}: "ARRIS Group, Inc.",
- [3]byte{0, 35, 163}: "ARRIS Group, Inc.",
- [3]byte{0, 35, 164}: "New Concepts Development Corp.",
- [3]byte{0, 35, 165}: "SageTV, LLC",
- [3]byte{0, 35, 166}: "E-Mon",
- [3]byte{0, 35, 167}: "Redpine Signals, Inc.",
- [3]byte{0, 35, 168}: "Marshall Electronics",
- [3]byte{0, 35, 169}: "Beijing Detianquan Electromechanical Equipment Co., Ltd",
- [3]byte{0, 35, 170}: "HFR, Inc.",
- [3]byte{0, 35, 171}: "Cisco Systems, Inc",
- [3]byte{0, 35, 172}: "Cisco Systems, Inc",
- [3]byte{0, 35, 173}: "Xmark Corporation",
- [3]byte{0, 35, 174}: "Dell Inc.",
- [3]byte{0, 35, 175}: "ARRIS Group, Inc.",
- [3]byte{0, 35, 176}: "COMXION Technology Inc.",
- [3]byte{0, 35, 177}: "Longcheer Technology (Singapore) Pte Ltd",
- [3]byte{0, 35, 178}: "Intelligent Mechatronic Systems Inc",
- [3]byte{0, 35, 179}: "Lyyn AB",
- [3]byte{0, 35, 180}: "Nokia Danmark A/S",
- [3]byte{0, 35, 181}: "ORTANA LTD",
- [3]byte{0, 35, 182}: "SECURITE COMMUNICATIONS / HONEYWELL",
- [3]byte{0, 35, 183}: "Q-Light Co., Ltd.",
- [3]byte{0, 35, 184}: "Sichuan Jiuzhou Electronic Technology Co.,Ltd",
- [3]byte{0, 35, 185}: "Airbus Defence and Space Deutschland GmbH",
- [3]byte{0, 35, 186}: "Chroma",
- [3]byte{0, 35, 187}: "Schmitt Industries",
- [3]byte{0, 35, 188}: "EQ-SYS GmbH",
- [3]byte{0, 35, 189}: "Digital Ally, Inc.",
- [3]byte{0, 35, 190}: "Cisco SPVTG",
- [3]byte{0, 35, 191}: "Mainpine, Inc.",
- [3]byte{0, 35, 192}: "Broadway Networks",
- [3]byte{0, 35, 193}: "Securitas Direct AB",
- [3]byte{0, 35, 194}: "SAMSUNG Electronics. Co. LTD",
- [3]byte{0, 35, 195}: "LogMeIn, Inc.",
- [3]byte{0, 35, 196}: "Lux Lumen",
- [3]byte{0, 35, 197}: "Radiation Safety and Control Services Inc",
- [3]byte{0, 35, 198}: "SMC Corporation",
- [3]byte{0, 35, 199}: "AVSystem",
- [3]byte{0, 35, 200}: "TEAM-R",
- [3]byte{0, 35, 201}: "Sichuan Tianyi Information Science & Technology Stock CO.,LTD",
- [3]byte{0, 35, 202}: "Behind The Set, LLC",
- [3]byte{0, 35, 203}: "Shenzhen Full-join Technology Co.,Ltd",
- [3]byte{0, 35, 204}: "Nintendo Co., Ltd.",
- [3]byte{0, 35, 205}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{0, 35, 206}: "KITA DENSHI CORPORATION",
- [3]byte{0, 35, 207}: "CUMMINS-ALLISON CORP.",
- [3]byte{0, 35, 208}: "Uniloc USA Inc.",
- [3]byte{0, 35, 209}: "TRG",
- [3]byte{0, 35, 210}: "Inhand Electronics, Inc.",
- [3]byte{0, 35, 211}: "AirLink WiFi Networking Corp.",
- [3]byte{0, 35, 212}: "Texas Instruments",
- [3]byte{0, 35, 213}: "WAREMA electronic GmbH",
- [3]byte{0, 35, 214}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 35, 215}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 35, 216}: "Ball-It Oy",
- [3]byte{0, 35, 217}: "Banner Engineering",
- [3]byte{0, 35, 218}: "Industrial Computer Source (Deutschland)GmbH",
- [3]byte{0, 35, 219}: "saxnet gmbh",
- [3]byte{0, 35, 220}: "Benein, Inc",
- [3]byte{0, 35, 221}: "ELGIN S.A.",
- [3]byte{0, 35, 222}: "Ansync Inc.",
- [3]byte{0, 35, 223}: "Apple, Inc.",
- [3]byte{0, 35, 224}: "INO Therapeutics LLC",
- [3]byte{0, 35, 225}: "Cavena Image Products AB",
- [3]byte{0, 35, 226}: "SEA Signalisation",
- [3]byte{0, 35, 227}: "Microtronic AG",
- [3]byte{0, 35, 228}: "IPnect co. ltd.",
- [3]byte{0, 35, 229}: "IPaXiom Networks",
- [3]byte{0, 35, 230}: "Pirkus, Inc.",
- [3]byte{0, 35, 231}: "Hinke A/S",
- [3]byte{0, 35, 232}: "Demco Corp.",
- [3]byte{0, 35, 233}: "F5 Networks, Inc.",
- [3]byte{0, 35, 234}: "Cisco Systems, Inc",
- [3]byte{0, 35, 235}: "Cisco Systems, Inc",
- [3]byte{0, 35, 236}: "Algorithmix GmbH",
- [3]byte{0, 35, 237}: "ARRIS Group, Inc.",
- [3]byte{0, 35, 238}: "ARRIS Group, Inc.",
- [3]byte{0, 35, 239}: "Zuend Systemtechnik AG",
- [3]byte{0, 35, 240}: "Shanghai Jinghan Weighing Apparatus Co. Ltd.",
- [3]byte{0, 35, 241}: "Sony Mobile Communications AB",
- [3]byte{0, 35, 242}: "TVLogic",
- [3]byte{0, 35, 243}: "Glocom, Inc.",
- [3]byte{0, 35, 244}: "Masternaut",
- [3]byte{0, 35, 245}: "WILO SE",
- [3]byte{0, 35, 246}: "Softwell Technology Co., Ltd.",
- [3]byte{0, 35, 247}: "Private",
- [3]byte{0, 35, 248}: "Zyxel Communications Corporation",
- [3]byte{0, 35, 249}: "Double-Take Software, INC.",
- [3]byte{0, 35, 250}: "RG Nets, Inc.",
- [3]byte{0, 35, 251}: "IP Datatel, LLC.",
- [3]byte{0, 35, 252}: "Ultra Stereo Labs, Inc",
- [3]byte{0, 35, 253}: "AFT Atlas Fahrzeugtechnik GmbH",
- [3]byte{0, 35, 254}: "Biodevices, SA",
- [3]byte{0, 35, 255}: "Beijing HTTC Technology Ltd.",
- [3]byte{0, 36, 0}: "Nortel Networks",
- [3]byte{0, 36, 1}: "D-Link Corporation",
- [3]byte{0, 36, 2}: "Op-Tection GmbH",
- [3]byte{0, 36, 3}: "Nokia Danmark A/S",
- [3]byte{0, 36, 4}: "Nokia Danmark A/S",
- [3]byte{0, 36, 5}: "Dilog Nordic AB",
- [3]byte{0, 36, 6}: "Pointmobile",
- [3]byte{0, 36, 7}: "TELEM SAS",
- [3]byte{0, 36, 8}: "Pacific Biosciences",
- [3]byte{0, 36, 9}: "The Toro Company",
- [3]byte{0, 36, 10}: "US Beverage Net",
- [3]byte{0, 36, 11}: "Virtual Computer Inc.",
- [3]byte{0, 36, 12}: "DELEC GmbH",
- [3]byte{0, 36, 13}: "OnePath Networks LTD.",
- [3]byte{0, 36, 14}: "Inventec Besta Co., Ltd.",
- [3]byte{0, 36, 15}: "Ishii Tool & Engineering Corporation",
- [3]byte{0, 36, 16}: "NUETEQ Technology,Inc.",
- [3]byte{0, 36, 17}: "PharmaSmart LLC",
- [3]byte{0, 36, 18}: "Benign Technologies Co, Ltd.",
- [3]byte{0, 36, 19}: "Cisco Systems, Inc",
- [3]byte{0, 36, 20}: "Cisco Systems, Inc",
- [3]byte{0, 36, 21}: "Magnetic Autocontrol GmbH",
- [3]byte{0, 36, 22}: "Any Use",
- [3]byte{0, 36, 23}: "Thomson Telecom Belgium",
- [3]byte{0, 36, 24}: "Nextwave Semiconductor",
- [3]byte{0, 36, 25}: "Private",
- [3]byte{0, 36, 26}: "Red Beetle Inc.",
- [3]byte{0, 36, 27}: "iWOW Communications Pte Ltd",
- [3]byte{0, 36, 28}: "FuGang Electronic (DG) Co.,Ltd",
- [3]byte{0, 36, 29}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{0, 36, 30}: "Nintendo Co., Ltd.",
- [3]byte{0, 36, 31}: "DCT-Delta GmbH",
- [3]byte{0, 36, 32}: "NetUP Inc.",
- [3]byte{0, 36, 33}: "MICRO-STAR INT'L CO., LTD.",
- [3]byte{0, 36, 34}: "Knapp Logistik Automation GmbH",
- [3]byte{0, 36, 35}: "AzureWave Technologies (Shanghai) Inc.",
- [3]byte{0, 36, 36}: "Ace Axis Limited",
- [3]byte{0, 36, 37}: "Shenzhenshi chuangzhicheng Technology Co.,Ltd",
- [3]byte{0, 36, 38}: "NOHMI BOSAI LTD.",
- [3]byte{0, 36, 39}: "SSI COMPUTER CORP",
- [3]byte{0, 36, 40}: "EnergyICT",
- [3]byte{0, 36, 41}: "MK MASTER INC.",
- [3]byte{0, 36, 42}: "Hittite Microwave Corporation",
- [3]byte{0, 36, 43}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 36, 44}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 36, 46}: "Datastrip Inc.",
- [3]byte{0, 36, 47}: "Micron",
- [3]byte{0, 36, 48}: "Ruby Tech Corp.",
- [3]byte{0, 36, 49}: "Uni-v co.,ltd",
- [3]byte{0, 36, 50}: "Neostar Technology Co.,LTD",
- [3]byte{0, 36, 51}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 36, 52}: "Lectrosonics, Inc.",
- [3]byte{0, 36, 53}: "WIDE CORPORATION",
- [3]byte{0, 36, 54}: "Apple, Inc.",
- [3]byte{0, 36, 55}: "Motorola - BSG",
- [3]byte{0, 36, 56}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 36, 57}: "Digital Barriers Advanced Technologies",
- [3]byte{0, 36, 58}: "Ludl Electronic Products",
- [3]byte{0, 36, 59}: "CSSI (S) Pte Ltd",
- [3]byte{0, 36, 60}: "S.A.A.A.",
- [3]byte{0, 36, 61}: "Emerson Appliance Motors and Controls",
- [3]byte{0, 36, 63}: "Storwize, Inc.",
- [3]byte{0, 36, 64}: "Halo Monitoring, Inc.",
- [3]byte{0, 36, 65}: "Wanzl Metallwarenfabrik GmbH",
- [3]byte{0, 36, 66}: "Axona Limited",
- [3]byte{0, 36, 67}: "Nortel Networks",
- [3]byte{0, 36, 68}: "Nintendo Co., Ltd.",
- [3]byte{0, 36, 69}: "Adtran Inc",
- [3]byte{0, 36, 70}: "MMB Research Inc.",
- [3]byte{0, 36, 71}: "Kaztek Systems",
- [3]byte{0, 36, 72}: "SpiderCloud Wireless, Inc",
- [3]byte{0, 36, 73}: "Shen Zhen Lite Star Electronics Technology Co., Ltd",
- [3]byte{0, 36, 74}: "Voyant International",
- [3]byte{0, 36, 75}: "PERCEPTRON INC",
- [3]byte{0, 36, 76}: "Solartron Metrology Ltd",
- [3]byte{0, 36, 77}: "Hokkaido Electronics Corporation",
- [3]byte{0, 36, 78}: "RadChips, Inc.",
- [3]byte{0, 36, 79}: "Asantron Technologies Ltd.",
- [3]byte{0, 36, 80}: "Cisco Systems, Inc",
- [3]byte{0, 36, 81}: "Cisco Systems, Inc",
- [3]byte{0, 36, 82}: "Silicon Software GmbH",
- [3]byte{0, 36, 83}: "Initra d.o.o.",
- [3]byte{0, 36, 84}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 36, 85}: "MuLogic BV",
- [3]byte{0, 36, 86}: "2Wire Inc",
- [3]byte{0, 36, 88}: "PA Bastion CC",
- [3]byte{0, 36, 89}: "ABB Automation products GmbH",
- [3]byte{0, 36, 90}: "Nanjing Panda Electronics Company Limited",
- [3]byte{0, 36, 91}: "RAIDON TECHNOLOGY, INC.",
- [3]byte{0, 36, 92}: "Design-Com Technologies Pty. Ltd.",
- [3]byte{0, 36, 93}: "Terberg besturingstechniek B.V.",
- [3]byte{0, 36, 94}: "Hivision Co.,ltd",
- [3]byte{0, 36, 95}: "Vine Telecom CO.,Ltd.",
- [3]byte{0, 36, 96}: "Giaval Science Development Co. Ltd.",
- [3]byte{0, 36, 97}: "Shin Wang Tech.",
- [3]byte{0, 36, 98}: "Rayzone Corporation",
- [3]byte{0, 36, 99}: "Phybridge Inc",
- [3]byte{0, 36, 100}: "Bridge Technologies Co AS",
- [3]byte{0, 36, 101}: "Elentec",
- [3]byte{0, 36, 102}: "Unitron nv",
- [3]byte{0, 36, 103}: "AOC International (Europe) GmbH",
- [3]byte{0, 36, 104}: "Sumavision Technologies Co.,Ltd",
- [3]byte{0, 36, 105}: "Smart Doorphones",
- [3]byte{0, 36, 106}: "Solid Year Co., Ltd.",
- [3]byte{0, 36, 107}: "Covia, Inc.",
- [3]byte{0, 36, 108}: "Aruba Networks",
- [3]byte{0, 36, 109}: "Weinzierl Engineering GmbH",
- [3]byte{0, 36, 110}: "Phihong USA Corp.",
- [3]byte{0, 36, 111}: "Onda Communication spa",
- [3]byte{0, 36, 112}: "AUROTECH ultrasound AS.",
- [3]byte{0, 36, 113}: "Fusion MultiSystems dba Fusion-io",
- [3]byte{0, 36, 114}: "ReDriven Power Inc.",
- [3]byte{0, 36, 115}: "3COM EUROPE LTD",
- [3]byte{0, 36, 116}: "Autronica Fire And Securirty",
- [3]byte{0, 36, 117}: "Compass System(Embedded Dept.)",
- [3]byte{0, 36, 118}: "TAP.tv",
- [3]byte{0, 36, 119}: "Tibbo Technology",
- [3]byte{0, 36, 120}: "Mag Tech Electronics Co Limited",
- [3]byte{0, 36, 121}: "Optec Displays, Inc.",
- [3]byte{0, 36, 122}: "FU YI CHENG Technology Co., Ltd.",
- [3]byte{0, 36, 123}: "Actiontec Electronics, Inc",
- [3]byte{0, 36, 124}: "Nokia Danmark A/S",
- [3]byte{0, 36, 125}: "Nokia Danmark A/S",
- [3]byte{0, 36, 126}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{0, 36, 127}: "Nortel Networks",
- [3]byte{0, 36, 128}: "Meteocontrol GmbH",
- [3]byte{0, 36, 129}: "Hewlett Packard",
- [3]byte{0, 36, 130}: "Ruckus Wireless",
- [3]byte{0, 36, 131}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 36, 132}: "Bang and Olufsen Medicom a/s",
- [3]byte{0, 36, 133}: "ConteXtream Ltd",
- [3]byte{0, 36, 134}: "DesignArt Networks",
- [3]byte{0, 36, 135}: "Blackboard Inc.",
- [3]byte{0, 36, 136}: "Centre For Development Of Telematics",
- [3]byte{0, 36, 137}: "Vodafone Omnitel N.V.",
- [3]byte{0, 36, 138}: "Kaga Electronics Co., Ltd.",
- [3]byte{0, 36, 139}: "HYBUS CO., LTD.",
- [3]byte{0, 36, 140}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 36, 141}: "Sony Interactive Entertainment Inc.",
- [3]byte{0, 36, 142}: "Infoware ZRt.",
- [3]byte{0, 36, 143}: "DO-MONIX",
- [3]byte{0, 36, 144}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 36, 145}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 36, 146}: "Motorola, Broadband Solutions Group",
- [3]byte{0, 36, 147}: "ARRIS Group, Inc.",
- [3]byte{0, 36, 148}: "Shenzhen Baoxin Tech CO., Ltd.",
- [3]byte{0, 36, 149}: "ARRIS Group, Inc.",
- [3]byte{0, 36, 150}: "Ginzinger electronic systems",
- [3]byte{0, 36, 151}: "Cisco Systems, Inc",
- [3]byte{0, 36, 152}: "Cisco Systems, Inc",
- [3]byte{0, 36, 153}: "Aquila Technologies",
- [3]byte{0, 36, 154}: "Beijing Zhongchuang Telecommunication Test Co., Ltd.",
- [3]byte{0, 36, 155}: "Action Star Enterprise Co., Ltd.",
- [3]byte{0, 36, 156}: "Bimeng Comunication System Co. Ltd",
- [3]byte{0, 36, 157}: "NES Technology Inc.",
- [3]byte{0, 36, 158}: "ADC-Elektronik GmbH",
- [3]byte{0, 36, 159}: "RIM Testing Services",
- [3]byte{0, 36, 160}: "ARRIS Group, Inc.",
- [3]byte{0, 36, 161}: "ARRIS Group, Inc.",
- [3]byte{0, 36, 162}: "Hong Kong Middleware Technology Limited",
- [3]byte{0, 36, 163}: "Sonim Technologies Inc",
- [3]byte{0, 36, 164}: "Siklu Communication",
- [3]byte{0, 36, 165}: "BUFFALO.INC",
- [3]byte{0, 36, 166}: "TELESTAR DIGITAL GmbH",
- [3]byte{0, 36, 167}: "Advanced Video Communications Inc.",
- [3]byte{0, 36, 168}: "ProCurve Networking by HP",
- [3]byte{0, 36, 169}: "Ag Leader Technology",
- [3]byte{0, 36, 170}: "Dycor Technologies Ltd.",
- [3]byte{0, 36, 171}: "A7 Engineering, Inc.",
- [3]byte{0, 36, 172}: "Hangzhou DPtech Technologies Co., Ltd.",
- [3]byte{0, 36, 173}: "Adolf Thies Gmbh & Co. KG",
- [3]byte{0, 36, 174}: "Morpho",
- [3]byte{0, 36, 175}: "Echostar Technologies Corp",
- [3]byte{0, 36, 176}: "ESAB AB",
- [3]byte{0, 36, 177}: "Coulomb Technologies",
- [3]byte{0, 36, 178}: "NETGEAR",
- [3]byte{0, 36, 179}: "Graf-Syteco GmbH & Co. KG",
- [3]byte{0, 36, 180}: "ESCATRONIC GmbH",
- [3]byte{0, 36, 181}: "Nortel Networks",
- [3]byte{0, 36, 182}: "Seagate Technology",
- [3]byte{0, 36, 183}: "GridPoint, Inc.",
- [3]byte{0, 36, 184}: "free alliance sdn bhd",
- [3]byte{0, 36, 185}: "Wuhan Higheasy Electronic Technology Development Co.Ltd",
- [3]byte{0, 36, 186}: "Texas Instruments",
- [3]byte{0, 36, 187}: "CENTRAL Corporation",
- [3]byte{0, 36, 188}: "HuRob Co.,Ltd",
- [3]byte{0, 36, 189}: "Hainzl Industriesysteme GmbH",
- [3]byte{0, 36, 190}: "Sony Corporation",
- [3]byte{0, 36, 191}: "CIAT",
- [3]byte{0, 36, 192}: "NTI COMODO INC",
- [3]byte{0, 36, 193}: "ARRIS Group, Inc.",
- [3]byte{0, 36, 194}: "Asumo Co.,Ltd.",
- [3]byte{0, 36, 195}: "Cisco Systems, Inc",
- [3]byte{0, 36, 196}: "Cisco Systems, Inc",
- [3]byte{0, 36, 197}: "Meridian Audio Limited",
- [3]byte{0, 36, 198}: "Hager Electro SAS",
- [3]byte{0, 36, 199}: "Mobilarm Ltd",
- [3]byte{0, 36, 200}: "Broadband Solutions Group",
- [3]byte{0, 36, 201}: "Broadband Solutions Group",
- [3]byte{0, 36, 202}: "Tobii Technology AB",
- [3]byte{0, 36, 203}: "Autonet Mobile",
- [3]byte{0, 36, 204}: "Fascinations Toys and Gifts, Inc.",
- [3]byte{0, 36, 205}: "Willow Garage, Inc.",
- [3]byte{0, 36, 206}: "Exeltech Inc",
- [3]byte{0, 36, 207}: "Inscape Data Corporation",
- [3]byte{0, 36, 208}: "Shenzhen SOGOOD Industry CO.,LTD.",
- [3]byte{0, 36, 209}: "Thomson Inc.",
- [3]byte{0, 36, 210}: "ASKEY COMPUTER CORP",
- [3]byte{0, 36, 211}: "QUALICA Inc.",
- [3]byte{0, 36, 212}: "FREEBOX SAS",
- [3]byte{0, 36, 213}: "Winward Industrial Limited",
- [3]byte{0, 36, 214}: "Intel Corporate",
- [3]byte{0, 36, 215}: "Intel Corporate",
- [3]byte{0, 36, 216}: "IlSung Precision",
- [3]byte{0, 36, 217}: "BICOM, Inc.",
- [3]byte{0, 36, 218}: "Innovar Systems Limited",
- [3]byte{0, 36, 219}: "Alcohol Monitoring Systems",
- [3]byte{0, 36, 220}: "Juniper Networks",
- [3]byte{0, 36, 221}: "Centrak, Inc.",
- [3]byte{0, 36, 222}: "GLOBAL Technology Inc.",
- [3]byte{0, 36, 223}: "Digitalbox Europe GmbH",
- [3]byte{0, 36, 224}: "DS Tech, LLC",
- [3]byte{0, 36, 225}: "Convey Computer Corp.",
- [3]byte{0, 36, 226}: "HASEGAWA ELECTRIC CO.,LTD.",
- [3]byte{0, 36, 227}: "CAO Group",
- [3]byte{0, 36, 228}: "Withings",
- [3]byte{0, 36, 229}: "Seer Technology, Inc",
- [3]byte{0, 36, 230}: "In Motion Technology Inc.",
- [3]byte{0, 36, 231}: "Plaster Networks",
- [3]byte{0, 36, 232}: "Dell Inc.",
- [3]byte{0, 36, 233}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 36, 234}: "iris-GmbH infrared & intelligent sensors",
- [3]byte{0, 36, 235}: "ClearPath Networks, Inc.",
- [3]byte{0, 36, 236}: "United Information Technology Co.,Ltd.",
- [3]byte{0, 36, 237}: "YT Elec. Co,.Ltd.",
- [3]byte{0, 36, 238}: "Wynmax Inc.",
- [3]byte{0, 36, 239}: "Sony Mobile Communications AB",
- [3]byte{0, 36, 240}: "Seanodes",
- [3]byte{0, 36, 241}: "Shenzhen Fanhai Sanjiang Electronics Co., Ltd.",
- [3]byte{0, 36, 242}: "Uniphone Telecommunication Co., Ltd.",
- [3]byte{0, 36, 243}: "Nintendo Co., Ltd.",
- [3]byte{0, 36, 244}: "Kaminario, Ltd.",
- [3]byte{0, 36, 245}: "NDS Surgical Imaging",
- [3]byte{0, 36, 246}: "MIYOSHI ELECTRONICS CORPORATION",
- [3]byte{0, 36, 247}: "Cisco Systems, Inc",
- [3]byte{0, 36, 248}: "Technical Solutions Company Ltd.",
- [3]byte{0, 36, 249}: "Cisco Systems, Inc",
- [3]byte{0, 36, 250}: "Hilger u. Kern GMBH",
- [3]byte{0, 36, 251}: "Private",
- [3]byte{0, 36, 252}: "QuoPin Co., Ltd.",
- [3]byte{0, 36, 253}: "Accedian Networks Inc",
- [3]byte{0, 36, 254}: "AVM GmbH",
- [3]byte{0, 36, 255}: "QLogic Corporation",
- [3]byte{0, 37, 0}: "Apple, Inc.",
- [3]byte{0, 37, 1}: "JSC Supertel",
- [3]byte{0, 37, 2}: "NaturalPoint",
- [3]byte{0, 37, 3}: "IBM Corp",
- [3]byte{0, 37, 4}: "Valiant Communications Limited",
- [3]byte{0, 37, 5}: "eks Engel GmbH & Co. KG",
- [3]byte{0, 37, 6}: "A.I. ANTITACCHEGGIO ITALIA SRL",
- [3]byte{0, 37, 7}: "ASTAK Inc.",
- [3]byte{0, 37, 8}: "Maquet Cardiopulmonary AG",
- [3]byte{0, 37, 9}: "SHARETRONIC Group LTD",
- [3]byte{0, 37, 10}: "Security Expert Co. Ltd",
- [3]byte{0, 37, 11}: "CENTROFACTOR INC",
- [3]byte{0, 37, 12}: "Enertrac",
- [3]byte{0, 37, 13}: "GZT Telkom-Telmor sp. z o.o.",
- [3]byte{0, 37, 14}: "gt german telematics gmbh",
- [3]byte{0, 37, 15}: "On-Ramp Wireless, Inc.",
- [3]byte{0, 37, 16}: "Pico-Tesla Magnetic Therapies",
- [3]byte{0, 37, 17}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{0, 37, 18}: "zte corporation",
- [3]byte{0, 37, 19}: "CXP DIGITAL BV",
- [3]byte{0, 37, 20}: "PC Worth Int'l Co., Ltd.",
- [3]byte{0, 37, 21}: "SFR",
- [3]byte{0, 37, 22}: "Integrated Design Tools, Inc.",
- [3]byte{0, 37, 23}: "Venntis, LLC",
- [3]byte{0, 37, 24}: "Power PLUS Communications AG",
- [3]byte{0, 37, 25}: "Viaas Inc",
- [3]byte{0, 37, 26}: "Psiber Data Systems Inc.",
- [3]byte{0, 37, 27}: "Philips CareServant",
- [3]byte{0, 37, 28}: "EDT",
- [3]byte{0, 37, 29}: "DSA Encore, LLC",
- [3]byte{0, 37, 30}: "ROTEL TECHNOLOGIES",
- [3]byte{0, 37, 31}: "ZYNUS VISION INC.",
- [3]byte{0, 37, 32}: "SMA Railway Technology GmbH",
- [3]byte{0, 37, 33}: "Logitek Electronic Systems, Inc.",
- [3]byte{0, 37, 34}: "ASRock Incorporation",
- [3]byte{0, 37, 35}: "OCP Inc.",
- [3]byte{0, 37, 36}: "Lightcomm Technology Co., Ltd",
- [3]byte{0, 37, 37}: "CTERA Networks Ltd.",
- [3]byte{0, 37, 38}: "Genuine Technologies Co., Ltd.",
- [3]byte{0, 37, 39}: "Bitrode Corp.",
- [3]byte{0, 37, 40}: "Daido Signal Co., Ltd.",
- [3]byte{0, 37, 41}: "COMELIT GROUP S.P.A",
- [3]byte{0, 37, 42}: "Chengdu GeeYa Technology Co.,LTD",
- [3]byte{0, 37, 43}: "Stirling Energy Systems",
- [3]byte{0, 37, 44}: "Entourage Systems, Inc.",
- [3]byte{0, 37, 45}: "Kiryung Electronics",
- [3]byte{0, 37, 46}: "Cisco SPVTG",
- [3]byte{0, 37, 47}: "Energy, Inc.",
- [3]byte{0, 37, 48}: "Aetas Systems Inc.",
- [3]byte{0, 37, 49}: "Cloud Engines, Inc.",
- [3]byte{0, 37, 50}: "Digital Recorders",
- [3]byte{0, 37, 51}: "WITTENSTEIN AG",
- [3]byte{0, 37, 53}: "Minimax GmbH & Co KG",
- [3]byte{0, 37, 54}: "Oki Electric Industry Co., Ltd.",
- [3]byte{0, 37, 55}: "Runcom Technologies Ltd.",
- [3]byte{0, 37, 56}: "Samsung Electronics Co., Ltd., Memory Division",
- [3]byte{0, 37, 57}: "IfTA GmbH",
- [3]byte{0, 37, 58}: "CEVA, Ltd.",
- [3]byte{0, 37, 59}: "din Dietmar Nocker Facilitymanagement GmbH",
- [3]byte{0, 37, 60}: "2Wire Inc",
- [3]byte{0, 37, 61}: "DRS Consolidated Controls",
- [3]byte{0, 37, 62}: "Sensus Metering Systems",
- [3]byte{0, 37, 64}: "Quasar Technologies, Inc.",
- [3]byte{0, 37, 65}: "Maquet Critical Care AB",
- [3]byte{0, 37, 66}: "Pittasoft",
- [3]byte{0, 37, 67}: "MONEYTECH",
- [3]byte{0, 37, 68}: "LoJack Corporation",
- [3]byte{0, 37, 69}: "Cisco Systems, Inc",
- [3]byte{0, 37, 70}: "Cisco Systems, Inc",
- [3]byte{0, 37, 71}: "Nokia Danmark A/S",
- [3]byte{0, 37, 72}: "Nokia Danmark A/S",
- [3]byte{0, 37, 73}: "Jeorich Tech. Co.,Ltd.",
- [3]byte{0, 37, 74}: "RingCube Technologies, Inc.",
- [3]byte{0, 37, 75}: "Apple, Inc.",
- [3]byte{0, 37, 76}: "Videon Central, Inc.",
- [3]byte{0, 37, 77}: "Singapore Technologies Electronics Limited",
- [3]byte{0, 37, 78}: "Vertex Wireless Co., Ltd.",
- [3]byte{0, 37, 79}: "ELETTROLAB Srl",
- [3]byte{0, 37, 80}: "Riverbed Technology, Inc.",
- [3]byte{0, 37, 81}: "SE-Elektronic GmbH",
- [3]byte{0, 37, 82}: "VXi Corporation",
- [3]byte{0, 37, 83}: "ADB Broadband Italia",
- [3]byte{0, 37, 84}: "Pixel8 Networks",
- [3]byte{0, 37, 85}: "Visonic Technologies 1993 Ltd.",
- [3]byte{0, 37, 86}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 37, 87}: "BlackBerry RTS",
- [3]byte{0, 37, 88}: "MPEDIA",
- [3]byte{0, 37, 89}: "Syphan Technologies Ltd",
- [3]byte{0, 37, 90}: "Tantalus Systems Corp.",
- [3]byte{0, 37, 91}: "CoachComm, LLC",
- [3]byte{0, 37, 92}: "NEC Corporation",
- [3]byte{0, 37, 93}: "Morningstar Corporation",
- [3]byte{0, 37, 94}: "Shanghai Dare Technologies Co.,Ltd.",
- [3]byte{0, 37, 95}: "SenTec AG",
- [3]byte{0, 37, 96}: "Ibridge Networks & Communications Ltd.",
- [3]byte{0, 37, 97}: "ProCurve Networking by HP",
- [3]byte{0, 37, 98}: "interbro Co. Ltd.",
- [3]byte{0, 37, 99}: "Luxtera Inc",
- [3]byte{0, 37, 100}: "Dell Inc.",
- [3]byte{0, 37, 101}: "Vizimax Inc.",
- [3]byte{0, 37, 102}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 37, 103}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 37, 104}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 37, 105}: "Sagemcom Broadband SAS",
- [3]byte{0, 37, 106}: "inIT - Institut Industrial IT",
- [3]byte{0, 37, 107}: "ATENIX E.E. s.r.l.",
- [3]byte{0, 37, 108}: "Azimut Production Association JSC",
- [3]byte{0, 37, 109}: "Broadband Forum",
- [3]byte{0, 37, 110}: "Van Breda B.V.",
- [3]byte{0, 37, 111}: "Dantherm Power",
- [3]byte{0, 37, 112}: "Eastern Communications Company Limited",
- [3]byte{0, 37, 113}: "Zhejiang Tianle Digital Electric Co.,Ltd",
- [3]byte{0, 37, 114}: "Nemo-Q International AB",
- [3]byte{0, 37, 115}: "ST Electronics (Info-Security) Pte Ltd",
- [3]byte{0, 37, 116}: "KUNIMI MEDIA DEVICE Co., Ltd.",
- [3]byte{0, 37, 117}: "FiberPlex Technologies, LLC",
- [3]byte{0, 37, 118}: "NELI TECHNOLOGIES",
- [3]byte{0, 37, 119}: "D-BOX Technologies",
- [3]byte{0, 37, 120}: "JSC Concern Sozvezdie",
- [3]byte{0, 37, 121}: "J & F Labs",
- [3]byte{0, 37, 122}: "CAMCO Produktions- und Vertriebs-GmbH für Beschallungs- und Beleuchtungsanlagen",
- [3]byte{0, 37, 123}: "STJ ELECTRONICS PVT LTD",
- [3]byte{0, 37, 124}: "Huachentel Technology Development Co., Ltd",
- [3]byte{0, 37, 125}: "PointRed Telecom Private Ltd.",
- [3]byte{0, 37, 126}: "NEW POS Technology Limited",
- [3]byte{0, 37, 127}: "CallTechSolution Co.,Ltd",
- [3]byte{0, 37, 128}: "Equipson S.A.",
- [3]byte{0, 37, 129}: "x-star networks Inc.",
- [3]byte{0, 37, 130}: "Maksat Technologies (P) Ltd",
- [3]byte{0, 37, 131}: "Cisco Systems, Inc",
- [3]byte{0, 37, 132}: "Cisco Systems, Inc",
- [3]byte{0, 37, 133}: "KOKUYO S&T Co., Ltd.",
- [3]byte{0, 37, 134}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{0, 37, 135}: "Vitality, Inc.",
- [3]byte{0, 37, 136}: "Genie Industries, Inc.",
- [3]byte{0, 37, 137}: "Hills Industries Limited",
- [3]byte{0, 37, 138}: "Pole/Zero Corporation",
- [3]byte{0, 37, 139}: "Mellanox Technologies, Inc.",
- [3]byte{0, 37, 140}: "ESUS ELEKTRONIK SAN. VE DIS. TIC. LTD. STI.",
- [3]byte{0, 37, 141}: "Haier",
- [3]byte{0, 37, 142}: "The Weather Channel",
- [3]byte{0, 37, 143}: "Trident Microsystems, Inc.",
- [3]byte{0, 37, 144}: "Super Micro Computer, Inc.",
- [3]byte{0, 37, 145}: "NEXTEK, Inc.",
- [3]byte{0, 37, 146}: "Guangzhou Shirui Electronic Co., Ltd",
- [3]byte{0, 37, 147}: "DatNet Informatikai Kft.",
- [3]byte{0, 37, 148}: "Eurodesign BG LTD",
- [3]byte{0, 37, 149}: "Northwest Signal Supply, Inc",
- [3]byte{0, 37, 150}: "GIGAVISION srl",
- [3]byte{0, 37, 151}: "Kalki Communication Technologies",
- [3]byte{0, 37, 152}: "Zhong Shan City Litai Electronic Industrial Co. Ltd",
- [3]byte{0, 37, 153}: "Hedon e.d. B.V.",
- [3]byte{0, 37, 154}: "CEStronics GmbH",
- [3]byte{0, 37, 155}: "Beijing PKUNITY Microsystems Technology Co., Ltd",
- [3]byte{0, 37, 156}: "Cisco-Linksys, LLC",
- [3]byte{0, 37, 157}: "Private",
- [3]byte{0, 37, 158}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 37, 159}: "TechnoDigital Technologies GmbH",
- [3]byte{0, 37, 160}: "Nintendo Co., Ltd.",
- [3]byte{0, 37, 161}: "Enalasys",
- [3]byte{0, 37, 162}: "Alta Definicion LINCEO S.L.",
- [3]byte{0, 37, 163}: "Trimax Wireless, Inc.",
- [3]byte{0, 37, 164}: "EuroDesign embedded technologies GmbH",
- [3]byte{0, 37, 165}: "Walnut Media Network",
- [3]byte{0, 37, 166}: "Central Network Solution Co., Ltd.",
- [3]byte{0, 37, 167}: "Comverge, Inc.",
- [3]byte{0, 37, 168}: "Kontron (BeiJing) Technology Co.,Ltd",
- [3]byte{0, 37, 169}: "Shanghai Embedway Information Technologies Co.,Ltd",
- [3]byte{0, 37, 170}: "Beijing Soul Technology Co.,Ltd.",
- [3]byte{0, 37, 171}: "AIO LCD PC BU / TPV",
- [3]byte{0, 37, 172}: "I-Tech corporation",
- [3]byte{0, 37, 173}: "Manufacturing Resources International",
- [3]byte{0, 37, 174}: "Microsoft Corporation",
- [3]byte{0, 37, 175}: "COMFILE Technology",
- [3]byte{0, 37, 176}: "Schmartz Inc",
- [3]byte{0, 37, 177}: "Maya-Creation Corporation",
- [3]byte{0, 37, 178}: "MBDA Deutschland GmbH",
- [3]byte{0, 37, 179}: "Hewlett Packard",
- [3]byte{0, 37, 180}: "Cisco Systems, Inc",
- [3]byte{0, 37, 181}: "Cisco Systems, Inc",
- [3]byte{0, 37, 182}: "Telecom FM",
- [3]byte{0, 37, 183}: "Costar electronics, inc.,",
- [3]byte{0, 37, 184}: "Agile Communications, Inc.",
- [3]byte{0, 37, 185}: "Cypress Solutions Inc",
- [3]byte{0, 37, 186}: "Alcatel-Lucent IPD",
- [3]byte{0, 37, 187}: "INNERINT Co., Ltd.",
- [3]byte{0, 37, 188}: "Apple, Inc.",
- [3]byte{0, 37, 189}: "Italdata Ingegneria dell'Idea S.p.A.",
- [3]byte{0, 37, 190}: "Tektrap Systems Inc.",
- [3]byte{0, 37, 191}: "Wireless Cables Inc.",
- [3]byte{0, 37, 192}: "ZillionTV Corporation",
- [3]byte{0, 37, 193}: "Nawoo Korea Corp.",
- [3]byte{0, 37, 194}: "RingBell Co.,Ltd.",
- [3]byte{0, 37, 195}: "21168",
- [3]byte{0, 37, 196}: "Ruckus Wireless",
- [3]byte{0, 37, 197}: "Star Link Communication Pvt. Ltd.",
- [3]byte{0, 37, 198}: "kasercorp, ltd",
- [3]byte{0, 37, 199}: "altek Corporation",
- [3]byte{0, 37, 200}: "S-Access GmbH",
- [3]byte{0, 37, 201}: "SHENZHEN HUAPU DIGITAL CO., LTD",
- [3]byte{0, 37, 202}: "LS Research, LLC",
- [3]byte{0, 37, 203}: "Reiner SCT",
- [3]byte{0, 37, 204}: "Mobile Communications Korea Incorporated",
- [3]byte{0, 37, 205}: "Skylane Optics",
- [3]byte{0, 37, 206}: "InnerSpace",
- [3]byte{0, 37, 207}: "Nokia Danmark A/S",
- [3]byte{0, 37, 208}: "Nokia Danmark A/S",
- [3]byte{0, 37, 209}: "Eastern Asia Technology Limited",
- [3]byte{0, 37, 210}: "InpegVision Co., Ltd",
- [3]byte{0, 37, 211}: "AzureWave Technology Inc.",
- [3]byte{0, 37, 212}: "General Dynamics Mission Systems",
- [3]byte{0, 37, 213}: "Robonica (Pty) Ltd",
- [3]byte{0, 37, 214}: "The Kroger Co.",
- [3]byte{0, 37, 215}: "CEDO",
- [3]byte{0, 37, 216}: "KOREA MAINTENANCE",
- [3]byte{0, 37, 217}: "DataFab Systems Inc.",
- [3]byte{0, 37, 218}: "Secura Key",
- [3]byte{0, 37, 219}: "ATI Electronics(Shenzhen) Co., LTD",
- [3]byte{0, 37, 220}: "Sumitomo Electric Industries,Ltd",
- [3]byte{0, 37, 221}: "SUNNYTEK INFORMATION CO., LTD.",
- [3]byte{0, 37, 222}: "Probits Co., LTD.",
- [3]byte{0, 37, 223}: "Private",
- [3]byte{0, 37, 224}: "CeedTec Sdn Bhd",
- [3]byte{0, 37, 225}: "SHANGHAI SEEYOO ELECTRONIC & TECHNOLOGY CO., LTD",
- [3]byte{0, 37, 226}: "Everspring Industry Co., Ltd.",
- [3]byte{0, 37, 227}: "Hanshinit Inc.",
- [3]byte{0, 37, 228}: "OMNI-WiFi, LLC",
- [3]byte{0, 37, 229}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 37, 230}: "Belgian Monitoring Systems bvba",
- [3]byte{0, 37, 231}: "Sony Mobile Communications AB",
- [3]byte{0, 37, 232}: "Idaho Technology",
- [3]byte{0, 37, 233}: "i-mate Development, Inc.",
- [3]byte{0, 37, 234}: "Iphion BV",
- [3]byte{0, 37, 235}: "Reutech Radar Systems (PTY) Ltd",
- [3]byte{0, 37, 236}: "Humanware",
- [3]byte{0, 37, 237}: "NuVo Technologies LLC",
- [3]byte{0, 37, 238}: "Avtex Ltd",
- [3]byte{0, 37, 239}: "I-TEC Co., Ltd.",
- [3]byte{0, 37, 240}: "Suga Electronics Limited",
- [3]byte{0, 37, 241}: "ARRIS Group, Inc.",
- [3]byte{0, 37, 242}: "ARRIS Group, Inc.",
- [3]byte{0, 37, 243}: "Nordwestdeutsche Zählerrevision",
- [3]byte{0, 37, 244}: "KoCo Connector AG",
- [3]byte{0, 37, 245}: "DVS Korea, Co., Ltd",
- [3]byte{0, 37, 246}: "netTALK.com, Inc.",
- [3]byte{0, 37, 247}: "Ansaldo STS USA",
- [3]byte{0, 37, 249}: "GMK electronic design GmbH",
- [3]byte{0, 37, 250}: "J&M Analytik AG",
- [3]byte{0, 37, 251}: "Tunstall Healthcare A/S",
- [3]byte{0, 37, 252}: "ENDA ENDUSTRIYEL ELEKTRONIK LTD. STI.",
- [3]byte{0, 37, 253}: "OBR Centrum Techniki Morskiej S.A.",
- [3]byte{0, 37, 254}: "Pilot Electronics Corporation",
- [3]byte{0, 37, 255}: "CreNova Multimedia Co., Ltd",
- [3]byte{0, 38, 0}: "TEAC Australia Pty Ltd.",
- [3]byte{0, 38, 1}: "Cutera Inc",
- [3]byte{0, 38, 2}: "SMART Temps LLC",
- [3]byte{0, 38, 3}: "Shenzhen Wistar Technology Co., Ltd",
- [3]byte{0, 38, 4}: "Audio Processing Technology Ltd",
- [3]byte{0, 38, 5}: "CC Systems AB",
- [3]byte{0, 38, 6}: "RAUMFELD GmbH",
- [3]byte{0, 38, 7}: "Enabling Technology Pty Ltd",
- [3]byte{0, 38, 8}: "Apple, Inc.",
- [3]byte{0, 38, 9}: "Phyllis Co., Ltd.",
- [3]byte{0, 38, 10}: "Cisco Systems, Inc",
- [3]byte{0, 38, 11}: "Cisco Systems, Inc",
- [3]byte{0, 38, 12}: "Dataram",
- [3]byte{0, 38, 13}: "Mercury Systems, Inc.",
- [3]byte{0, 38, 14}: "Ablaze Systems, LLC",
- [3]byte{0, 38, 15}: "Linn Products Ltd",
- [3]byte{0, 38, 16}: "Apacewave Technologies",
- [3]byte{0, 38, 17}: "Licera AB",
- [3]byte{0, 38, 18}: "Space Exploration Technologies",
- [3]byte{0, 38, 19}: "Engel Axil S.L.",
- [3]byte{0, 38, 20}: "KTNF",
- [3]byte{0, 38, 21}: "Teracom Limited",
- [3]byte{0, 38, 22}: "Rosemount Inc.",
- [3]byte{0, 38, 23}: "OEM Worldwide",
- [3]byte{0, 38, 24}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 38, 25}: "FRC",
- [3]byte{0, 38, 26}: "Femtocomm System Technology Corp.",
- [3]byte{0, 38, 27}: "LAUREL BANK MACHINES CO., LTD.",
- [3]byte{0, 38, 28}: "NEOVIA INC.",
- [3]byte{0, 38, 29}: "COP SECURITY SYSTEM CORP.",
- [3]byte{0, 38, 30}: "QINGBANG ELEC(SZ) CO., LTD",
- [3]byte{0, 38, 31}: "SAE Magnetics (H.K.) Ltd.",
- [3]byte{0, 38, 32}: "ISGUS GmbH",
- [3]byte{0, 38, 33}: "InteliCloud Technology Inc.",
- [3]byte{0, 38, 34}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{0, 38, 35}: "JRD Communication Inc",
- [3]byte{0, 38, 36}: "Thomson Inc.",
- [3]byte{0, 38, 37}: "MediaSputnik",
- [3]byte{0, 38, 38}: "Geophysical Survey Systems, Inc.",
- [3]byte{0, 38, 39}: "Truesell",
- [3]byte{0, 38, 40}: "companytec automação e controle ltda.",
- [3]byte{0, 38, 41}: "Juphoon System Software Inc.",
- [3]byte{0, 38, 42}: "Proxense, LLC",
- [3]byte{0, 38, 43}: "Wongs Electronics Co. Ltd.",
- [3]byte{0, 38, 44}: "IKT Advanced Technologies s.r.o.",
- [3]byte{0, 38, 45}: "Wistron Corporation",
- [3]byte{0, 38, 46}: "Chengdu Jiuzhou Electronic Technology Inc",
- [3]byte{0, 38, 47}: "HAMAMATSU TOA ELECTRONICS",
- [3]byte{0, 38, 48}: "ACOREL S.A.S",
- [3]byte{0, 38, 49}: "COMMTACT LTD",
- [3]byte{0, 38, 50}: "Instrumentation Technologies d.d.",
- [3]byte{0, 38, 51}: "MIR - Medical International Research",
- [3]byte{0, 38, 52}: "Infineta Systems, Inc",
- [3]byte{0, 38, 53}: "Bluetechnix GmbH",
- [3]byte{0, 38, 54}: "ARRIS Group, Inc.",
- [3]byte{0, 38, 55}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{0, 38, 56}: "Xia Men Joyatech Co., Ltd.",
- [3]byte{0, 38, 57}: "T.M. Electronics, Inc.",
- [3]byte{0, 38, 58}: "Digitec Systems",
- [3]byte{0, 38, 59}: "Onbnetech",
- [3]byte{0, 38, 60}: "Bachmann Technology GmbH & Co. KG",
- [3]byte{0, 38, 61}: "MIA Corporation",
- [3]byte{0, 38, 62}: "Trapeze Networks",
- [3]byte{0, 38, 63}: "LIOS Technology GmbH",
- [3]byte{0, 38, 64}: "Baustem Broadband Technologies, Ltd.",
- [3]byte{0, 38, 65}: "ARRIS Group, Inc.",
- [3]byte{0, 38, 66}: "ARRIS Group, Inc.",
- [3]byte{0, 38, 67}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{0, 38, 68}: "Thomson Telecom Belgium",
- [3]byte{0, 38, 69}: "Circontrol S.A.",
- [3]byte{0, 38, 70}: "SHENYANG TONGFANG MULTIMEDIA TECHNOLOGY COMPANY LIMITED",
- [3]byte{0, 38, 71}: "WFE TECHNOLOGY CORP.",
- [3]byte{0, 38, 72}: "Emitech Corp.",
- [3]byte{0, 38, 74}: "Apple, Inc.",
- [3]byte{0, 38, 76}: "Shanghai DigiVision Technology Co., Ltd.",
- [3]byte{0, 38, 77}: "Arcadyan Technology Corporation",
- [3]byte{0, 38, 78}: "Rail & Road Protec GmbH",
- [3]byte{0, 38, 79}: "Krüger &Gothe GmbH",
- [3]byte{0, 38, 80}: "2Wire Inc",
- [3]byte{0, 38, 81}: "Cisco Systems, Inc",
- [3]byte{0, 38, 82}: "Cisco Systems, Inc",
- [3]byte{0, 38, 83}: "DaySequerra Corporation",
- [3]byte{0, 38, 84}: "3Com Corporation",
- [3]byte{0, 38, 85}: "Hewlett Packard",
- [3]byte{0, 38, 86}: "Sansonic Electronics USA",
- [3]byte{0, 38, 87}: "OOO NPP EKRA",
- [3]byte{0, 38, 88}: "T-Platforms (Cyprus) Limited",
- [3]byte{0, 38, 89}: "Nintendo Co., Ltd.",
- [3]byte{0, 38, 90}: "D-Link Corporation",
- [3]byte{0, 38, 91}: "Hitron Technologies. Inc",
- [3]byte{0, 38, 92}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 38, 93}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 38, 94}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 38, 95}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 38, 96}: "Logiways",
- [3]byte{0, 38, 97}: "Irumtek Co., Ltd.",
- [3]byte{0, 38, 98}: "Actiontec Electronics, Inc",
- [3]byte{0, 38, 99}: "Shenzhen Huitaiwei Tech. Ltd, co.",
- [3]byte{0, 38, 100}: "Core System Japan",
- [3]byte{0, 38, 101}: "ProtectedLogic Corporation",
- [3]byte{0, 38, 102}: "EFM Networks",
- [3]byte{0, 38, 103}: "CARECOM CO.,LTD.",
- [3]byte{0, 38, 104}: "Nokia Danmark A/S",
- [3]byte{0, 38, 105}: "Nokia Danmark A/S",
- [3]byte{0, 38, 106}: "ESSENSIUM NV",
- [3]byte{0, 38, 107}: "SHINE UNION ENTERPRISE LIMITED",
- [3]byte{0, 38, 108}: "INVENTEC Corporation",
- [3]byte{0, 38, 109}: "MobileAccess Networks",
- [3]byte{0, 38, 110}: "Nissho-denki Co.,LTD.",
- [3]byte{0, 38, 111}: "Coordiwise Technology Corp.",
- [3]byte{0, 38, 112}: "Cinch Connectors",
- [3]byte{0, 38, 113}: "AUTOVISION Co., Ltd",
- [3]byte{0, 38, 114}: "AAMP of America",
- [3]byte{0, 38, 115}: "RICOH COMPANY,LTD.",
- [3]byte{0, 38, 116}: "Electronic Solutions, Inc.",
- [3]byte{0, 38, 117}: "Aztech Electronics Pte Ltd",
- [3]byte{0, 38, 118}: "COMMidt AS",
- [3]byte{0, 38, 119}: "DEIF A/S",
- [3]byte{0, 38, 120}: "Logic Instrument SA",
- [3]byte{0, 38, 121}: "Euphonic Technologies, Inc.",
- [3]byte{0, 38, 122}: "wuhan hongxin telecommunication technologies co.,ltd",
- [3]byte{0, 38, 123}: "GSI Helmholtzzentrum für Schwerionenforschung GmbH",
- [3]byte{0, 38, 124}: "Metz-Werke GmbH & Co KG",
- [3]byte{0, 38, 125}: "A-Max Technology Macao Commercial Offshore Company Limited",
- [3]byte{0, 38, 126}: "PARROT SA",
- [3]byte{0, 38, 127}: "Zenterio AB",
- [3]byte{0, 38, 128}: "SIL3 Pty.Ltd",
- [3]byte{0, 38, 129}: "Interspiro AB",
- [3]byte{0, 38, 130}: "Gemtek Technology Co., Ltd.",
- [3]byte{0, 38, 131}: "Ajoho Enterprise Co., Ltd.",
- [3]byte{0, 38, 132}: "KISAN SYSTEM",
- [3]byte{0, 38, 133}: "Digital Innovation",
- [3]byte{0, 38, 134}: "Quantenna Communcations, Inc.",
- [3]byte{0, 38, 135}: "corega K.K",
- [3]byte{0, 38, 136}: "Juniper Networks",
- [3]byte{0, 38, 137}: "General Dynamics Robotic Systems",
- [3]byte{0, 38, 138}: "Terrier SC Ltd",
- [3]byte{0, 38, 139}: "Guangzhou Escene Computer Technology Limited",
- [3]byte{0, 38, 140}: "StarLeaf Ltd.",
- [3]byte{0, 38, 141}: "CellTel S.p.A.",
- [3]byte{0, 38, 142}: "Alta Solutions, Inc.",
- [3]byte{0, 38, 143}: "MTA SpA",
- [3]byte{0, 38, 144}: "I DO IT",
- [3]byte{0, 38, 145}: "Sagemcom Broadband SAS",
- [3]byte{0, 38, 146}: "Mitsubishi Electric Corporation",
- [3]byte{0, 38, 147}: "QVidium Technologies, Inc.",
- [3]byte{0, 38, 148}: "Senscient Ltd",
- [3]byte{0, 38, 149}: "ZT Group Int'l Inc",
- [3]byte{0, 38, 150}: "NOOLIX Co., Ltd",
- [3]byte{0, 38, 151}: "Alpha Technologies Inc.",
- [3]byte{0, 38, 152}: "Cisco Systems, Inc",
- [3]byte{0, 38, 153}: "Cisco Systems, Inc",
- [3]byte{0, 38, 154}: "Carina System Co., Ltd.",
- [3]byte{0, 38, 155}: "SOKRAT Ltd.",
- [3]byte{0, 38, 156}: "ITUS JAPAN CO. LTD",
- [3]byte{0, 38, 157}: "M2Mnet Co., Ltd.",
- [3]byte{0, 38, 158}: "QUANTA COMPUTER INC.",
- [3]byte{0, 38, 159}: "Private",
- [3]byte{0, 38, 160}: "moblic",
- [3]byte{0, 38, 161}: "Megger",
- [3]byte{0, 38, 162}: "Instrumentation Technology Systems",
- [3]byte{0, 38, 163}: "FQ Ingenieria Electronica S.A.",
- [3]byte{0, 38, 164}: "Novus Produtos Eletronicos Ltda",
- [3]byte{0, 38, 165}: "MICROROBOT.CO.,LTD",
- [3]byte{0, 38, 166}: "TRIXELL",
- [3]byte{0, 38, 167}: "CONNECT SRL",
- [3]byte{0, 38, 168}: "DAEHAP HYPER-TECH",
- [3]byte{0, 38, 169}: "Strong Technologies Pty Ltd",
- [3]byte{0, 38, 170}: "Kenmec Mechanical Engineering Co., Ltd.",
- [3]byte{0, 38, 171}: "Seiko Epson Corporation",
- [3]byte{0, 38, 172}: "Shanghai LUSTER Teraband photonic Co., Ltd.",
- [3]byte{0, 38, 173}: "Arada Systems, Inc.",
- [3]byte{0, 38, 174}: "Wireless Measurement Ltd",
- [3]byte{0, 38, 175}: "Duelco A/S",
- [3]byte{0, 38, 176}: "Apple, Inc.",
- [3]byte{0, 38, 177}: "Navis Auto Motive Systems, Inc.",
- [3]byte{0, 38, 178}: "Setrix GmbH",
- [3]byte{0, 38, 179}: "Thales Communications Inc",
- [3]byte{0, 38, 180}: "Ford Motor Company",
- [3]byte{0, 38, 181}: "ICOMM Tele Ltd",
- [3]byte{0, 38, 182}: "ASKEY COMPUTER CORP",
- [3]byte{0, 38, 183}: "Kingston Technology Company, Inc.",
- [3]byte{0, 38, 184}: "Actiontec Electronics, Inc",
- [3]byte{0, 38, 185}: "Dell Inc.",
- [3]byte{0, 38, 186}: "ARRIS Group, Inc.",
- [3]byte{0, 38, 187}: "Apple, Inc.",
- [3]byte{0, 38, 188}: "General Jack Technology Ltd.",
- [3]byte{0, 38, 189}: "JTEC Card & Communication Co., Ltd.",
- [3]byte{0, 38, 190}: "Schoonderbeek Elektronica Systemen B.V.",
- [3]byte{0, 38, 191}: "ShenZhen Temobi Science&Tech Development Co.,Ltd",
- [3]byte{0, 38, 192}: "EnergyHub",
- [3]byte{0, 38, 193}: "ARTRAY CO., LTD.",
- [3]byte{0, 38, 194}: "SCDI Co. LTD",
- [3]byte{0, 38, 195}: "Insightek Corp.",
- [3]byte{0, 38, 196}: "Cadmos microsystems S.r.l.",
- [3]byte{0, 38, 197}: "Guangdong Gosun Telecommunications Co.,Ltd",
- [3]byte{0, 38, 198}: "Intel Corporate",
- [3]byte{0, 38, 199}: "Intel Corporate",
- [3]byte{0, 38, 200}: "System Sensor",
- [3]byte{0, 38, 201}: "Proventix Systems, Inc.",
- [3]byte{0, 38, 202}: "Cisco Systems, Inc",
- [3]byte{0, 38, 203}: "Cisco Systems, Inc",
- [3]byte{0, 38, 204}: "Nokia Danmark A/S",
- [3]byte{0, 38, 205}: "PurpleComm, Inc.",
- [3]byte{0, 38, 206}: "Kozumi USA Corp.",
- [3]byte{0, 38, 207}: "DEKA R&D",
- [3]byte{0, 38, 208}: "Semihalf",
- [3]byte{0, 38, 209}: "S Squared Innovations Inc.",
- [3]byte{0, 38, 210}: "Pcube Systems, Inc.",
- [3]byte{0, 38, 211}: "Zeno Information System",
- [3]byte{0, 38, 212}: "IRCA SpA",
- [3]byte{0, 38, 213}: "Ory Solucoes em Comercio de Informatica Ltda.",
- [3]byte{0, 38, 214}: "Ningbo Andy Optoelectronic Co., Ltd.",
- [3]byte{0, 38, 215}: "KM Electornic Technology Co., Ltd.",
- [3]byte{0, 38, 216}: "Magic Point Inc.",
- [3]byte{0, 38, 217}: "ARRIS Group, Inc.",
- [3]byte{0, 38, 218}: "Universal Media Corporation /Slovakia/ s.r.o.",
- [3]byte{0, 38, 219}: "Ionics EMS Inc.",
- [3]byte{0, 38, 220}: "Optical Systems Design",
- [3]byte{0, 38, 221}: "Fival Science & Technology Co.,Ltd.",
- [3]byte{0, 38, 222}: "FDI MATELEC",
- [3]byte{0, 38, 223}: "TaiDoc Technology Corp.",
- [3]byte{0, 38, 224}: "ASITEQ",
- [3]byte{0, 38, 225}: "Stanford University, OpenFlow Group",
- [3]byte{0, 38, 226}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 38, 227}: "DTI",
- [3]byte{0, 38, 228}: "Canal +",
- [3]byte{0, 38, 229}: "AEG Power Solutions",
- [3]byte{0, 38, 230}: "Visionhitech Co., Ltd.",
- [3]byte{0, 38, 231}: "Shanghai ONLAN Communication Tech. Co., Ltd.",
- [3]byte{0, 38, 232}: "Murata Manufacturing Co., Ltd.",
- [3]byte{0, 38, 233}: "SP Corp",
- [3]byte{0, 38, 234}: "Cheerchip Electronic Technology (ShangHai) Co., Ltd.",
- [3]byte{0, 38, 235}: "Advanced Spectrum Technology Co., Ltd.",
- [3]byte{0, 38, 236}: "Legrand Home Systems, Inc",
- [3]byte{0, 38, 237}: "zte corporation",
- [3]byte{0, 38, 238}: "TKM GmbH",
- [3]byte{0, 38, 239}: "Technology Advancement Group, Inc.",
- [3]byte{0, 38, 240}: "cTrixs International GmbH.",
- [3]byte{0, 38, 241}: "ProCurve Networking by HP",
- [3]byte{0, 38, 242}: "NETGEAR",
- [3]byte{0, 38, 243}: "SMC Networks",
- [3]byte{0, 38, 244}: "Nesslab",
- [3]byte{0, 38, 245}: "XRPLUS Inc.",
- [3]byte{0, 38, 246}: "Military Communication Institute",
- [3]byte{0, 38, 247}: "Nivetti Systems Pvt. Ltd.",
- [3]byte{0, 38, 248}: "Golden Highway Industry Development Co., Ltd.",
- [3]byte{0, 38, 249}: "S.E.M. srl",
- [3]byte{0, 38, 250}: "BandRich Inc.",
- [3]byte{0, 38, 251}: "AirDio Wireless, Inc.",
- [3]byte{0, 38, 252}: "AcSiP Technology Corp.",
- [3]byte{0, 38, 253}: "Interactive Intelligence",
- [3]byte{0, 38, 254}: "MKD Technology Inc.",
- [3]byte{0, 38, 255}: "BlackBerry RTS",
- [3]byte{0, 39, 0}: "Shenzhen Siglent Technology Co., Ltd.",
- [3]byte{0, 39, 1}: "INCOstartec GmbH",
- [3]byte{0, 39, 2}: "SolarEdge Technologies",
- [3]byte{0, 39, 3}: "Testech Electronics Pte Ltd",
- [3]byte{0, 39, 4}: "Accelerated Concepts, Inc",
- [3]byte{0, 39, 5}: "Sectronic",
- [3]byte{0, 39, 6}: "YOISYS",
- [3]byte{0, 39, 7}: "Lift Complex DS, JSC",
- [3]byte{0, 39, 8}: "Nordiag ASA",
- [3]byte{0, 39, 9}: "Nintendo Co., Ltd.",
- [3]byte{0, 39, 10}: "IEE S.A.",
- [3]byte{0, 39, 11}: "Adura Technologies",
- [3]byte{0, 39, 12}: "Cisco Systems, Inc",
- [3]byte{0, 39, 13}: "Cisco Systems, Inc",
- [3]byte{0, 39, 14}: "Intel Corporate",
- [3]byte{0, 39, 15}: "Envisionnovation Inc",
- [3]byte{0, 39, 16}: "Intel Corporate",
- [3]byte{0, 39, 17}: "LanPro Inc",
- [3]byte{0, 39, 18}: "MaxVision LLC",
- [3]byte{0, 39, 19}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{0, 39, 20}: "Grainmustards, Co,ltd.",
- [3]byte{0, 39, 21}: "Rebound Telecom. Co., Ltd",
- [3]byte{0, 39, 22}: "Adachi-Syokai Co., Ltd.",
- [3]byte{0, 39, 23}: "CE Digital(Zhenjiang)Co.,Ltd",
- [3]byte{0, 39, 24}: "Suzhou NEW SEAUNION Video Technology Co.,Ltd",
- [3]byte{0, 39, 25}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{0, 39, 26}: "Geenovo Technology Ltd.",
- [3]byte{0, 39, 27}: "Alec Sicherheitssysteme GmbH",
- [3]byte{0, 39, 28}: "MERCURY CORPORATION",
- [3]byte{0, 39, 29}: "Comba Telecom Systems (China) Ltd.",
- [3]byte{0, 39, 30}: "Xagyl Communications",
- [3]byte{0, 39, 31}: "MIPRO Electronics Co., Ltd",
- [3]byte{0, 39, 32}: "NEW-SOL COM",
- [3]byte{0, 39, 33}: "Shenzhen Baoan Fenda Industrial Co., Ltd",
- [3]byte{0, 39, 34}: "Ubiquiti Networks Inc.",
- [3]byte{0, 39, 144}: "Cisco Systems, Inc",
- [3]byte{0, 39, 227}: "Cisco Systems, Inc",
- [3]byte{0, 39, 248}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 40, 159}: "Semptian Co., Ltd.",
- [3]byte{0, 40, 248}: "Intel Corporate",
- [3]byte{0, 41, 38}: "Applied Optoelectronics, Inc Taiwan Branch",
- [3]byte{0, 42, 16}: "Cisco Systems, Inc",
- [3]byte{0, 42, 106}: "Cisco Systems, Inc",
- [3]byte{0, 42, 175}: "LARsys-Automation GmbH",
- [3]byte{0, 44, 200}: "Cisco Systems, Inc",
- [3]byte{0, 45, 118}: "TITECH GmbH",
- [3]byte{0, 46, 199}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 48, 0}: "ALLWELL TECHNOLOGY CORP.",
- [3]byte{0, 48, 1}: "SMP",
- [3]byte{0, 48, 2}: "Expand Networks",
- [3]byte{0, 48, 3}: "Phasys Ltd.",
- [3]byte{0, 48, 4}: "LEADTEK RESEARCH INC.",
- [3]byte{0, 48, 5}: "Fujitsu Siemens Computers",
- [3]byte{0, 48, 6}: "SUPERPOWER COMPUTER",
- [3]byte{0, 48, 7}: "OPTI, INC.",
- [3]byte{0, 48, 8}: "AVIO DIGITAL, INC.",
- [3]byte{0, 48, 9}: "Tachion Networks, Inc.",
- [3]byte{0, 48, 10}: "Aztech Electronics Pte Ltd",
- [3]byte{0, 48, 11}: "mPHASE Technologies, Inc.",
- [3]byte{0, 48, 12}: "CONGRUENCY, LTD.",
- [3]byte{0, 48, 13}: "MMC Technology, Inc.",
- [3]byte{0, 48, 14}: "Klotz Digital AG",
- [3]byte{0, 48, 15}: "IMT - Information Management T",
- [3]byte{0, 48, 16}: "VISIONETICS INTERNATIONAL",
- [3]byte{0, 48, 17}: "HMS Industrial Networks",
- [3]byte{0, 48, 18}: "DIGITAL ENGINEERING LTD.",
- [3]byte{0, 48, 19}: "NEC Corporation",
- [3]byte{0, 48, 20}: "DIVIO, INC.",
- [3]byte{0, 48, 21}: "CP CLARE CORP.",
- [3]byte{0, 48, 22}: "ISHIDA CO., LTD.",
- [3]byte{0, 48, 23}: "BlueArc UK Ltd",
- [3]byte{0, 48, 24}: "Jetway Information Co., Ltd.",
- [3]byte{0, 48, 25}: "Cisco Systems, Inc",
- [3]byte{0, 48, 26}: "SMARTBRIDGES PTE. LTD.",
- [3]byte{0, 48, 27}: "SHUTTLE, INC.",
- [3]byte{0, 48, 28}: "ALTVATER AIRDATA SYSTEMS",
- [3]byte{0, 48, 29}: "SKYSTREAM, INC.",
- [3]byte{0, 48, 30}: "3COM EUROPE LTD.",
- [3]byte{0, 48, 31}: "OPTICAL NETWORKS, INC.",
- [3]byte{0, 48, 32}: "TSI, Inc..",
- [3]byte{0, 48, 33}: "HSING TECH. ENTERPRISE CO.,LTD",
- [3]byte{0, 48, 34}: "Fong Kai Industrial Co., Ltd.",
- [3]byte{0, 48, 35}: "COGENT COMPUTER SYSTEMS, INC.",
- [3]byte{0, 48, 36}: "Cisco Systems, Inc",
- [3]byte{0, 48, 37}: "CHECKOUT COMPUTER SYSTEMS, LTD",
- [3]byte{0, 48, 38}: "HeiTel Digital Video GmbH",
- [3]byte{0, 48, 39}: "KERBANGO, INC.",
- [3]byte{0, 48, 40}: "FASE Saldatura srl",
- [3]byte{0, 48, 41}: "OPICOM",
- [3]byte{0, 48, 42}: "SOUTHERN INFORMATION",
- [3]byte{0, 48, 43}: "INALP NETWORKS, INC.",
- [3]byte{0, 48, 44}: "SYLANTRO SYSTEMS CORPORATION",
- [3]byte{0, 48, 45}: "QUANTUM BRIDGE COMMUNICATIONS",
- [3]byte{0, 48, 46}: "Hoft & Wessel AG",
- [3]byte{0, 48, 47}: "GE Aviation System",
- [3]byte{0, 48, 48}: "HARMONIX CORPORATION",
- [3]byte{0, 48, 49}: "LIGHTWAVE COMMUNICATIONS, INC.",
- [3]byte{0, 48, 50}: "MagicRam, Inc.",
- [3]byte{0, 48, 51}: "ORIENT TELECOM CO., LTD.",
- [3]byte{0, 48, 52}: "SET ENGINEERING",
- [3]byte{0, 48, 53}: "Corning Incorporated",
- [3]byte{0, 48, 54}: "RMP ELEKTRONIKSYSTEME GMBH",
- [3]byte{0, 48, 55}: "Packard Bell Nec Services",
- [3]byte{0, 48, 56}: "XCP, INC.",
- [3]byte{0, 48, 57}: "SOFTBOOK PRESS",
- [3]byte{0, 48, 58}: "MAATEL",
- [3]byte{0, 48, 59}: "PowerCom Technology",
- [3]byte{0, 48, 60}: "ONNTO CORP.",
- [3]byte{0, 48, 61}: "IVA CORPORATION",
- [3]byte{0, 48, 62}: "Radcom Ltd.",
- [3]byte{0, 48, 63}: "TurboComm Tech Inc.",
- [3]byte{0, 48, 64}: "Cisco Systems, Inc",
- [3]byte{0, 48, 65}: "SAEJIN T & M CO., LTD.",
- [3]byte{0, 48, 66}: "DeTeWe-Deutsche Telephonwerke",
- [3]byte{0, 48, 67}: "IDREAM TECHNOLOGIES, PTE. LTD.",
- [3]byte{0, 48, 68}: "CradlePoint, Inc",
- [3]byte{0, 48, 69}: "Village Networks, Inc. (VNI)",
- [3]byte{0, 48, 70}: "Controlled Electronic Manageme",
- [3]byte{0, 48, 71}: "NISSEI ELECTRIC CO., LTD.",
- [3]byte{0, 48, 72}: "Super Micro Computer, Inc.",
- [3]byte{0, 48, 73}: "BRYANT TECHNOLOGY, LTD.",
- [3]byte{0, 48, 74}: "Fraunhofer IPMS",
- [3]byte{0, 48, 75}: "ORBACOM SYSTEMS, INC.",
- [3]byte{0, 48, 76}: "APPIAN COMMUNICATIONS, INC.",
- [3]byte{0, 48, 77}: "ESI",
- [3]byte{0, 48, 78}: "BUSTEC PRODUCTION LTD.",
- [3]byte{0, 48, 79}: "PLANET Technology Corporation",
- [3]byte{0, 48, 80}: "Versa Technology",
- [3]byte{0, 48, 81}: "ORBIT AVIONIC & COMMUNICATION",
- [3]byte{0, 48, 82}: "ELASTIC NETWORKS",
- [3]byte{0, 48, 83}: "Basler AG",
- [3]byte{0, 48, 84}: "CASTLENET TECHNOLOGY, INC.",
- [3]byte{0, 48, 85}: "Renesas Technology America, Inc.",
- [3]byte{0, 48, 86}: "Beck IPC GmbH",
- [3]byte{0, 48, 87}: "QTelNet, Inc.",
- [3]byte{0, 48, 88}: "API MOTION",
- [3]byte{0, 48, 89}: "KONTRON COMPACT COMPUTERS AG",
- [3]byte{0, 48, 90}: "TELGEN CORPORATION",
- [3]byte{0, 48, 91}: "Toko Inc.",
- [3]byte{0, 48, 92}: "SMAR Laboratories Corp.",
- [3]byte{0, 48, 93}: "DIGITRA SYSTEMS, INC.",
- [3]byte{0, 48, 94}: "Abelko Innovation",
- [3]byte{0, 48, 95}: "Hasselblad",
- [3]byte{0, 48, 96}: "Powerfile, Inc.",
- [3]byte{0, 48, 97}: "MobyTEL",
- [3]byte{0, 48, 98}: "IP Video Networks Inc",
- [3]byte{0, 48, 99}: "SANTERA SYSTEMS, INC.",
- [3]byte{0, 48, 100}: "ADLINK TECHNOLOGY, INC.",
- [3]byte{0, 48, 101}: "Apple, Inc.",
- [3]byte{0, 48, 102}: "RFM",
- [3]byte{0, 48, 103}: "BIOSTAR Microtech Int'l Corp.",
- [3]byte{0, 48, 104}: "CYBERNETICS TECH. CO., LTD.",
- [3]byte{0, 48, 105}: "IMPACCT TECHNOLOGY CORP.",
- [3]byte{0, 48, 106}: "PENTA MEDIA CO., LTD.",
- [3]byte{0, 48, 107}: "CMOS SYSTEMS, INC.",
- [3]byte{0, 48, 108}: "Hitex Holding GmbH",
- [3]byte{0, 48, 109}: "LUCENT TECHNOLOGIES",
- [3]byte{0, 48, 110}: "Hewlett Packard",
- [3]byte{0, 48, 111}: "SEYEON TECH. CO., LTD.",
- [3]byte{0, 48, 112}: "1Net Corporation",
- [3]byte{0, 48, 113}: "Cisco Systems, Inc",
- [3]byte{0, 48, 114}: "Intellibyte Inc.",
- [3]byte{0, 48, 115}: "International Microsystems, In",
- [3]byte{0, 48, 116}: "EQUIINET LTD.",
- [3]byte{0, 48, 117}: "ADTECH",
- [3]byte{0, 48, 118}: "Akamba Corporation",
- [3]byte{0, 48, 119}: "ONPREM NETWORKS",
- [3]byte{0, 48, 120}: "Cisco Systems, Inc",
- [3]byte{0, 48, 121}: "CQOS, INC.",
- [3]byte{0, 48, 122}: "Advanced Technology & Systems",
- [3]byte{0, 48, 123}: "Cisco Systems, Inc",
- [3]byte{0, 48, 124}: "ADID SA",
- [3]byte{0, 48, 125}: "GRE AMERICA, INC.",
- [3]byte{0, 48, 126}: "Redflex Communication Systems",
- [3]byte{0, 48, 127}: "IRLAN LTD.",
- [3]byte{0, 48, 128}: "Cisco Systems, Inc",
- [3]byte{0, 48, 129}: "ALTOS C&C",
- [3]byte{0, 48, 130}: "TAIHAN ELECTRIC WIRE CO., LTD.",
- [3]byte{0, 48, 131}: "Ivron Systems",
- [3]byte{0, 48, 132}: "ALLIED TELESYN INTERNAIONAL",
- [3]byte{0, 48, 133}: "Cisco Systems, Inc",
- [3]byte{0, 48, 134}: "Transistor Devices, Inc.",
- [3]byte{0, 48, 135}: "VEGA GRIESHABER KG",
- [3]byte{0, 48, 136}: "Ericsson",
- [3]byte{0, 48, 137}: "Spectrapoint Wireless, LLC",
- [3]byte{0, 48, 138}: "NICOTRA SISTEMI S.P.A",
- [3]byte{0, 48, 139}: "Brix Networks",
- [3]byte{0, 48, 140}: "Quantum Corporation",
- [3]byte{0, 48, 141}: "Pinnacle Systems, Inc.",
- [3]byte{0, 48, 142}: "CROSS MATCH TECHNOLOGIES, INC.",
- [3]byte{0, 48, 143}: "MICRILOR, Inc.",
- [3]byte{0, 48, 144}: "CYRA TECHNOLOGIES, INC.",
- [3]byte{0, 48, 145}: "TAIWAN FIRST LINE ELEC. CORP.",
- [3]byte{0, 48, 146}: "ModuNORM GmbH",
- [3]byte{0, 48, 147}: "Sonnet Technologies, Inc",
- [3]byte{0, 48, 148}: "Cisco Systems, Inc",
- [3]byte{0, 48, 149}: "Procomp Informatics, Ltd.",
- [3]byte{0, 48, 150}: "Cisco Systems, Inc",
- [3]byte{0, 48, 151}: "AB Regin",
- [3]byte{0, 48, 152}: "Global Converging Technologies",
- [3]byte{0, 48, 153}: "BOENIG UND KALLENBACH OHG",
- [3]byte{0, 48, 154}: "ASTRO TERRA CORP.",
- [3]byte{0, 48, 155}: "Smartware",
- [3]byte{0, 48, 156}: "Timing Applications, Inc.",
- [3]byte{0, 48, 157}: "Nimble Microsystems, Inc.",
- [3]byte{0, 48, 158}: "WORKBIT CORPORATION.",
- [3]byte{0, 48, 159}: "AMBER NETWORKS",
- [3]byte{0, 48, 160}: "TYCO SUBMARINE SYSTEMS, LTD.",
- [3]byte{0, 48, 161}: "WEBGATE Inc.",
- [3]byte{0, 48, 162}: "Lightner Engineering",
- [3]byte{0, 48, 163}: "Cisco Systems, Inc",
- [3]byte{0, 48, 164}: "Woodwind Communications System",
- [3]byte{0, 48, 165}: "ACTIVE POWER",
- [3]byte{0, 48, 166}: "VIANET TECHNOLOGIES, LTD.",
- [3]byte{0, 48, 167}: "SCHWEITZER ENGINEERING",
- [3]byte{0, 48, 168}: "OL'E COMMUNICATIONS, INC.",
- [3]byte{0, 48, 169}: "Netiverse, Inc.",
- [3]byte{0, 48, 170}: "AXUS MICROSYSTEMS, INC.",
- [3]byte{0, 48, 171}: "DELTA NETWORKS, INC.",
- [3]byte{0, 48, 172}: "Systeme Lauer GmbH & Co., Ltd.",
- [3]byte{0, 48, 173}: "SHANGHAI COMMUNICATION",
- [3]byte{0, 48, 174}: "Times N System, Inc.",
- [3]byte{0, 48, 175}: "Honeywell GmbH",
- [3]byte{0, 48, 176}: "Convergenet Technologies",
- [3]byte{0, 48, 177}: "TrunkNet",
- [3]byte{0, 48, 178}: "L-3 Sonoma EO",
- [3]byte{0, 48, 179}: "San Valley Systems, Inc.",
- [3]byte{0, 48, 180}: "INTERSIL CORP.",
- [3]byte{0, 48, 181}: "Tadiran Microwave Networks",
- [3]byte{0, 48, 182}: "Cisco Systems, Inc",
- [3]byte{0, 48, 183}: "Teletrol Systems, Inc.",
- [3]byte{0, 48, 184}: "RiverDelta Networks",
- [3]byte{0, 48, 185}: "ECTEL",
- [3]byte{0, 48, 186}: "AC&T SYSTEM CO., LTD.",
- [3]byte{0, 48, 187}: "CacheFlow, Inc.",
- [3]byte{0, 48, 188}: "Optronic AG",
- [3]byte{0, 48, 189}: "BELKIN COMPONENTS",
- [3]byte{0, 48, 190}: "City-Net Technology, Inc.",
- [3]byte{0, 48, 191}: "MULTIDATA GMBH",
- [3]byte{0, 48, 192}: "Lara Technology, Inc.",
- [3]byte{0, 48, 193}: "Hewlett Packard",
- [3]byte{0, 48, 194}: "COMONE",
- [3]byte{0, 48, 195}: "FLUECKIGER ELEKTRONIK AG",
- [3]byte{0, 48, 196}: "Canon Imaging Systems Inc.",
- [3]byte{0, 48, 197}: "CADENCE DESIGN SYSTEMS, INC.",
- [3]byte{0, 48, 198}: "CONTROL SOLUTIONS, INC.",
- [3]byte{0, 48, 199}: "Macromate Corp.",
- [3]byte{0, 48, 200}: "GAD LINE, LTD.",
- [3]byte{0, 48, 201}: "LuxN, N",
- [3]byte{0, 48, 202}: "Discovery Com",
- [3]byte{0, 48, 203}: "OMNI FLOW COMPUTERS, INC.",
- [3]byte{0, 48, 204}: "Tenor Networks, Inc.",
- [3]byte{0, 48, 205}: "CONEXANT SYSTEMS, INC.",
- [3]byte{0, 48, 206}: "Zaffire",
- [3]byte{0, 48, 207}: "TWO TECHNOLOGIES, INC.",
- [3]byte{0, 48, 208}: "Tellabs",
- [3]byte{0, 48, 209}: "INOVA CORPORATION",
- [3]byte{0, 48, 210}: "WIN TECHNOLOGIES, CO., LTD.",
- [3]byte{0, 48, 211}: "Agilent Technologies, Inc.",
- [3]byte{0, 48, 212}: "AAE Systems, Inc.",
- [3]byte{0, 48, 213}: "DResearch GmbH",
- [3]byte{0, 48, 214}: "MSC VERTRIEBS GMBH",
- [3]byte{0, 48, 215}: "Innovative Systems, L.L.C.",
- [3]byte{0, 48, 216}: "SITEK",
- [3]byte{0, 48, 217}: "DATACORE SOFTWARE CORP.",
- [3]byte{0, 48, 218}: "Comtrend Corporation",
- [3]byte{0, 48, 219}: "Mindready Solutions, Inc.",
- [3]byte{0, 48, 220}: "RIGHTECH CORPORATION",
- [3]byte{0, 48, 221}: "INDIGITA CORPORATION",
- [3]byte{0, 48, 222}: "WAGO Kontakttechnik GmbH",
- [3]byte{0, 48, 223}: "KB/TEL TELECOMUNICACIONES",
- [3]byte{0, 48, 224}: "OXFORD SEMICONDUCTOR LTD.",
- [3]byte{0, 48, 225}: "Network Equipment Technologies, Inc.",
- [3]byte{0, 48, 226}: "GARNET SYSTEMS CO., LTD.",
- [3]byte{0, 48, 227}: "SEDONA NETWORKS CORP.",
- [3]byte{0, 48, 228}: "CHIYODA SYSTEM RIKEN",
- [3]byte{0, 48, 229}: "Amper Datos S.A.",
- [3]byte{0, 48, 230}: "Draeger Medical Systems, Inc.",
- [3]byte{0, 48, 231}: "CNF MOBILE SOLUTIONS, INC.",
- [3]byte{0, 48, 232}: "ENSIM CORP.",
- [3]byte{0, 48, 233}: "GMA COMMUNICATION MANUFACT'G",
- [3]byte{0, 48, 234}: "TeraForce Technology Corporation",
- [3]byte{0, 48, 235}: "TURBONET COMMUNICATIONS, INC.",
- [3]byte{0, 48, 236}: "BORGARDT",
- [3]byte{0, 48, 237}: "Expert Magnetics Corp.",
- [3]byte{0, 48, 238}: "DSG Technology, Inc.",
- [3]byte{0, 48, 239}: "NEON TECHNOLOGY, INC.",
- [3]byte{0, 48, 240}: "Uniform Industrial Corp.",
- [3]byte{0, 48, 241}: "Accton Technology Corp",
- [3]byte{0, 48, 242}: "Cisco Systems, Inc",
- [3]byte{0, 48, 243}: "At Work Computers",
- [3]byte{0, 48, 244}: "STARDOT TECHNOLOGIES",
- [3]byte{0, 48, 245}: "Wild Lab. Ltd.",
- [3]byte{0, 48, 246}: "SECURELOGIX CORPORATION",
- [3]byte{0, 48, 247}: "RAMIX INC.",
- [3]byte{0, 48, 248}: "Dynapro Systems, Inc.",
- [3]byte{0, 48, 249}: "Sollae Systems Co., Ltd.",
- [3]byte{0, 48, 250}: "TELICA, INC.",
- [3]byte{0, 48, 251}: "AZS Technology AG",
- [3]byte{0, 48, 252}: "Terawave Communications, Inc.",
- [3]byte{0, 48, 253}: "INTEGRATED SYSTEMS DESIGN",
- [3]byte{0, 48, 254}: "DSA GmbH",
- [3]byte{0, 48, 255}: "DataFab Systems Inc.",
- [3]byte{0, 49, 70}: "Juniper Networks",
- [3]byte{0, 50, 58}: "so-logic",
- [3]byte{0, 51, 108}: "SynapSense Corporation",
- [3]byte{0, 52, 218}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 52, 241}: "Radicom Research, Inc.",
- [3]byte{0, 52, 254}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 53, 26}: "Cisco Systems, Inc",
- [3]byte{0, 53, 50}: "Electro-Metrics Corporation",
- [3]byte{0, 53, 96}: "Rosen Aviation",
- [3]byte{0, 54, 118}: "ARRIS Group, Inc.",
- [3]byte{0, 54, 248}: "Conti Temic microelectronic GmbH",
- [3]byte{0, 54, 254}: "SuperVision",
- [3]byte{0, 55, 109}: "Murata Manufacturing Co., Ltd.",
- [3]byte{0, 55, 183}: "Sagemcom Broadband SAS",
- [3]byte{0, 56, 223}: "Cisco Systems, Inc",
- [3]byte{0, 58, 125}: "Cisco Systems, Inc",
- [3]byte{0, 58, 152}: "Cisco Systems, Inc",
- [3]byte{0, 58, 153}: "Cisco Systems, Inc",
- [3]byte{0, 58, 154}: "Cisco Systems, Inc",
- [3]byte{0, 58, 155}: "Cisco Systems, Inc",
- [3]byte{0, 58, 156}: "Cisco Systems, Inc",
- [3]byte{0, 58, 157}: "NEC Platforms, Ltd.",
- [3]byte{0, 58, 175}: "BlueBit Ltd.",
- [3]byte{0, 60, 197}: "WONWOO Engineering Co., Ltd",
- [3]byte{0, 61, 65}: "Hatteland Computer AS",
- [3]byte{0, 62, 225}: "Apple, Inc.",
- [3]byte{0, 64, 0}: "PCI COMPONENTES DA AMZONIA LTD",
- [3]byte{0, 64, 1}: "Zero One Technology Co. Ltd.",
- [3]byte{0, 64, 2}: "PERLE SYSTEMS LIMITED",
- [3]byte{0, 64, 3}: "Emerson Process Management Power & Water Solutions, Inc.",
- [3]byte{0, 64, 4}: "ICM CO. LTD.",
- [3]byte{0, 64, 5}: "ANI COMMUNICATIONS INC.",
- [3]byte{0, 64, 6}: "SAMPO TECHNOLOGY CORPORATION",
- [3]byte{0, 64, 7}: "TELMAT INFORMATIQUE",
- [3]byte{0, 64, 8}: "A PLUS INFO CORPORATION",
- [3]byte{0, 64, 9}: "TACHIBANA TECTRON CO., LTD.",
- [3]byte{0, 64, 10}: "PIVOTAL TECHNOLOGIES, INC.",
- [3]byte{0, 64, 11}: "Cisco Systems, Inc",
- [3]byte{0, 64, 12}: "GENERAL MICRO SYSTEMS, INC.",
- [3]byte{0, 64, 13}: "LANNET DATA COMMUNICATIONS,LTD",
- [3]byte{0, 64, 14}: "MEMOTEC, INC.",
- [3]byte{0, 64, 15}: "DATACOM TECHNOLOGIES",
- [3]byte{0, 64, 16}: "SONIC SYSTEMS, INC.",
- [3]byte{0, 64, 17}: "ANDOVER CONTROLS CORPORATION",
- [3]byte{0, 64, 18}: "WINDATA, INC.",
- [3]byte{0, 64, 19}: "NTT DATA COMM. SYSTEMS CORP.",
- [3]byte{0, 64, 20}: "COMSOFT GMBH",
- [3]byte{0, 64, 21}: "ASCOM INFRASYS AG",
- [3]byte{0, 64, 22}: "ADC - Global Connectivity Solutions Division",
- [3]byte{0, 64, 23}: "Silex Technology America",
- [3]byte{0, 64, 24}: "ADOBE SYSTEMS, INC.",
- [3]byte{0, 64, 25}: "AEON SYSTEMS, INC.",
- [3]byte{0, 64, 26}: "FUJI ELECTRIC CO., LTD.",
- [3]byte{0, 64, 27}: "PRINTER SYSTEMS CORP.",
- [3]byte{0, 64, 28}: "AST RESEARCH, INC.",
- [3]byte{0, 64, 29}: "INVISIBLE SOFTWARE, INC.",
- [3]byte{0, 64, 30}: "ICC",
- [3]byte{0, 64, 31}: "COLORGRAPH LTD",
- [3]byte{0, 64, 32}: "CommScope Inc",
- [3]byte{0, 64, 33}: "RASTER GRAPHICS",
- [3]byte{0, 64, 34}: "KLEVER COMPUTERS, INC.",
- [3]byte{0, 64, 35}: "LOGIC CORPORATION",
- [3]byte{0, 64, 36}: "COMPAC INC.",
- [3]byte{0, 64, 37}: "MOLECULAR DYNAMICS",
- [3]byte{0, 64, 38}: "BUFFALO.INC",
- [3]byte{0, 64, 39}: "SMC MASSACHUSETTS, INC.",
- [3]byte{0, 64, 40}: "NETCOMM LIMITED",
- [3]byte{0, 64, 41}: "Compex",
- [3]byte{0, 64, 42}: "Canoga Perkins Corporation",
- [3]byte{0, 64, 43}: "TRIGEM COMPUTER, INC.",
- [3]byte{0, 64, 44}: "ISIS DISTRIBUTED SYSTEMS, INC.",
- [3]byte{0, 64, 45}: "HARRIS ADACOM CORPORATION",
- [3]byte{0, 64, 46}: "PRECISION SOFTWARE, INC.",
- [3]byte{0, 64, 47}: "XLNT DESIGNS INC.",
- [3]byte{0, 64, 48}: "GK COMPUTER",
- [3]byte{0, 64, 49}: "KOKUSAI ELECTRIC CO., LTD",
- [3]byte{0, 64, 50}: "DIGITAL COMMUNICATIONS",
- [3]byte{0, 64, 51}: "ADDTRON TECHNOLOGY CO., LTD.",
- [3]byte{0, 64, 52}: "BUSTEK CORPORATION",
- [3]byte{0, 64, 53}: "OPCOM",
- [3]byte{0, 64, 54}: "Zoom Telephonics, Inc",
- [3]byte{0, 64, 55}: "SEA-ILAN, INC.",
- [3]byte{0, 64, 56}: "TALENT ELECTRIC INCORPORATED",
- [3]byte{0, 64, 57}: "OPTEC DAIICHI DENKO CO., LTD.",
- [3]byte{0, 64, 58}: "IMPACT TECHNOLOGIES",
- [3]byte{0, 64, 59}: "SYNERJET INTERNATIONAL CORP.",
- [3]byte{0, 64, 60}: "FORKS, INC.",
- [3]byte{0, 64, 61}: "Teradata Corporation",
- [3]byte{0, 64, 62}: "RASTER OPS CORPORATION",
- [3]byte{0, 64, 63}: "SSANGYONG COMPUTER SYSTEMS",
- [3]byte{0, 64, 64}: "RING ACCESS, INC.",
- [3]byte{0, 64, 65}: "FUJIKURA LTD.",
- [3]byte{0, 64, 66}: "N.A.T. GMBH",
- [3]byte{0, 64, 67}: "Nokia Siemens Networks GmbH & Co. KG.",
- [3]byte{0, 64, 68}: "QNIX COMPUTER CO., LTD.",
- [3]byte{0, 64, 69}: "TWINHEAD CORPORATION",
- [3]byte{0, 64, 70}: "UDC RESEARCH LIMITED",
- [3]byte{0, 64, 71}: "WIND RIVER SYSTEMS",
- [3]byte{0, 64, 72}: "SMD INFORMATICA S.A.",
- [3]byte{0, 64, 73}: "Roche Diagnostics International Ltd.",
- [3]byte{0, 64, 74}: "WEST AUSTRALIAN DEPARTMENT",
- [3]byte{0, 64, 75}: "MAPLE COMPUTER SYSTEMS",
- [3]byte{0, 64, 76}: "HYPERTEC PTY LTD.",
- [3]byte{0, 64, 77}: "TELECOMMUNICATIONS TECHNIQUES",
- [3]byte{0, 64, 78}: "FLUENT, INC.",
- [3]byte{0, 64, 79}: "SPACE & NAVAL WARFARE SYSTEMS",
- [3]byte{0, 64, 80}: "IRONICS, INCORPORATED",
- [3]byte{0, 64, 81}: "GRACILIS, INC.",
- [3]byte{0, 64, 82}: "STAR TECHNOLOGIES, INC.",
- [3]byte{0, 64, 83}: "AMPRO COMPUTERS",
- [3]byte{0, 64, 84}: "CONNECTION MACHINES SERVICES",
- [3]byte{0, 64, 85}: "METRONIX GMBH",
- [3]byte{0, 64, 86}: "MCM JAPAN LTD.",
- [3]byte{0, 64, 87}: "LOCKHEED - SANDERS",
- [3]byte{0, 64, 88}: "KRONOS, INC.",
- [3]byte{0, 64, 89}: "YOSHIDA KOGYO K. K.",
- [3]byte{0, 64, 90}: "GOLDSTAR INFORMATION & COMM.",
- [3]byte{0, 64, 91}: "FUNASSET LIMITED",
- [3]byte{0, 64, 92}: "FUTURE SYSTEMS, INC.",
- [3]byte{0, 64, 93}: "STAR-TEK, INC.",
- [3]byte{0, 64, 94}: "NORTH HILLS ISRAEL",
- [3]byte{0, 64, 95}: "AFE COMPUTERS LTD.",
- [3]byte{0, 64, 96}: "COMENDEC LTD",
- [3]byte{0, 64, 97}: "DATATECH ENTERPRISES CO., LTD.",
- [3]byte{0, 64, 98}: "E-SYSTEMS, INC./GARLAND DIV.",
- [3]byte{0, 64, 99}: "VIA TECHNOLOGIES, INC.",
- [3]byte{0, 64, 100}: "KLA INSTRUMENTS CORPORATION",
- [3]byte{0, 64, 101}: "GTE SPACENET",
- [3]byte{0, 64, 102}: "APRESIA Systems Ltd",
- [3]byte{0, 64, 103}: "OMNIBYTE CORPORATION",
- [3]byte{0, 64, 104}: "EXTENDED SYSTEMS",
- [3]byte{0, 64, 105}: "LEMCOM SYSTEMS, INC.",
- [3]byte{0, 64, 106}: "KENTEK INFORMATION SYSTEMS,INC",
- [3]byte{0, 64, 107}: "SYSGEN",
- [3]byte{0, 64, 108}: "COPERNIQUE",
- [3]byte{0, 64, 109}: "LANCO, INC.",
- [3]byte{0, 64, 110}: "COROLLARY, INC.",
- [3]byte{0, 64, 111}: "SYNC RESEARCH INC.",
- [3]byte{0, 64, 112}: "INTERWARE CO., LTD.",
- [3]byte{0, 64, 113}: "ATM COMPUTER GMBH",
- [3]byte{0, 64, 114}: "Applied Innovation Inc.",
- [3]byte{0, 64, 115}: "BASS ASSOCIATES",
- [3]byte{0, 64, 116}: "CABLE AND WIRELESS",
- [3]byte{0, 64, 117}: "Tattile SRL",
- [3]byte{0, 64, 118}: "Sun Conversion Technologies",
- [3]byte{0, 64, 119}: "MAXTON TECHNOLOGY CORPORATION",
- [3]byte{0, 64, 120}: "WEARNES AUTOMATION PTE LTD",
- [3]byte{0, 64, 121}: "JUKO MANUFACTURE COMPANY, LTD.",
- [3]byte{0, 64, 122}: "SOCIETE D'EXPLOITATION DU CNIT",
- [3]byte{0, 64, 123}: "SCIENTIFIC ATLANTA",
- [3]byte{0, 64, 124}: "QUME CORPORATION",
- [3]byte{0, 64, 125}: "EXTENSION TECHNOLOGY CORP.",
- [3]byte{0, 64, 126}: "EVERGREEN SYSTEMS, INC.",
- [3]byte{0, 64, 127}: "FLIR Systems",
- [3]byte{0, 64, 128}: "ATHENIX CORPORATION",
- [3]byte{0, 64, 129}: "MANNESMANN SCANGRAPHIC GMBH",
- [3]byte{0, 64, 130}: "LABORATORY EQUIPMENT CORP.",
- [3]byte{0, 64, 131}: "TDA INDUSTRIA DE PRODUTOS",
- [3]byte{0, 64, 132}: "HONEYWELL ACS",
- [3]byte{0, 64, 133}: "SAAB INSTRUMENTS AB",
- [3]byte{0, 64, 134}: "MICHELS & KLEBERHOFF COMPUTER",
- [3]byte{0, 64, 135}: "UBITREX CORPORATION",
- [3]byte{0, 64, 136}: "MOBIUS TECHNOLOGIES, INC.",
- [3]byte{0, 64, 137}: "MEIDENSHA CORPORATION",
- [3]byte{0, 64, 138}: "TPS TELEPROCESSING SYS. GMBH",
- [3]byte{0, 64, 139}: "RAYLAN CORPORATION",
- [3]byte{0, 64, 140}: "AXIS COMMUNICATIONS AB",
- [3]byte{0, 64, 141}: "THE GOODYEAR TIRE & RUBBER CO.",
- [3]byte{0, 64, 142}: "Tattile SRL",
- [3]byte{0, 64, 143}: "WM-DATA MINFO AB",
- [3]byte{0, 64, 144}: "ANSEL COMMUNICATIONS",
- [3]byte{0, 64, 145}: "PROCOMP INDUSTRIA ELETRONICA",
- [3]byte{0, 64, 146}: "ASP COMPUTER PRODUCTS, INC.",
- [3]byte{0, 64, 147}: "PAXDATA NETWORKS LTD.",
- [3]byte{0, 64, 148}: "SHOGRAPHICS, INC.",
- [3]byte{0, 64, 149}: "R.P.T. INTERGROUPS INT'L LTD.",
- [3]byte{0, 64, 150}: "Cisco Systems, Inc",
- [3]byte{0, 64, 151}: "DATEX DIVISION OF",
- [3]byte{0, 64, 152}: "DRESSLER GMBH & CO.",
- [3]byte{0, 64, 153}: "NEWGEN SYSTEMS CORP.",
- [3]byte{0, 64, 154}: "NETWORK EXPRESS, INC.",
- [3]byte{0, 64, 155}: "HAL COMPUTER SYSTEMS INC.",
- [3]byte{0, 64, 156}: "TRANSWARE",
- [3]byte{0, 64, 157}: "DIGIBOARD, INC.",
- [3]byte{0, 64, 158}: "CONCURRENT TECHNOLOGIES LTD.",
- [3]byte{0, 64, 159}: "Telco Systems, Inc.",
- [3]byte{0, 64, 160}: "GOLDSTAR CO., LTD.",
- [3]byte{0, 64, 161}: "ERGO COMPUTING",
- [3]byte{0, 64, 162}: "KINGSTAR TECHNOLOGY INC.",
- [3]byte{0, 64, 163}: "MICROUNITY SYSTEMS ENGINEERING",
- [3]byte{0, 64, 164}: "ROSE ELECTRONICS",
- [3]byte{0, 64, 165}: "CLINICOMP INTL.",
- [3]byte{0, 64, 166}: "Cray, Inc.",
- [3]byte{0, 64, 167}: "ITAUTEC PHILCO S.A.",
- [3]byte{0, 64, 168}: "IMF INTERNATIONAL LTD.",
- [3]byte{0, 64, 169}: "DATACOM INC.",
- [3]byte{0, 64, 170}: "Valmet Automation",
- [3]byte{0, 64, 171}: "ROLAND DG CORPORATION",
- [3]byte{0, 64, 172}: "SUPER WORKSTATION, INC.",
- [3]byte{0, 64, 173}: "SMA REGELSYSTEME GMBH",
- [3]byte{0, 64, 174}: "DELTA CONTROLS, INC.",
- [3]byte{0, 64, 175}: "DIGITAL PRODUCTS, INC.",
- [3]byte{0, 64, 176}: "BYTEX CORPORATION, ENGINEERING",
- [3]byte{0, 64, 177}: "CODONICS INC.",
- [3]byte{0, 64, 178}: "SYSTEMFORSCHUNG",
- [3]byte{0, 64, 179}: "ParTech Inc.",
- [3]byte{0, 64, 180}: "NEXTCOM K.K.",
- [3]byte{0, 64, 181}: "VIDEO TECHNOLOGY COMPUTERS LTD",
- [3]byte{0, 64, 182}: "COMPUTERM CORPORATION",
- [3]byte{0, 64, 183}: "STEALTH COMPUTER SYSTEMS",
- [3]byte{0, 64, 184}: "IDEA ASSOCIATES",
- [3]byte{0, 64, 185}: "MACQ ELECTRONIQUE SA",
- [3]byte{0, 64, 186}: "ALLIANT COMPUTER SYSTEMS CORP.",
- [3]byte{0, 64, 187}: "GOLDSTAR CABLE CO., LTD.",
- [3]byte{0, 64, 188}: "ALGORITHMICS LTD.",
- [3]byte{0, 64, 189}: "STARLIGHT NETWORKS, INC.",
- [3]byte{0, 64, 190}: "BOEING DEFENSE & SPACE",
- [3]byte{0, 64, 191}: "CHANNEL SYSTEMS INTERN'L INC.",
- [3]byte{0, 64, 192}: "VISTA CONTROLS CORPORATION",
- [3]byte{0, 64, 193}: "BIZERBA-WERKE WILHEIM KRAUT",
- [3]byte{0, 64, 194}: "APPLIED COMPUTING DEVICES",
- [3]byte{0, 64, 195}: "FISCHER AND PORTER CO.",
- [3]byte{0, 64, 196}: "KINKEI SYSTEM CORPORATION",
- [3]byte{0, 64, 197}: "MICOM COMMUNICATIONS INC.",
- [3]byte{0, 64, 198}: "FIBERNET RESEARCH, INC.",
- [3]byte{0, 64, 199}: "RUBY TECH CORPORATION",
- [3]byte{0, 64, 200}: "MILAN TECHNOLOGY CORPORATION",
- [3]byte{0, 64, 201}: "NCUBE",
- [3]byte{0, 64, 202}: "FIRST INTERNAT'L COMPUTER, INC",
- [3]byte{0, 64, 203}: "LANWAN TECHNOLOGIES",
- [3]byte{0, 64, 204}: "SILCOM MANUF'G TECHNOLOGY INC.",
- [3]byte{0, 64, 205}: "TERA MICROSYSTEMS, INC.",
- [3]byte{0, 64, 206}: "NET-SOURCE, INC.",
- [3]byte{0, 64, 207}: "STRAWBERRY TREE, INC.",
- [3]byte{0, 64, 208}: "MITAC INTERNATIONAL CORP.",
- [3]byte{0, 64, 209}: "FUKUDA DENSHI CO., LTD.",
- [3]byte{0, 64, 210}: "PAGINE CORPORATION",
- [3]byte{0, 64, 211}: "KIMPSION INTERNATIONAL CORP.",
- [3]byte{0, 64, 212}: "GAGE TALKER CORP.",
- [3]byte{0, 64, 213}: "Sartorius Mechatronics T&H GmbH",
- [3]byte{0, 64, 214}: "LOCAMATION B.V.",
- [3]byte{0, 64, 215}: "STUDIO GEN INC.",
- [3]byte{0, 64, 216}: "OCEAN OFFICE AUTOMATION LTD.",
- [3]byte{0, 64, 217}: "AMERICAN MEGATRENDS INC.",
- [3]byte{0, 64, 218}: "TELSPEC LTD",
- [3]byte{0, 64, 219}: "ADVANCED TECHNICAL SOLUTIONS",
- [3]byte{0, 64, 220}: "TRITEC ELECTRONIC GMBH",
- [3]byte{0, 64, 221}: "HONG TECHNOLOGIES",
- [3]byte{0, 64, 222}: "Elsag Datamat spa",
- [3]byte{0, 64, 223}: "DIGALOG SYSTEMS, INC.",
- [3]byte{0, 64, 224}: "ATOMWIDE LTD.",
- [3]byte{0, 64, 225}: "MARNER INTERNATIONAL, INC.",
- [3]byte{0, 64, 226}: "MESA RIDGE TECHNOLOGIES, INC.",
- [3]byte{0, 64, 227}: "QUIN SYSTEMS LTD",
- [3]byte{0, 64, 228}: "E-M TECHNOLOGY, INC.",
- [3]byte{0, 64, 229}: "SYBUS CORPORATION",
- [3]byte{0, 64, 230}: "C.A.E.N.",
- [3]byte{0, 64, 231}: "ARNOS INSTRUMENTS & COMPUTER",
- [3]byte{0, 64, 232}: "CHARLES RIVER DATA SYSTEMS,INC",
- [3]byte{0, 64, 233}: "ACCORD SYSTEMS, INC.",
- [3]byte{0, 64, 234}: "PLAIN TREE SYSTEMS INC",
- [3]byte{0, 64, 235}: "MARTIN MARIETTA CORPORATION",
- [3]byte{0, 64, 236}: "MIKASA SYSTEM ENGINEERING",
- [3]byte{0, 64, 237}: "NETWORK CONTROLS INT'NATL INC.",
- [3]byte{0, 64, 238}: "OPTIMEM",
- [3]byte{0, 64, 239}: "HYPERCOM, INC.",
- [3]byte{0, 64, 240}: "MicroBrain,Inc.",
- [3]byte{0, 64, 241}: "CHUO ELECTRONICS CO., LTD.",
- [3]byte{0, 64, 242}: "JANICH & KLASS COMPUTERTECHNIK",
- [3]byte{0, 64, 243}: "NETCOR",
- [3]byte{0, 64, 244}: "CAMEO COMMUNICATIONS, INC.",
- [3]byte{0, 64, 245}: "OEM ENGINES",
- [3]byte{0, 64, 246}: "KATRON COMPUTERS INC.",
- [3]byte{0, 64, 247}: "Polaroid Corporation",
- [3]byte{0, 64, 248}: "SYSTEMHAUS DISCOM",
- [3]byte{0, 64, 249}: "COMBINET",
- [3]byte{0, 64, 250}: "MICROBOARDS, INC.",
- [3]byte{0, 64, 251}: "CASCADE COMMUNICATIONS",
- [3]byte{0, 64, 252}: "IBR COMPUTER TECHNIK GMBH",
- [3]byte{0, 64, 253}: "LXE",
- [3]byte{0, 64, 254}: "SYMPLEX COMMUNICATIONS",
- [3]byte{0, 64, 255}: "TELEBIT CORPORATION",
- [3]byte{0, 65, 180}: "Wuxi Zhongxing Optoelectronics Technology Co.,Ltd.",
- [3]byte{0, 65, 210}: "Cisco Systems, Inc",
- [3]byte{0, 66, 82}: "RLX Technologies",
- [3]byte{0, 66, 90}: "Cisco Systems, Inc",
- [3]byte{0, 66, 104}: "Cisco Systems, Inc",
- [3]byte{0, 67, 255}: "KETRON S.R.L.",
- [3]byte{0, 69, 1}: "Versus Technology, Inc.",
- [3]byte{0, 70, 75}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 74, 119}: "zte corporation",
- [3]byte{0, 75, 243}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{0, 77, 50}: "Andon Health Co.,Ltd.",
- [3]byte{0, 80, 0}: "NEXO COMMUNICATIONS, INC.",
- [3]byte{0, 80, 1}: "YAMASHITA SYSTEMS CORP.",
- [3]byte{0, 80, 2}: "OMNISEC AG",
- [3]byte{0, 80, 3}: "Xrite Inc",
- [3]byte{0, 80, 4}: "3COM CORPORATION",
- [3]byte{0, 80, 6}: "TAC AB",
- [3]byte{0, 80, 7}: "SIEMENS TELECOMMUNICATION SYSTEMS LIMITED",
- [3]byte{0, 80, 8}: "TIVA MICROCOMPUTER CORP. (TMC)",
- [3]byte{0, 80, 9}: "PHILIPS BROADBAND NETWORKS",
- [3]byte{0, 80, 10}: "IRIS TECHNOLOGIES, INC.",
- [3]byte{0, 80, 11}: "Cisco Systems, Inc",
- [3]byte{0, 80, 12}: "e-Tek Labs, Inc.",
- [3]byte{0, 80, 13}: "SATORI ELECTORIC CO., LTD.",
- [3]byte{0, 80, 14}: "CHROMATIS NETWORKS, INC.",
- [3]byte{0, 80, 15}: "Cisco Systems, Inc",
- [3]byte{0, 80, 16}: "NovaNET Learning, Inc.",
- [3]byte{0, 80, 18}: "CBL - GMBH",
- [3]byte{0, 80, 19}: "Seagate Cloud Systems Inc",
- [3]byte{0, 80, 20}: "Cisco Systems, Inc",
- [3]byte{0, 80, 21}: "BRIGHT STAR ENGINEERING",
- [3]byte{0, 80, 22}: "Molex Canada Ltd",
- [3]byte{0, 80, 23}: "RSR S.R.L.",
- [3]byte{0, 80, 24}: "AMIT, Inc.",
- [3]byte{0, 80, 25}: "SPRING TIDE NETWORKS, INC.",
- [3]byte{0, 80, 26}: "IQinVision",
- [3]byte{0, 80, 27}: "ABL CANADA, INC.",
- [3]byte{0, 80, 28}: "JATOM SYSTEMS, INC.",
- [3]byte{0, 80, 30}: "Grass Valley, A Belden Brand",
- [3]byte{0, 80, 31}: "MRG SYSTEMS, LTD.",
- [3]byte{0, 80, 32}: "MEDIASTAR CO., LTD.",
- [3]byte{0, 80, 33}: "EIS INTERNATIONAL, INC.",
- [3]byte{0, 80, 34}: "ZONET TECHNOLOGY, INC.",
- [3]byte{0, 80, 35}: "PG DESIGN ELECTRONICS, INC.",
- [3]byte{0, 80, 36}: "NAVIC SYSTEMS, INC.",
- [3]byte{0, 80, 38}: "COSYSTEMS, INC.",
- [3]byte{0, 80, 39}: "GENICOM CORPORATION",
- [3]byte{0, 80, 40}: "AVAL COMMUNICATIONS",
- [3]byte{0, 80, 41}: "1394 PRINTER WORKING GROUP",
- [3]byte{0, 80, 42}: "Cisco Systems, Inc",
- [3]byte{0, 80, 43}: "GENRAD LTD.",
- [3]byte{0, 80, 44}: "SOYO COMPUTER, INC.",
- [3]byte{0, 80, 45}: "ACCEL, INC.",
- [3]byte{0, 80, 46}: "CAMBEX CORPORATION",
- [3]byte{0, 80, 47}: "TollBridge Technologies, Inc.",
- [3]byte{0, 80, 48}: "FUTURE PLUS SYSTEMS",
- [3]byte{0, 80, 49}: "AEROFLEX LABORATORIES, INC.",
- [3]byte{0, 80, 50}: "PICAZO COMMUNICATIONS, INC.",
- [3]byte{0, 80, 51}: "MAYAN NETWORKS",
- [3]byte{0, 80, 54}: "NETCAM, LTD.",
- [3]byte{0, 80, 55}: "KOGA ELECTRONICS CO.",
- [3]byte{0, 80, 56}: "DAIN TELECOM CO., LTD.",
- [3]byte{0, 80, 57}: "MARINER NETWORKS",
- [3]byte{0, 80, 58}: "DATONG ELECTRONICS LTD.",
- [3]byte{0, 80, 59}: "MEDIAFIRE CORPORATION",
- [3]byte{0, 80, 60}: "TSINGHUA NOVEL ELECTRONICS",
- [3]byte{0, 80, 62}: "Cisco Systems, Inc",
- [3]byte{0, 80, 63}: "ANCHOR GAMES",
- [3]byte{0, 80, 64}: "Panasonic Electric Works Co., Ltd.",
- [3]byte{0, 80, 65}: "Coretronic Corporation",
- [3]byte{0, 80, 66}: "SCI MANUFACTURING SINGAPORE PTE, LTD.",
- [3]byte{0, 80, 67}: "MARVELL SEMICONDUCTOR, INC.",
- [3]byte{0, 80, 68}: "ASACA CORPORATION",
- [3]byte{0, 80, 69}: "RIOWORKS SOLUTIONS, INC.",
- [3]byte{0, 80, 70}: "MENICX INTERNATIONAL CO., LTD.",
- [3]byte{0, 80, 71}: "Private",
- [3]byte{0, 80, 72}: "INFOLIBRIA",
- [3]byte{0, 80, 73}: "Arbor Networks Inc",
- [3]byte{0, 80, 74}: "ELTECO A.S.",
- [3]byte{0, 80, 75}: "BARCONET N.V.",
- [3]byte{0, 80, 76}: "Galil Motion Control",
- [3]byte{0, 80, 77}: "Tokyo Electron Device Limited",
- [3]byte{0, 80, 78}: "SIERRA MONITOR CORP.",
- [3]byte{0, 80, 79}: "OLENCOM ELECTRONICS",
- [3]byte{0, 80, 80}: "Cisco Systems, Inc",
- [3]byte{0, 80, 81}: "IWATSU ELECTRIC CO., LTD.",
- [3]byte{0, 80, 82}: "TIARA NETWORKS, INC.",
- [3]byte{0, 80, 83}: "Cisco Systems, Inc",
- [3]byte{0, 80, 84}: "Cisco Systems, Inc",
- [3]byte{0, 80, 85}: "DOMS A/S",
- [3]byte{0, 80, 86}: "VMware, Inc.",
- [3]byte{0, 80, 87}: "BROADBAND ACCESS SYSTEMS",
- [3]byte{0, 80, 88}: "Sangoma Technologies",
- [3]byte{0, 80, 89}: "iBAHN",
- [3]byte{0, 80, 90}: "NETWORK ALCHEMY, INC.",
- [3]byte{0, 80, 91}: "KAWASAKI LSI U.S.A., INC.",
- [3]byte{0, 80, 92}: "TUNDO CORPORATION",
- [3]byte{0, 80, 94}: "DIGITEK MICROLOGIC S.A.",
- [3]byte{0, 80, 95}: "BRAND INNOVATORS",
- [3]byte{0, 80, 96}: "TANDBERG TELECOM AS",
- [3]byte{0, 80, 98}: "KOUWELL ELECTRONICS CORP. **",
- [3]byte{0, 80, 99}: "OY COMSEL SYSTEM AB",
- [3]byte{0, 80, 100}: "CAE ELECTRONICS",
- [3]byte{0, 80, 101}: "TDK-Lambda Corporation",
- [3]byte{0, 80, 102}: "AtecoM GmbH advanced telecomunication modules",
- [3]byte{0, 80, 103}: "AEROCOMM, INC.",
- [3]byte{0, 80, 104}: "ELECTRONIC INDUSTRIES ASSOCIATION",
- [3]byte{0, 80, 105}: "PixStream Incorporated",
- [3]byte{0, 80, 106}: "EDEVA, INC.",
- [3]byte{0, 80, 107}: "SPX-ATEG",
- [3]byte{0, 80, 108}: "Beijer Electronics Products AB",
- [3]byte{0, 80, 109}: "VIDEOJET SYSTEMS",
- [3]byte{0, 80, 110}: "CORDER ENGINEERING CORPORATION",
- [3]byte{0, 80, 111}: "G-CONNECT",
- [3]byte{0, 80, 112}: "CHAINTECH COMPUTER CO., LTD.",
- [3]byte{0, 80, 113}: "AIWA CO., LTD.",
- [3]byte{0, 80, 114}: "CORVIS CORPORATION",
- [3]byte{0, 80, 115}: "Cisco Systems, Inc",
- [3]byte{0, 80, 116}: "ADVANCED HI-TECH CORP.",
- [3]byte{0, 80, 117}: "KESTREL SOLUTIONS",
- [3]byte{0, 80, 118}: "IBM Corp",
- [3]byte{0, 80, 119}: "PROLIFIC TECHNOLOGY, INC.",
- [3]byte{0, 80, 120}: "MEGATON HOUSE, LTD.",
- [3]byte{0, 80, 121}: "Private",
- [3]byte{0, 80, 122}: "XPEED, INC.",
- [3]byte{0, 80, 123}: "MERLOT COMMUNICATIONS",
- [3]byte{0, 80, 124}: "VIDEOCON AG",
- [3]byte{0, 80, 125}: "IFP",
- [3]byte{0, 80, 126}: "NEWER TECHNOLOGY",
- [3]byte{0, 80, 127}: "DrayTek Corp.",
- [3]byte{0, 80, 128}: "Cisco Systems, Inc",
- [3]byte{0, 80, 129}: "MURATA MACHINERY, LTD.",
- [3]byte{0, 80, 130}: "FORESSON CORPORATION",
- [3]byte{0, 80, 131}: "GILBARCO, INC.",
- [3]byte{0, 80, 132}: "ATL PRODUCTS",
- [3]byte{0, 80, 134}: "TELKOM SA, LTD.",
- [3]byte{0, 80, 135}: "TERASAKI ELECTRIC CO., LTD.",
- [3]byte{0, 80, 136}: "AMANO CORPORATION",
- [3]byte{0, 80, 137}: "SAFETY MANAGEMENT SYSTEMS",
- [3]byte{0, 80, 139}: "Hewlett Packard",
- [3]byte{0, 80, 140}: "RSI SYSTEMS",
- [3]byte{0, 80, 141}: "ABIT COMPUTER CORPORATION",
- [3]byte{0, 80, 142}: "OPTIMATION, INC.",
- [3]byte{0, 80, 143}: "ASITA TECHNOLOGIES INT'L LTD.",
- [3]byte{0, 80, 144}: "DCTRI",
- [3]byte{0, 80, 145}: "NETACCESS, INC.",
- [3]byte{0, 80, 146}: "Rigaku Corporation Osaka Plant",
- [3]byte{0, 80, 147}: "BOEING",
- [3]byte{0, 80, 148}: "ARRIS Group, Inc.",
- [3]byte{0, 80, 149}: "PERACOM NETWORKS",
- [3]byte{0, 80, 150}: "SALIX TECHNOLOGIES, INC.",
- [3]byte{0, 80, 151}: "MMC-EMBEDDED COMPUTERTECHNIK GmbH",
- [3]byte{0, 80, 152}: "GLOBALOOP, LTD.",
- [3]byte{0, 80, 153}: "3COM EUROPE, LTD.",
- [3]byte{0, 80, 154}: "TAG ELECTRONIC SYSTEMS",
- [3]byte{0, 80, 155}: "SWITCHCORE AB",
- [3]byte{0, 80, 156}: "BETA RESEARCH",
- [3]byte{0, 80, 157}: "THE INDUSTREE B.V.",
- [3]byte{0, 80, 158}: "Les Technologies SoftAcoustik Inc.",
- [3]byte{0, 80, 159}: "HORIZON COMPUTER",
- [3]byte{0, 80, 160}: "DELTA COMPUTER SYSTEMS, INC.",
- [3]byte{0, 80, 161}: "CARLO GAVAZZI, INC.",
- [3]byte{0, 80, 162}: "Cisco Systems, Inc",
- [3]byte{0, 80, 163}: "TransMedia Communications, Inc.",
- [3]byte{0, 80, 164}: "IO TECH, INC.",
- [3]byte{0, 80, 165}: "CAPITOL BUSINESS SYSTEMS, LTD.",
- [3]byte{0, 80, 166}: "OPTRONICS",
- [3]byte{0, 80, 167}: "Cisco Systems, Inc",
- [3]byte{0, 80, 168}: "OpenCon Systems, Inc.",
- [3]byte{0, 80, 169}: "MOLDAT WIRELESS TECHNOLGIES",
- [3]byte{0, 80, 170}: "KONICA MINOLTA HOLDINGS, INC.",
- [3]byte{0, 80, 171}: "NALTEC, Inc.",
- [3]byte{0, 80, 172}: "MAPLE COMPUTER CORPORATION",
- [3]byte{0, 80, 173}: "CommUnique Wireless Corp.",
- [3]byte{0, 80, 174}: "FDK Co., Ltd",
- [3]byte{0, 80, 175}: "INTERGON, INC.",
- [3]byte{0, 80, 176}: "TECHNOLOGY ATLANTA CORPORATION",
- [3]byte{0, 80, 177}: "GIDDINGS & LEWIS",
- [3]byte{0, 80, 178}: "BRODEL GmbH",
- [3]byte{0, 80, 179}: "VOICEBOARD CORPORATION",
- [3]byte{0, 80, 180}: "SATCHWELL CONTROL SYSTEMS, LTD",
- [3]byte{0, 80, 181}: "FICHET SECURITE ELECTRONIQUE",
- [3]byte{0, 80, 182}: "GOOD WAY IND. CO., LTD.",
- [3]byte{0, 80, 183}: "BOSER TECHNOLOGY CO., LTD.",
- [3]byte{0, 80, 184}: "INOVA COMPUTERS GMBH & CO. KG",
- [3]byte{0, 80, 185}: "XITRON TECHNOLOGIES, INC.",
- [3]byte{0, 80, 186}: "D-Link Corporation",
- [3]byte{0, 80, 187}: "CMS TECHNOLOGIES",
- [3]byte{0, 80, 188}: "HAMMER STORAGE SOLUTIONS",
- [3]byte{0, 80, 189}: "Cisco Systems, Inc",
- [3]byte{0, 80, 190}: "FAST MULTIMEDIA AG",
- [3]byte{0, 80, 191}: "Metalligence Technology Corp.",
- [3]byte{0, 80, 192}: "GATAN, INC.",
- [3]byte{0, 80, 193}: "GEMFLEX NETWORKS, LTD.",
- [3]byte{0, 80, 194}: "IEEE Registration Authority",
- [3]byte{0, 80, 196}: "IMD",
- [3]byte{0, 80, 197}: "ADS Technologies, Inc",
- [3]byte{0, 80, 198}: "LOOP TELECOMMUNICATION INTERNATIONAL, INC.",
- [3]byte{0, 80, 199}: "Private",
- [3]byte{0, 80, 200}: "Addonics Technologies, Inc.",
- [3]byte{0, 80, 201}: "MASPRO DENKOH CORP.",
- [3]byte{0, 80, 202}: "NET TO NET TECHNOLOGIES",
- [3]byte{0, 80, 203}: "JETTER",
- [3]byte{0, 80, 204}: "Seagate Cloud Systems Inc",
- [3]byte{0, 80, 205}: "DIGIANSWER A/S",
- [3]byte{0, 80, 206}: "LG INTERNATIONAL CORP.",
- [3]byte{0, 80, 207}: "VANLINK COMMUNICATION TECHNOLOGY RESEARCH INSTITUTE",
- [3]byte{0, 80, 208}: "MINERVA SYSTEMS",
- [3]byte{0, 80, 209}: "Cisco Systems, Inc",
- [3]byte{0, 80, 210}: "CMC Electronics Inc",
- [3]byte{0, 80, 211}: "DIGITAL AUDIO PROCESSING PTY. LTD.",
- [3]byte{0, 80, 212}: "JOOHONG INFORMATION &",
- [3]byte{0, 80, 213}: "AD SYSTEMS CORP.",
- [3]byte{0, 80, 214}: "ATLAS COPCO TOOLS AB",
- [3]byte{0, 80, 215}: "TELSTRAT",
- [3]byte{0, 80, 216}: "UNICORN COMPUTER CORP.",
- [3]byte{0, 80, 217}: "ENGETRON-ENGENHARIA ELETRONICA IND. e COM. LTDA",
- [3]byte{0, 80, 218}: "3COM CORPORATION",
- [3]byte{0, 80, 219}: "CONTEMPORARY CONTROL",
- [3]byte{0, 80, 220}: "TAS TELEFONBAU A. SCHWABE GMBH & CO. KG",
- [3]byte{0, 80, 221}: "SERRA SOLDADURA, S.A.",
- [3]byte{0, 80, 222}: "SIGNUM SYSTEMS CORP.",
- [3]byte{0, 80, 223}: "AirFiber, Inc.",
- [3]byte{0, 80, 225}: "NS TECH ELECTRONICS SDN BHD",
- [3]byte{0, 80, 226}: "Cisco Systems, Inc",
- [3]byte{0, 80, 227}: "ARRIS Group, Inc.",
- [3]byte{0, 80, 228}: "Apple, Inc.",
- [3]byte{0, 80, 230}: "HAKUSAN CORPORATION",
- [3]byte{0, 80, 231}: "PARADISE INNOVATIONS (ASIA)",
- [3]byte{0, 80, 232}: "NOMADIX INC.",
- [3]byte{0, 80, 234}: "XEL COMMUNICATIONS, INC.",
- [3]byte{0, 80, 235}: "ALPHA-TOP CORPORATION",
- [3]byte{0, 80, 236}: "OLICOM A/S",
- [3]byte{0, 80, 237}: "ANDA NETWORKS",
- [3]byte{0, 80, 238}: "TEK DIGITEL CORPORATION",
- [3]byte{0, 80, 239}: "SPE Systemhaus GmbH",
- [3]byte{0, 80, 240}: "Cisco Systems, Inc",
- [3]byte{0, 80, 241}: "Intel Corporation",
- [3]byte{0, 80, 242}: "MICROSOFT CORP.",
- [3]byte{0, 80, 243}: "GLOBAL NET INFORMATION CO., Ltd.",
- [3]byte{0, 80, 244}: "SIGMATEK GMBH & CO. KG",
- [3]byte{0, 80, 246}: "PAN-INTERNATIONAL INDUSTRIAL CORP.",
- [3]byte{0, 80, 247}: "VENTURE MANUFACTURING (SINGAPORE) LTD.",
- [3]byte{0, 80, 248}: "ENTREGA TECHNOLOGIES, INC.",
- [3]byte{0, 80, 249}: "Sensormatic Electronics LLC",
- [3]byte{0, 80, 250}: "OXTEL, LTD.",
- [3]byte{0, 80, 251}: "VSK ELECTRONICS",
- [3]byte{0, 80, 252}: "Edimax Technology Co. Ltd.",
- [3]byte{0, 80, 253}: "VISIONCOMM CO., LTD.",
- [3]byte{0, 80, 254}: "PCTVnet ASA",
- [3]byte{0, 80, 255}: "HAKKO ELECTRONICS CO., LTD.",
- [3]byte{0, 82, 24}: "Wuxi Keboda Electron Co.Ltd",
- [3]byte{0, 84, 159}: "Avaya Inc",
- [3]byte{0, 84, 175}: "Continental Automotive Systems Inc.",
- [3]byte{0, 84, 189}: "Swelaser AB",
- [3]byte{0, 85, 218}: "IEEE Registration Authority",
- [3]byte{0, 86, 43}: "Cisco Systems, Inc",
- [3]byte{0, 86, 205}: "Apple, Inc.",
- [3]byte{0, 87, 210}: "Cisco Systems, Inc",
- [3]byte{0, 89, 7}: "LenovoEMC Products USA, LLC",
- [3]byte{0, 89, 121}: "Networked Energy Services",
- [3]byte{0, 89, 172}: "KPN. B.V.",
- [3]byte{0, 89, 220}: "Cisco Systems, Inc",
- [3]byte{0, 90, 19}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 90, 57}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{0, 91, 161}: "shanghai huayuan chuangxin software CO., LTD.",
- [3]byte{0, 92, 134}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{0, 92, 177}: "Gospell DIGITAL TECHNOLOGY CO., LTD",
- [3]byte{0, 93, 3}: "Xilinx, Inc",
- [3]byte{0, 93, 115}: "Cisco Systems, Inc",
- [3]byte{0, 95, 134}: "Cisco Systems, Inc",
- [3]byte{0, 96, 0}: "XYCOM INC.",
- [3]byte{0, 96, 1}: "InnoSys, Inc.",
- [3]byte{0, 96, 2}: "SCREEN SUBTITLING SYSTEMS, LTD",
- [3]byte{0, 96, 3}: "TERAOKA WEIGH SYSTEM PTE, LTD.",
- [3]byte{0, 96, 4}: "COMPUTADORES MODULARES SA",
- [3]byte{0, 96, 5}: "FEEDBACK DATA LTD.",
- [3]byte{0, 96, 6}: "SOTEC CO., LTD",
- [3]byte{0, 96, 7}: "ACRES GAMING, INC.",
- [3]byte{0, 96, 8}: "3COM CORPORATION",
- [3]byte{0, 96, 9}: "Cisco Systems, Inc",
- [3]byte{0, 96, 10}: "SORD COMPUTER CORPORATION",
- [3]byte{0, 96, 11}: "LOGWARE GmbH",
- [3]byte{0, 96, 12}: "Eurotech Inc.",
- [3]byte{0, 96, 13}: "Digital Logic GmbH",
- [3]byte{0, 96, 14}: "WAVENET INTERNATIONAL, INC.",
- [3]byte{0, 96, 15}: "Westell Technologies Inc.",
- [3]byte{0, 96, 16}: "NETWORK MACHINES, INC.",
- [3]byte{0, 96, 17}: "CRYSTAL SEMICONDUCTOR CORP.",
- [3]byte{0, 96, 18}: "POWER COMPUTING CORPORATION",
- [3]byte{0, 96, 19}: "NETSTAL MASCHINEN AG",
- [3]byte{0, 96, 20}: "EDEC CO., LTD.",
- [3]byte{0, 96, 21}: "NET2NET CORPORATION",
- [3]byte{0, 96, 22}: "CLARIION",
- [3]byte{0, 96, 23}: "TOKIMEC INC.",
- [3]byte{0, 96, 24}: "STELLAR ONE CORPORATION",
- [3]byte{0, 96, 25}: "Roche Diagnostics",
- [3]byte{0, 96, 26}: "KEITHLEY INSTRUMENTS",
- [3]byte{0, 96, 27}: "MESA ELECTRONICS",
- [3]byte{0, 96, 28}: "TELXON CORPORATION",
- [3]byte{0, 96, 29}: "LUCENT TECHNOLOGIES",
- [3]byte{0, 96, 30}: "SOFTLAB, INC.",
- [3]byte{0, 96, 31}: "STALLION TECHNOLOGIES",
- [3]byte{0, 96, 32}: "PIVOTAL NETWORKING, INC.",
- [3]byte{0, 96, 33}: "DSC CORPORATION",
- [3]byte{0, 96, 34}: "VICOM SYSTEMS, INC.",
- [3]byte{0, 96, 35}: "PERICOM SEMICONDUCTOR CORP.",
- [3]byte{0, 96, 36}: "GRADIENT TECHNOLOGIES, INC.",
- [3]byte{0, 96, 37}: "ACTIVE IMAGING PLC",
- [3]byte{0, 96, 38}: "VIKING Modular Solutions",
- [3]byte{0, 96, 39}: "Superior Modular Products",
- [3]byte{0, 96, 40}: "MACROVISION CORPORATION",
- [3]byte{0, 96, 41}: "CARY PERIPHERALS INC.",
- [3]byte{0, 96, 42}: "SYMICRON COMPUTER COMMUNICATIONS, LTD.",
- [3]byte{0, 96, 43}: "PEAK AUDIO",
- [3]byte{0, 96, 44}: "LINX Data Terminals, Inc.",
- [3]byte{0, 96, 45}: "ALERTON TECHNOLOGIES, INC.",
- [3]byte{0, 96, 46}: "CYCLADES CORPORATION",
- [3]byte{0, 96, 47}: "Cisco Systems, Inc",
- [3]byte{0, 96, 48}: "VILLAGE TRONIC ENTWICKLUNG",
- [3]byte{0, 96, 49}: "HRK SYSTEMS",
- [3]byte{0, 96, 50}: "I-CUBE, INC.",
- [3]byte{0, 96, 51}: "ACUITY IMAGING, INC.",
- [3]byte{0, 96, 52}: "ROBERT BOSCH GmbH",
- [3]byte{0, 96, 53}: "DALLAS SEMICONDUCTOR, INC.",
- [3]byte{0, 96, 54}: "AIT Austrian Institute of Technology GmbH",
- [3]byte{0, 96, 55}: "NXP Semiconductors",
- [3]byte{0, 96, 56}: "Nortel Networks",
- [3]byte{0, 96, 57}: "SanCom Technology, Inc.",
- [3]byte{0, 96, 58}: "QUICK CONTROLS LTD.",
- [3]byte{0, 96, 59}: "AMTEC spa",
- [3]byte{0, 96, 60}: "HAGIWARA SYS-COM CO., LTD.",
- [3]byte{0, 96, 61}: "3CX",
- [3]byte{0, 96, 62}: "Cisco Systems, Inc",
- [3]byte{0, 96, 63}: "PATAPSCO DESIGNS",
- [3]byte{0, 96, 64}: "NETRO CORP.",
- [3]byte{0, 96, 65}: "Yokogawa Digital Computer Corporation",
- [3]byte{0, 96, 66}: "TKS (USA), INC.",
- [3]byte{0, 96, 67}: "iDirect, INC.",
- [3]byte{0, 96, 68}: "LITTON/POLY-SCIENTIFIC",
- [3]byte{0, 96, 69}: "PATHLIGHT TECHNOLOGIES",
- [3]byte{0, 96, 70}: "VMETRO, INC.",
- [3]byte{0, 96, 71}: "Cisco Systems, Inc",
- [3]byte{0, 96, 72}: "Dell EMC",
- [3]byte{0, 96, 73}: "VINA TECHNOLOGIES",
- [3]byte{0, 96, 74}: "SAIC IDEAS GROUP",
- [3]byte{0, 96, 75}: "Safe-com GmbH & Co. KG",
- [3]byte{0, 96, 76}: "Sagemcom Broadband SAS",
- [3]byte{0, 96, 77}: "MMC NETWORKS, INC.",
- [3]byte{0, 96, 78}: "CYCLE COMPUTER CORPORATION, INC.",
- [3]byte{0, 96, 79}: "Tattile SRL",
- [3]byte{0, 96, 80}: "INTERNIX INC.",
- [3]byte{0, 96, 81}: "QUALITY SEMICONDUCTOR",
- [3]byte{0, 96, 82}: "PERIPHERALS ENTERPRISE CO., Ltd.",
- [3]byte{0, 96, 83}: "TOYODA MACHINE WORKS, LTD.",
- [3]byte{0, 96, 84}: "CONTROLWARE GMBH",
- [3]byte{0, 96, 85}: "CORNELL UNIVERSITY",
- [3]byte{0, 96, 86}: "NETWORK TOOLS, INC.",
- [3]byte{0, 96, 87}: "Murata Manufacturing Co., Ltd.",
- [3]byte{0, 96, 88}: "COPPER MOUNTAIN COMMUNICATIONS, INC.",
- [3]byte{0, 96, 89}: "TECHNICAL COMMUNICATIONS CORP.",
- [3]byte{0, 96, 90}: "CELCORE, INC.",
- [3]byte{0, 96, 91}: "IntraServer Technology, Inc.",
- [3]byte{0, 96, 92}: "Cisco Systems, Inc",
- [3]byte{0, 96, 93}: "SCANIVALVE CORP.",
- [3]byte{0, 96, 94}: "LIBERTY TECHNOLOGY NETWORKING",
- [3]byte{0, 96, 95}: "NIPPON UNISOFT CORPORATION",
- [3]byte{0, 96, 96}: "Data Innovations North America",
- [3]byte{0, 96, 97}: "WHISTLE COMMUNICATIONS CORP.",
- [3]byte{0, 96, 98}: "TELESYNC, INC.",
- [3]byte{0, 96, 99}: "PSION DACOM PLC.",
- [3]byte{0, 96, 100}: "NETCOMM LIMITED",
- [3]byte{0, 96, 101}: "BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH",
- [3]byte{0, 96, 102}: "LACROIX Trafic",
- [3]byte{0, 96, 103}: "ACER NETXUS INC.",
- [3]byte{0, 96, 104}: "Dialogic Corporation",
- [3]byte{0, 96, 105}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 96, 106}: "MITSUBISHI WIRELESS COMMUNICATIONS. INC.",
- [3]byte{0, 96, 107}: "Synclayer Inc.",
- [3]byte{0, 96, 108}: "ARESCOM",
- [3]byte{0, 96, 109}: "DIGITAL EQUIPMENT CORP.",
- [3]byte{0, 96, 110}: "DAVICOM SEMICONDUCTOR, INC.",
- [3]byte{0, 96, 111}: "CLARION CORPORATION OF AMERICA",
- [3]byte{0, 96, 112}: "Cisco Systems, Inc",
- [3]byte{0, 96, 113}: "MIDAS LAB, INC.",
- [3]byte{0, 96, 114}: "VXL INSTRUMENTS, LIMITED",
- [3]byte{0, 96, 115}: "REDCREEK COMMUNICATIONS, INC.",
- [3]byte{0, 96, 116}: "QSC LLC",
- [3]byte{0, 96, 117}: "PENTEK, INC.",
- [3]byte{0, 96, 118}: "SCHLUMBERGER TECHNOLOGIES RETAIL PETROLEUM SYSTEMS",
- [3]byte{0, 96, 119}: "PRISA NETWORKS",
- [3]byte{0, 96, 120}: "POWER MEASUREMENT LTD.",
- [3]byte{0, 96, 121}: "Mainstream Data, Inc.",
- [3]byte{0, 96, 122}: "DVS GMBH",
- [3]byte{0, 96, 123}: "FORE SYSTEMS, INC.",
- [3]byte{0, 96, 124}: "WaveAccess, Ltd.",
- [3]byte{0, 96, 125}: "SENTIENT NETWORKS INC.",
- [3]byte{0, 96, 126}: "GIGALABS, INC.",
- [3]byte{0, 96, 127}: "AURORA TECHNOLOGIES, INC.",
- [3]byte{0, 96, 128}: "MICROTRONIX DATACOM LTD.",
- [3]byte{0, 96, 129}: "TV/COM INTERNATIONAL",
- [3]byte{0, 96, 130}: "NOVALINK TECHNOLOGIES, INC.",
- [3]byte{0, 96, 131}: "Cisco Systems, Inc",
- [3]byte{0, 96, 132}: "DIGITAL VIDEO",
- [3]byte{0, 96, 133}: "Storage Concepts",
- [3]byte{0, 96, 134}: "LOGIC REPLACEMENT TECH. LTD.",
- [3]byte{0, 96, 135}: "KANSAI ELECTRIC CO., LTD.",
- [3]byte{0, 96, 136}: "Analog Devices, Inc.",
- [3]byte{0, 96, 137}: "XATA",
- [3]byte{0, 96, 138}: "CITADEL COMPUTER",
- [3]byte{0, 96, 139}: "ConferTech International",
- [3]byte{0, 96, 140}: "3COM CORPORATION",
- [3]byte{0, 96, 141}: "UNIPULSE CORP.",
- [3]byte{0, 96, 142}: "HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH",
- [3]byte{0, 96, 143}: "TEKRAM TECHNOLOGY CO., LTD.",
- [3]byte{0, 96, 144}: "Artiza Networks Inc",
- [3]byte{0, 96, 145}: "FIRST PACIFIC NETWORKS, INC.",
- [3]byte{0, 96, 146}: "MICRO/SYS, INC.",
- [3]byte{0, 96, 147}: "VARIAN",
- [3]byte{0, 96, 148}: "IBM Corp",
- [3]byte{0, 96, 149}: "ACCU-TIME SYSTEMS, INC.",
- [3]byte{0, 96, 150}: "T.S. MICROTECH INC.",
- [3]byte{0, 96, 151}: "3COM CORPORATION",
- [3]byte{0, 96, 152}: "HT COMMUNICATIONS",
- [3]byte{0, 96, 153}: "SBE, Inc.",
- [3]byte{0, 96, 154}: "NJK TECHNO CO.",
- [3]byte{0, 96, 155}: "AstroNova, Inc",
- [3]byte{0, 96, 156}: "Perkin-Elmer Incorporated",
- [3]byte{0, 96, 157}: "PMI FOOD EQUIPMENT GROUP",
- [3]byte{0, 96, 158}: "ASC X3 - INFORMATION TECHNOLOGY STANDARDS SECRETARIATS",
- [3]byte{0, 96, 159}: "PHAST CORPORATION",
- [3]byte{0, 96, 160}: "SWITCHED NETWORK TECHNOLOGIES, INC.",
- [3]byte{0, 96, 161}: "VPNet, Inc.",
- [3]byte{0, 96, 162}: "NIHON UNISYS LIMITED CO.",
- [3]byte{0, 96, 163}: "CONTINUUM TECHNOLOGY CORP.",
- [3]byte{0, 96, 164}: "GEW Technologies (PTY)Ltd",
- [3]byte{0, 96, 165}: "PERFORMANCE TELECOM CORP.",
- [3]byte{0, 96, 166}: "PARTICLE MEASURING SYSTEMS",
- [3]byte{0, 96, 167}: "MICROSENS GmbH & CO. KG",
- [3]byte{0, 96, 168}: "TIDOMAT AB",
- [3]byte{0, 96, 169}: "GESYTEC MBH",
- [3]byte{0, 96, 170}: "INTELLIGENT DEVICES INC. (IDI)",
- [3]byte{0, 96, 171}: "LARSCOM INCORPORATED",
- [3]byte{0, 96, 172}: "RESILIENCE CORPORATION",
- [3]byte{0, 96, 173}: "MegaChips Corporation",
- [3]byte{0, 96, 174}: "TRIO INFORMATION SYSTEMS AB",
- [3]byte{0, 96, 175}: "PACIFIC MICRO DATA, INC.",
- [3]byte{0, 96, 176}: "Hewlett Packard",
- [3]byte{0, 96, 177}: "Input/Output, Inc.",
- [3]byte{0, 96, 178}: "PROCESS CONTROL CORP.",
- [3]byte{0, 96, 179}: "Z-COM, INC.",
- [3]byte{0, 96, 180}: "GLENAYRE R&D INC.",
- [3]byte{0, 96, 181}: "KEBA GmbH",
- [3]byte{0, 96, 182}: "LAND COMPUTER CO., LTD.",
- [3]byte{0, 96, 183}: "CHANNELMATIC, INC.",
- [3]byte{0, 96, 184}: "CORELIS Inc.",
- [3]byte{0, 96, 185}: "NEC Platforms, Ltd",
- [3]byte{0, 96, 186}: "SAHARA NETWORKS, INC.",
- [3]byte{0, 96, 187}: "Cabletron Systems, Inc.",
- [3]byte{0, 96, 188}: "KeunYoung Electronics & Communication Co., Ltd.",
- [3]byte{0, 96, 189}: "Enginuity Communications",
- [3]byte{0, 96, 190}: "WEBTRONICS",
- [3]byte{0, 96, 191}: "MACRAIGOR SYSTEMS, INC.",
- [3]byte{0, 96, 192}: "Nera Networks AS",
- [3]byte{0, 96, 193}: "WaveSpan Corporation",
- [3]byte{0, 96, 194}: "MPL AG",
- [3]byte{0, 96, 195}: "NETVISION CORPORATION",
- [3]byte{0, 96, 196}: "SOLITON SYSTEMS K.K.",
- [3]byte{0, 96, 197}: "ANCOT CORP.",
- [3]byte{0, 96, 198}: "DCS AG",
- [3]byte{0, 96, 199}: "AMATI COMMUNICATIONS CORP.",
- [3]byte{0, 96, 200}: "KUKA WELDING SYSTEMS & ROBOTS",
- [3]byte{0, 96, 201}: "ControlNet, Inc.",
- [3]byte{0, 96, 202}: "HARMONIC SYSTEMS INCORPORATED",
- [3]byte{0, 96, 203}: "HITACHI ZOSEN CORPORATION",
- [3]byte{0, 96, 204}: "EMTRAK, INCORPORATED",
- [3]byte{0, 96, 205}: "VideoServer, Inc.",
- [3]byte{0, 96, 206}: "ACCLAIM COMMUNICATIONS",
- [3]byte{0, 96, 207}: "ALTEON NETWORKS, INC.",
- [3]byte{0, 96, 208}: "SNMP RESEARCH INCORPORATED",
- [3]byte{0, 96, 209}: "CASCADE COMMUNICATIONS",
- [3]byte{0, 96, 210}: "LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD.",
- [3]byte{0, 96, 211}: "AT&T",
- [3]byte{0, 96, 212}: "ELDAT COMMUNICATION LTD.",
- [3]byte{0, 96, 213}: "AMADA MIYACHI Co., Ltd",
- [3]byte{0, 96, 214}: "NovAtel Inc.",
- [3]byte{0, 96, 215}: "ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL)",
- [3]byte{0, 96, 216}: "ELMIC SYSTEMS, INC.",
- [3]byte{0, 96, 217}: "TRANSYS NETWORKS INC.",
- [3]byte{0, 96, 218}: "Red Lion Controls, LP",
- [3]byte{0, 96, 219}: "NTP ELEKTRONIK A/S",
- [3]byte{0, 96, 220}: "NEC Magnus Communications,Ltd.",
- [3]byte{0, 96, 221}: "MYRICOM, INC.",
- [3]byte{0, 96, 222}: "Kayser-Threde GmbH",
- [3]byte{0, 96, 223}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 96, 224}: "AXIOM TECHNOLOGY CO., LTD.",
- [3]byte{0, 96, 225}: "ORCKIT COMMUNICATIONS LTD.",
- [3]byte{0, 96, 226}: "QUEST ENGINEERING & DEVELOPMENT",
- [3]byte{0, 96, 227}: "ARBIN INSTRUMENTS",
- [3]byte{0, 96, 228}: "COMPUSERVE, INC.",
- [3]byte{0, 96, 229}: "FUJI AUTOMATION CO., LTD.",
- [3]byte{0, 96, 230}: "SHOMITI SYSTEMS INCORPORATED",
- [3]byte{0, 96, 231}: "RANDATA",
- [3]byte{0, 96, 232}: "HITACHI COMPUTER PRODUCTS (AMERICA), INC.",
- [3]byte{0, 96, 233}: "ATOP TECHNOLOGIES, INC.",
- [3]byte{0, 96, 234}: "StreamLogic",
- [3]byte{0, 96, 235}: "FOURTHTRACK SYSTEMS",
- [3]byte{0, 96, 236}: "HERMARY OPTO ELECTRONICS INC.",
- [3]byte{0, 96, 237}: "RICARDO TEST AUTOMATION LTD.",
- [3]byte{0, 96, 238}: "APOLLO",
- [3]byte{0, 96, 239}: "FLYTECH TECHNOLOGY CO., LTD.",
- [3]byte{0, 96, 240}: "JOHNSON & JOHNSON MEDICAL, INC",
- [3]byte{0, 96, 241}: "EXP COMPUTER, INC.",
- [3]byte{0, 96, 242}: "LASERGRAPHICS, INC.",
- [3]byte{0, 96, 243}: "Performance Analysis Broadband, Spirent plc",
- [3]byte{0, 96, 244}: "ADVANCED COMPUTER SOLUTIONS, Inc.",
- [3]byte{0, 96, 245}: "ICON WEST, INC.",
- [3]byte{0, 96, 246}: "NEXTEST COMMUNICATIONS PRODUCTS, INC.",
- [3]byte{0, 96, 247}: "DATAFUSION SYSTEMS",
- [3]byte{0, 96, 248}: "Loran International Technologies Inc.",
- [3]byte{0, 96, 249}: "DIAMOND LANE COMMUNICATIONS",
- [3]byte{0, 96, 250}: "EDUCATIONAL TECHNOLOGY RESOURCES, INC.",
- [3]byte{0, 96, 251}: "PACKETEER, INC.",
- [3]byte{0, 96, 252}: "CONSERVATION THROUGH INNOVATION LTD.",
- [3]byte{0, 96, 253}: "NetICs, Inc.",
- [3]byte{0, 96, 254}: "LYNX SYSTEM DEVELOPERS, INC.",
- [3]byte{0, 96, 255}: "QuVis, Inc.",
- [3]byte{0, 97, 113}: "Apple, Inc.",
- [3]byte{0, 98, 236}: "Cisco Systems, Inc",
- [3]byte{0, 100, 64}: "Cisco Systems, Inc",
- [3]byte{0, 100, 166}: "Maquet CardioVascular",
- [3]byte{0, 102, 75}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 107, 142}: "Shanghai Feixun Communication Co.,Ltd.",
- [3]byte{0, 107, 158}: "Vizio, Inc",
- [3]byte{0, 107, 160}: "SHENZHEN UNIVERSAL INTELLISYS PTE LTD",
- [3]byte{0, 107, 241}: "Cisco Systems, Inc",
- [3]byte{0, 108, 188}: "Cisco Systems, Inc",
- [3]byte{0, 108, 253}: "Sichuan Changhong Electric Ltd.",
- [3]byte{0, 109, 82}: "Apple, Inc.",
- [3]byte{0, 109, 251}: "Vutrix Technologies Ltd",
- [3]byte{0, 111, 100}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 112, 176}: "M/A-COM INC. COMPANIES",
- [3]byte{0, 112, 179}: "DATA RECALL LTD.",
- [3]byte{0, 113, 194}: "PEGATRON CORPORATION",
- [3]byte{0, 113, 204}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{0, 114, 99}: "Netcore Technology Inc.",
- [3]byte{0, 115, 141}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{0, 115, 224}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 116, 156}: "Ruijie Networks Co.,LTD",
- [3]byte{0, 117, 50}: "INID BV",
- [3]byte{0, 117, 225}: "Ampt, LLC",
- [3]byte{0, 118, 134}: "Cisco Systems, Inc",
- [3]byte{0, 118, 177}: "Somfy-Protect By Myfox SAS",
- [3]byte{0, 120, 136}: "Cisco Systems, Inc",
- [3]byte{0, 120, 158}: "Sagemcom Broadband SAS",
- [3]byte{0, 120, 205}: "Ignition Design Labs",
- [3]byte{0, 123, 24}: "SENTRY Co., LTD.",
- [3]byte{0, 125, 250}: "Volkswagen Group of America",
- [3]byte{0, 126, 86}: "China Dragon Technology Limited",
- [3]byte{0, 127, 40}: "Actiontec Electronics, Inc",
- [3]byte{0, 128, 0}: "MULTITECH SYSTEMS, INC.",
- [3]byte{0, 128, 1}: "PERIPHONICS CORPORATION",
- [3]byte{0, 128, 2}: "SATELCOM (UK) LTD",
- [3]byte{0, 128, 3}: "HYTEC ELECTRONICS LTD.",
- [3]byte{0, 128, 4}: "ANTLOW COMMUNICATIONS, LTD.",
- [3]byte{0, 128, 5}: "CACTUS COMPUTER INC.",
- [3]byte{0, 128, 6}: "COMPUADD CORPORATION",
- [3]byte{0, 128, 7}: "DLOG NC-SYSTEME",
- [3]byte{0, 128, 8}: "DYNATECH COMPUTER SYSTEMS",
- [3]byte{0, 128, 9}: "JUPITER SYSTEMS, INC.",
- [3]byte{0, 128, 10}: "JAPAN COMPUTER CORP.",
- [3]byte{0, 128, 11}: "CSK CORPORATION",
- [3]byte{0, 128, 12}: "VIDECOM LIMITED",
- [3]byte{0, 128, 13}: "VOSSWINKEL F.U.",
- [3]byte{0, 128, 14}: "ATLANTIX CORPORATION",
- [3]byte{0, 128, 15}: "STANDARD MICROSYSTEMS",
- [3]byte{0, 128, 16}: "COMMODORE INTERNATIONAL",
- [3]byte{0, 128, 17}: "DIGITAL SYSTEMS INT'L. INC.",
- [3]byte{0, 128, 18}: "INTEGRATED MEASUREMENT SYSTEMS",
- [3]byte{0, 128, 19}: "THOMAS-CONRAD CORPORATION",
- [3]byte{0, 128, 20}: "ESPRIT SYSTEMS",
- [3]byte{0, 128, 21}: "SEIKO SYSTEMS, INC.",
- [3]byte{0, 128, 22}: "WANDEL AND GOLTERMANN",
- [3]byte{0, 128, 23}: "PFU LIMITED",
- [3]byte{0, 128, 24}: "KOBE STEEL, LTD.",
- [3]byte{0, 128, 25}: "DAYNA COMMUNICATIONS, INC.",
- [3]byte{0, 128, 26}: "BELL ATLANTIC",
- [3]byte{0, 128, 27}: "KODIAK TECHNOLOGY",
- [3]byte{0, 128, 28}: "NEWPORT SYSTEMS SOLUTIONS",
- [3]byte{0, 128, 29}: "INTEGRATED INFERENCE MACHINES",
- [3]byte{0, 128, 30}: "XINETRON, INC.",
- [3]byte{0, 128, 31}: "KRUPP ATLAS ELECTRONIK GMBH",
- [3]byte{0, 128, 32}: "NETWORK PRODUCTS",
- [3]byte{0, 128, 33}: "Alcatel Canada Inc.",
- [3]byte{0, 128, 34}: "SCAN-OPTICS",
- [3]byte{0, 128, 35}: "INTEGRATED BUSINESS NETWORKS",
- [3]byte{0, 128, 36}: "KALPANA, INC.",
- [3]byte{0, 128, 37}: "Telit Wireless Solutions GmbH",
- [3]byte{0, 128, 38}: "NETWORK PRODUCTS CORPORATION",
- [3]byte{0, 128, 39}: "ADAPTIVE SYSTEMS, INC.",
- [3]byte{0, 128, 40}: "TRADPOST (HK) LTD",
- [3]byte{0, 128, 41}: "EAGLE TECHNOLOGY, INC.",
- [3]byte{0, 128, 42}: "TEST SYSTEMS & SIMULATIONS INC",
- [3]byte{0, 128, 43}: "INTEGRATED MARKETING CO",
- [3]byte{0, 128, 44}: "THE SAGE GROUP PLC",
- [3]byte{0, 128, 45}: "XYLOGICS INC",
- [3]byte{0, 128, 46}: "CASTLE ROCK COMPUTING",
- [3]byte{0, 128, 47}: "NATIONAL INSTRUMENTS CORP.",
- [3]byte{0, 128, 48}: "NEXUS ELECTRONICS",
- [3]byte{0, 128, 49}: "BASYS, CORP.",
- [3]byte{0, 128, 50}: "ACCESS CO., LTD.",
- [3]byte{0, 128, 51}: "EMS Aviation, Inc.",
- [3]byte{0, 128, 52}: "SMT GOUPIL",
- [3]byte{0, 128, 53}: "TECHNOLOGY WORKS, INC.",
- [3]byte{0, 128, 54}: "REFLEX MANUFACTURING SYSTEMS",
- [3]byte{0, 128, 55}: "Ericsson Group",
- [3]byte{0, 128, 56}: "DATA RESEARCH & APPLICATIONS",
- [3]byte{0, 128, 57}: "ALCATEL STC AUSTRALIA",
- [3]byte{0, 128, 58}: "VARITYPER, INC.",
- [3]byte{0, 128, 59}: "APT COMMUNICATIONS, INC.",
- [3]byte{0, 128, 60}: "TVS ELECTRONICS LTD",
- [3]byte{0, 128, 61}: "SURIGIKEN CO., LTD.",
- [3]byte{0, 128, 62}: "SYNERNETICS",
- [3]byte{0, 128, 63}: "TATUNG COMPANY",
- [3]byte{0, 128, 64}: "JOHN FLUKE MANUFACTURING CO.",
- [3]byte{0, 128, 65}: "VEB KOMBINAT ROBOTRON",
- [3]byte{0, 128, 66}: "Artesyn Embedded Technologies",
- [3]byte{0, 128, 67}: "NETWORLD, INC.",
- [3]byte{0, 128, 68}: "SYSTECH COMPUTER CORP.",
- [3]byte{0, 128, 69}: "MATSUSHITA ELECTRIC IND. CO",
- [3]byte{0, 128, 70}: "Tattile SRL",
- [3]byte{0, 128, 71}: "IN-NET CORP.",
- [3]byte{0, 128, 72}: "COMPEX INCORPORATED",
- [3]byte{0, 128, 73}: "NISSIN ELECTRIC CO., LTD.",
- [3]byte{0, 128, 74}: "PRO-LOG",
- [3]byte{0, 128, 75}: "EAGLE TECHNOLOGIES PTY.LTD.",
- [3]byte{0, 128, 76}: "CONTEC CO., LTD.",
- [3]byte{0, 128, 77}: "CYCLONE MICROSYSTEMS, INC.",
- [3]byte{0, 128, 78}: "APEX COMPUTER COMPANY",
- [3]byte{0, 128, 79}: "DAIKIN INDUSTRIES, LTD.",
- [3]byte{0, 128, 80}: "ZIATECH CORPORATION",
- [3]byte{0, 128, 81}: "FIBERMUX",
- [3]byte{0, 128, 82}: "TECHNICALLY ELITE CONCEPTS",
- [3]byte{0, 128, 83}: "INTELLICOM, INC.",
- [3]byte{0, 128, 84}: "FRONTIER TECHNOLOGIES CORP.",
- [3]byte{0, 128, 85}: "FERMILAB",
- [3]byte{0, 128, 86}: "SPHINX Electronics GmbH & Co KG",
- [3]byte{0, 128, 87}: "ADSOFT, LTD.",
- [3]byte{0, 128, 88}: "PRINTER SYSTEMS CORP.",
- [3]byte{0, 128, 89}: "STANLEY ELECTRIC CO., LTD",
- [3]byte{0, 128, 90}: "TULIP COMPUTERS INTERNAT'L B.V",
- [3]byte{0, 128, 91}: "CONDOR SYSTEMS, INC.",
- [3]byte{0, 128, 92}: "AGILIS CORPORATION",
- [3]byte{0, 128, 93}: "CANSTAR",
- [3]byte{0, 128, 94}: "LSI LOGIC CORPORATION",
- [3]byte{0, 128, 95}: "Hewlett Packard",
- [3]byte{0, 128, 96}: "NETWORK INTERFACE CORPORATION",
- [3]byte{0, 128, 97}: "LITTON SYSTEMS, INC.",
- [3]byte{0, 128, 98}: "INTERFACE CO.",
- [3]byte{0, 128, 99}: "Hirschmann Automation and Control GmbH",
- [3]byte{0, 128, 100}: "WYSE TECHNOLOGY LLC",
- [3]byte{0, 128, 101}: "CYBERGRAPHIC SYSTEMS PTY LTD.",
- [3]byte{0, 128, 102}: "ARCOM CONTROL SYSTEMS, LTD.",
- [3]byte{0, 128, 103}: "SQUARE D COMPANY",
- [3]byte{0, 128, 104}: "YAMATECH SCIENTIFIC LTD.",
- [3]byte{0, 128, 105}: "COMPUTONE SYSTEMS",
- [3]byte{0, 128, 106}: "ERI (EMPAC RESEARCH INC.)",
- [3]byte{0, 128, 107}: "SCHMID TELECOMMUNICATION",
- [3]byte{0, 128, 108}: "Secure Systems & Services",
- [3]byte{0, 128, 109}: "CENTURY SYSTEMS CORP.",
- [3]byte{0, 128, 110}: "NIPPON STEEL CORPORATION",
- [3]byte{0, 128, 111}: "ONELAN LTD.",
- [3]byte{0, 128, 112}: "COMPUTADORAS MICRON",
- [3]byte{0, 128, 113}: "SAI TECHNOLOGY",
- [3]byte{0, 128, 114}: "MICROPLEX SYSTEMS LTD.",
- [3]byte{0, 128, 115}: "DWB ASSOCIATES",
- [3]byte{0, 128, 116}: "FISHER CONTROLS",
- [3]byte{0, 128, 117}: "PARSYTEC GMBH",
- [3]byte{0, 128, 118}: "MCNC",
- [3]byte{0, 128, 119}: "Brother industries, LTD.",
- [3]byte{0, 128, 120}: "PRACTICAL PERIPHERALS, INC.",
- [3]byte{0, 128, 121}: "MICROBUS DESIGNS LTD.",
- [3]byte{0, 128, 122}: "AITECH SYSTEMS LTD.",
- [3]byte{0, 128, 123}: "ARTEL COMMUNICATIONS CORP.",
- [3]byte{0, 128, 124}: "FIBERCOM, INC.",
- [3]byte{0, 128, 125}: "EQUINOX SYSTEMS INC.",
- [3]byte{0, 128, 126}: "SOUTHERN PACIFIC LTD.",
- [3]byte{0, 128, 127}: "DY-4 INCORPORATED",
- [3]byte{0, 128, 128}: "DATAMEDIA CORPORATION",
- [3]byte{0, 128, 129}: "KENDALL SQUARE RESEARCH CORP.",
- [3]byte{0, 128, 130}: "PEP MODULAR COMPUTERS GMBH",
- [3]byte{0, 128, 131}: "AMDAHL",
- [3]byte{0, 128, 132}: "THE CLOUD INC.",
- [3]byte{0, 128, 133}: "H-THREE SYSTEMS CORPORATION",
- [3]byte{0, 128, 134}: "COMPUTER GENERATION INC.",
- [3]byte{0, 128, 135}: "OKI ELECTRIC INDUSTRY CO., LTD",
- [3]byte{0, 128, 136}: "VICTOR COMPANY OF JAPAN, LTD.",
- [3]byte{0, 128, 137}: "TECNETICS (PTY) LTD.",
- [3]byte{0, 128, 138}: "SUMMIT MICROSYSTEMS CORP.",
- [3]byte{0, 128, 139}: "DACOLL LIMITED",
- [3]byte{0, 128, 140}: "NetScout Systems, Inc.",
- [3]byte{0, 128, 141}: "WESTCOAST TECHNOLOGY B.V.",
- [3]byte{0, 128, 142}: "RADSTONE TECHNOLOGY",
- [3]byte{0, 128, 143}: "C. ITOH ELECTRONICS, INC.",
- [3]byte{0, 128, 144}: "MICROTEK INTERNATIONAL, INC.",
- [3]byte{0, 128, 145}: "TOKYO ELECTRIC CO.,LTD",
- [3]byte{0, 128, 146}: "Silex Technology, Inc.",
- [3]byte{0, 128, 147}: "XYRON CORPORATION",
- [3]byte{0, 128, 148}: "ALFA LAVAL AUTOMATION AB",
- [3]byte{0, 128, 149}: "BASIC MERTON HANDELSGES.M.B.H.",
- [3]byte{0, 128, 150}: "HUMAN DESIGNED SYSTEMS, INC.",
- [3]byte{0, 128, 151}: "CENTRALP AUTOMATISMES",
- [3]byte{0, 128, 152}: "TDK CORPORATION",
- [3]byte{0, 128, 153}: "Eaton Industries GmbH",
- [3]byte{0, 128, 154}: "NOVUS NETWORKS LTD",
- [3]byte{0, 128, 155}: "JUSTSYSTEM CORPORATION",
- [3]byte{0, 128, 156}: "LUXCOM, INC.",
- [3]byte{0, 128, 157}: "Commscraft Ltd.",
- [3]byte{0, 128, 158}: "DATUS GMBH",
- [3]byte{0, 128, 159}: "ALE International",
- [3]byte{0, 128, 160}: "Hewlett Packard",
- [3]byte{0, 128, 161}: "MICROTEST, INC.",
- [3]byte{0, 128, 162}: "CREATIVE ELECTRONIC SYSTEMS",
- [3]byte{0, 128, 163}: "Lantronix",
- [3]byte{0, 128, 164}: "LIBERTY ELECTRONICS",
- [3]byte{0, 128, 165}: "SPEED INTERNATIONAL",
- [3]byte{0, 128, 166}: "REPUBLIC TECHNOLOGY, INC.",
- [3]byte{0, 128, 167}: "Honeywell International Inc",
- [3]byte{0, 128, 168}: "VITACOM CORPORATION",
- [3]byte{0, 128, 169}: "CLEARPOINT RESEARCH",
- [3]byte{0, 128, 170}: "MAXPEED",
- [3]byte{0, 128, 171}: "DUKANE NETWORK INTEGRATION",
- [3]byte{0, 128, 172}: "IMLOGIX, DIVISION OF GENESYS",
- [3]byte{0, 128, 173}: "CNET TECHNOLOGY, INC.",
- [3]byte{0, 128, 174}: "HUGHES NETWORK SYSTEMS",
- [3]byte{0, 128, 175}: "ALLUMER CO., LTD.",
- [3]byte{0, 128, 176}: "ADVANCED INFORMATION",
- [3]byte{0, 128, 177}: "SOFTCOM A/S",
- [3]byte{0, 128, 178}: "NETWORK EQUIPMENT TECHNOLOGIES",
- [3]byte{0, 128, 179}: "AVAL DATA CORPORATION",
- [3]byte{0, 128, 180}: "SOPHIA SYSTEMS",
- [3]byte{0, 128, 181}: "UNITED NETWORKS INC.",
- [3]byte{0, 128, 182}: "THEMIS COMPUTER",
- [3]byte{0, 128, 183}: "STELLAR COMPUTER",
- [3]byte{0, 128, 184}: "DMG MORI B.U.G. CO., LTD.",
- [3]byte{0, 128, 185}: "ARCHE TECHNOLIGIES INC.",
- [3]byte{0, 128, 186}: "SPECIALIX (ASIA) PTE, LTD",
- [3]byte{0, 128, 187}: "HUGHES LAN SYSTEMS",
- [3]byte{0, 128, 188}: "HITACHI ENGINEERING CO., LTD",
- [3]byte{0, 128, 189}: "THE FURUKAWA ELECTRIC CO., LTD",
- [3]byte{0, 128, 190}: "ARIES RESEARCH",
- [3]byte{0, 128, 191}: "TAKAOKA ELECTRIC MFG. CO. LTD.",
- [3]byte{0, 128, 192}: "PENRIL DATACOMM",
- [3]byte{0, 128, 193}: "LANEX CORPORATION",
- [3]byte{0, 128, 194}: "IEEE 802.1 Working Group",
- [3]byte{0, 128, 195}: "BICC INFORMATION SYSTEMS & SVC",
- [3]byte{0, 128, 196}: "DOCUMENT TECHNOLOGIES, INC.",
- [3]byte{0, 128, 197}: "NOVELLCO DE MEXICO",
- [3]byte{0, 128, 198}: "NATIONAL DATACOMM CORPORATION",
- [3]byte{0, 128, 199}: "XIRCOM",
- [3]byte{0, 128, 200}: "D-LINK SYSTEMS, INC.",
- [3]byte{0, 128, 201}: "ALBERTA MICROELECTRONIC CENTRE",
- [3]byte{0, 128, 202}: "NETCOM RESEARCH INCORPORATED",
- [3]byte{0, 128, 203}: "FALCO DATA PRODUCTS",
- [3]byte{0, 128, 204}: "MICROWAVE BYPASS SYSTEMS",
- [3]byte{0, 128, 205}: "MICRONICS COMPUTER, INC.",
- [3]byte{0, 128, 206}: "BROADCAST TELEVISION SYSTEMS",
- [3]byte{0, 128, 207}: "EMBEDDED PERFORMANCE INC.",
- [3]byte{0, 128, 208}: "COMPUTER PERIPHERALS, INC.",
- [3]byte{0, 128, 209}: "KIMTRON CORPORATION",
- [3]byte{0, 128, 210}: "SHINNIHONDENKO CO., LTD.",
- [3]byte{0, 128, 211}: "SHIVA CORP.",
- [3]byte{0, 128, 212}: "CHASE RESEARCH LTD.",
- [3]byte{0, 128, 213}: "CADRE TECHNOLOGIES",
- [3]byte{0, 128, 214}: "NUVOTECH, INC.",
- [3]byte{0, 128, 215}: "Fantum Engineering",
- [3]byte{0, 128, 216}: "NETWORK PERIPHERALS INC.",
- [3]byte{0, 128, 217}: "EMK Elektronik GmbH & Co. KG",
- [3]byte{0, 128, 218}: "Bruel & Kjaer Sound & Vibration Measurement A/S",
- [3]byte{0, 128, 219}: "GRAPHON CORPORATION",
- [3]byte{0, 128, 220}: "PICKER INTERNATIONAL",
- [3]byte{0, 128, 221}: "GMX INC/GIMIX",
- [3]byte{0, 128, 222}: "GIPSI S.A.",
- [3]byte{0, 128, 223}: "ADC CODENOLL TECHNOLOGY CORP.",
- [3]byte{0, 128, 224}: "XTP SYSTEMS, INC.",
- [3]byte{0, 128, 225}: "STMicroelectronics SRL",
- [3]byte{0, 128, 226}: "T.D.I. CO., LTD.",
- [3]byte{0, 128, 227}: "CORAL NETWORK CORPORATION",
- [3]byte{0, 128, 228}: "NORTHWEST DIGITAL SYSTEMS, INC",
- [3]byte{0, 128, 229}: "NetApp",
- [3]byte{0, 128, 230}: "PEER NETWORKS, INC.",
- [3]byte{0, 128, 231}: "Leonardo Tactical Systems.",
- [3]byte{0, 128, 232}: "CUMULUS CORPORATIION",
- [3]byte{0, 128, 233}: "Madge Ltd.",
- [3]byte{0, 128, 234}: "ADVA Optical Networking Ltd.",
- [3]byte{0, 128, 235}: "COMPCONTROL B.V.",
- [3]byte{0, 128, 236}: "SUPERCOMPUTING SOLUTIONS, INC.",
- [3]byte{0, 128, 237}: "IQ TECHNOLOGIES, INC.",
- [3]byte{0, 128, 238}: "THOMSON CSF",
- [3]byte{0, 128, 239}: "RATIONAL",
- [3]byte{0, 128, 240}: "Panasonic Communications Co., Ltd.",
- [3]byte{0, 128, 241}: "OPUS SYSTEMS",
- [3]byte{0, 128, 242}: "RAYCOM SYSTEMS INC",
- [3]byte{0, 128, 243}: "SUN ELECTRONICS CORP.",
- [3]byte{0, 128, 244}: "TELEMECANIQUE ELECTRIQUE",
- [3]byte{0, 128, 245}: "Quantel Ltd",
- [3]byte{0, 128, 246}: "SYNERGY MICROSYSTEMS",
- [3]byte{0, 128, 247}: "Zenith Electronics Corporation",
- [3]byte{0, 128, 248}: "MIZAR, INC.",
- [3]byte{0, 128, 249}: "HEURIKON CORPORATION",
- [3]byte{0, 128, 250}: "RWT GMBH",
- [3]byte{0, 128, 251}: "BVM LIMITED",
- [3]byte{0, 128, 252}: "AVATAR CORPORATION",
- [3]byte{0, 128, 253}: "EXSCEED CORPRATION",
- [3]byte{0, 128, 254}: "AZURE TECHNOLOGIES, INC.",
- [3]byte{0, 128, 255}: "SOC. DE TELEINFORMATIQUE RTC",
- [3]byte{0, 129, 196}: "Cisco Systems, Inc",
- [3]byte{0, 129, 249}: "Texas Instruments",
- [3]byte{0, 132, 237}: "Private",
- [3]byte{0, 134, 156}: "Palo Alto Networks",
- [3]byte{0, 134, 160}: "Private",
- [3]byte{0, 135, 1}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 135, 49}: "Cisco Systems, Inc",
- [3]byte{0, 136, 101}: "Apple, Inc.",
- [3]byte{0, 138, 150}: "Cisco Systems, Inc",
- [3]byte{0, 139, 67}: "RFTECH",
- [3]byte{0, 139, 252}: "mixi,Inc.",
- [3]byte{0, 140, 16}: "Black Box Corp.",
- [3]byte{0, 140, 84}: "ADB Broadband Italia",
- [3]byte{0, 140, 250}: "INVENTEC Corporation",
- [3]byte{0, 141, 78}: "CJSC NII STT",
- [3]byte{0, 141, 218}: "Link One Co., Ltd.",
- [3]byte{0, 142, 115}: "Cisco Systems, Inc",
- [3]byte{0, 142, 242}: "NETGEAR",
- [3]byte{0, 144, 0}: "DIAMOND MULTIMEDIA",
- [3]byte{0, 144, 1}: "NISHIMU ELECTRONICS INDUSTRIES CO., LTD.",
- [3]byte{0, 144, 2}: "ALLGON AB",
- [3]byte{0, 144, 3}: "APLIO",
- [3]byte{0, 144, 4}: "3COM EUROPE LTD.",
- [3]byte{0, 144, 5}: "PROTECH SYSTEMS CO., LTD.",
- [3]byte{0, 144, 6}: "Hamamatsu Photonics K.K.",
- [3]byte{0, 144, 7}: "DOMEX TECHNOLOGY CORP.",
- [3]byte{0, 144, 8}: "HanA Systems Inc.",
- [3]byte{0, 144, 9}: "I Controls, Inc.",
- [3]byte{0, 144, 10}: "PROTON ELECTRONIC INDUSTRIAL CO., LTD.",
- [3]byte{0, 144, 11}: "LANNER ELECTRONICS, INC.",
- [3]byte{0, 144, 12}: "Cisco Systems, Inc",
- [3]byte{0, 144, 13}: "Overland Storage Inc.",
- [3]byte{0, 144, 14}: "HANDLINK TECHNOLOGIES, INC.",
- [3]byte{0, 144, 15}: "KAWASAKI HEAVY INDUSTRIES, LTD",
- [3]byte{0, 144, 16}: "SIMULATION LABORATORIES, INC.",
- [3]byte{0, 144, 17}: "WAVTrace, Inc.",
- [3]byte{0, 144, 18}: "GLOBESPAN SEMICONDUCTOR, INC.",
- [3]byte{0, 144, 19}: "SAMSAN CORP.",
- [3]byte{0, 144, 20}: "ROTORK INSTRUMENTS, LTD.",
- [3]byte{0, 144, 21}: "CENTIGRAM COMMUNICATIONS CORP.",
- [3]byte{0, 144, 22}: "ZAC",
- [3]byte{0, 144, 23}: "Zypcom, Inc",
- [3]byte{0, 144, 24}: "ITO ELECTRIC INDUSTRY CO, LTD.",
- [3]byte{0, 144, 25}: "HERMES ELECTRONICS CO., LTD.",
- [3]byte{0, 144, 26}: "UNISPHERE SOLUTIONS",
- [3]byte{0, 144, 27}: "DIGITAL CONTROLS",
- [3]byte{0, 144, 28}: "mps Software Gmbh",
- [3]byte{0, 144, 29}: "PEC (NZ) LTD.",
- [3]byte{0, 144, 30}: "Selesta Ingegneria S.p.A.",
- [3]byte{0, 144, 31}: "ADTEC PRODUCTIONS, INC.",
- [3]byte{0, 144, 32}: "PHILIPS ANALYTICAL X-RAY B.V.",
- [3]byte{0, 144, 33}: "Cisco Systems, Inc",
- [3]byte{0, 144, 34}: "IVEX",
- [3]byte{0, 144, 35}: "ZILOG INC.",
- [3]byte{0, 144, 36}: "PIPELINKS, INC.",
- [3]byte{0, 144, 37}: "BAE Systems Australia (Electronic Systems) Pty Ltd",
- [3]byte{0, 144, 38}: "ADVANCED SWITCHING COMMUNICATIONS, INC.",
- [3]byte{0, 144, 39}: "Intel Corporation",
- [3]byte{0, 144, 40}: "NIPPON SIGNAL CO., LTD.",
- [3]byte{0, 144, 41}: "CRYPTO AG",
- [3]byte{0, 144, 42}: "COMMUNICATION DEVICES, INC.",
- [3]byte{0, 144, 43}: "Cisco Systems, Inc",
- [3]byte{0, 144, 44}: "DATA & CONTROL EQUIPMENT LTD.",
- [3]byte{0, 144, 45}: "DATA ELECTRONICS (AUST.) PTY, LTD.",
- [3]byte{0, 144, 46}: "NAMCO LIMITED",
- [3]byte{0, 144, 47}: "NETCORE SYSTEMS, INC.",
- [3]byte{0, 144, 48}: "HONEYWELL-DATING",
- [3]byte{0, 144, 49}: "MYSTICOM, LTD.",
- [3]byte{0, 144, 50}: "PELCOMBE GROUP LTD.",
- [3]byte{0, 144, 51}: "INNOVAPHONE AG",
- [3]byte{0, 144, 52}: "IMAGIC, INC.",
- [3]byte{0, 144, 53}: "ALPHA TELECOM, INC.",
- [3]byte{0, 144, 54}: "ens, inc.",
- [3]byte{0, 144, 55}: "ACUCOMM, INC.",
- [3]byte{0, 144, 56}: "FOUNTAIN TECHNOLOGIES, INC.",
- [3]byte{0, 144, 57}: "SHASTA NETWORKS",
- [3]byte{0, 144, 58}: "NIHON MEDIA TOOL INC.",
- [3]byte{0, 144, 59}: "TriEMS Research Lab, Inc.",
- [3]byte{0, 144, 60}: "ATLANTIC NETWORK SYSTEMS",
- [3]byte{0, 144, 61}: "BIOPAC SYSTEMS, INC.",
- [3]byte{0, 144, 62}: "N.V. PHILIPS INDUSTRIAL ACTIVITIES",
- [3]byte{0, 144, 63}: "AZTEC RADIOMEDIA",
- [3]byte{0, 144, 64}: "Siemens Network Convergence LLC",
- [3]byte{0, 144, 65}: "APPLIED DIGITAL ACCESS",
- [3]byte{0, 144, 66}: "ECCS, Inc.",
- [3]byte{0, 144, 67}: "Tattile SRL",
- [3]byte{0, 144, 68}: "ASSURED DIGITAL, INC.",
- [3]byte{0, 144, 69}: "Marconi Communications",
- [3]byte{0, 144, 70}: "DEXDYNE, LTD.",
- [3]byte{0, 144, 71}: "GIGA FAST E. LTD.",
- [3]byte{0, 144, 72}: "ZEAL CORPORATION",
- [3]byte{0, 144, 73}: "ENTRIDIA CORPORATION",
- [3]byte{0, 144, 74}: "CONCUR SYSTEM TECHNOLOGIES",
- [3]byte{0, 144, 75}: "Gemtek Technology Co., Ltd.",
- [3]byte{0, 144, 76}: "Epigram, Inc.",
- [3]byte{0, 144, 77}: "SPEC S.A.",
- [3]byte{0, 144, 78}: "DELEM BV",
- [3]byte{0, 144, 79}: "ABB POWER T&D COMPANY, INC.",
- [3]byte{0, 144, 80}: "Teleste Corporation",
- [3]byte{0, 144, 81}: "ULTIMATE TECHNOLOGY CORP.",
- [3]byte{0, 144, 82}: "SELCOM ELETTRONICA S.R.L.",
- [3]byte{0, 144, 83}: "DAEWOO ELECTRONICS CO., LTD.",
- [3]byte{0, 144, 84}: "INNOVATIVE SEMICONDUCTORS, INC",
- [3]byte{0, 144, 85}: "PARKER HANNIFIN CORPORATION COMPUMOTOR DIVISION",
- [3]byte{0, 144, 86}: "TELESTREAM, INC.",
- [3]byte{0, 144, 87}: "AANetcom, Inc.",
- [3]byte{0, 144, 88}: "Ultra Electronics Command & Control Systems",
- [3]byte{0, 144, 89}: "TELECOM DEVICE K.K.",
- [3]byte{0, 144, 90}: "DEARBORN GROUP, INC.",
- [3]byte{0, 144, 91}: "RAYMOND AND LAE ENGINEERING",
- [3]byte{0, 144, 92}: "EDMI",
- [3]byte{0, 144, 93}: "NETCOM SICHERHEITSTECHNIK GMBH",
- [3]byte{0, 144, 94}: "RAULAND-BORG CORPORATION",
- [3]byte{0, 144, 95}: "Cisco Systems, Inc",
- [3]byte{0, 144, 96}: "SYSTEM CREATE CORP.",
- [3]byte{0, 144, 97}: "PACIFIC RESEARCH & ENGINEERING CORPORATION",
- [3]byte{0, 144, 98}: "ICP VORTEX COMPUTERSYSTEME GmbH",
- [3]byte{0, 144, 99}: "COHERENT COMMUNICATIONS SYSTEMS CORPORATION",
- [3]byte{0, 144, 100}: "Thomson Inc.",
- [3]byte{0, 144, 101}: "FINISAR CORPORATION",
- [3]byte{0, 144, 102}: "Troika Networks, Inc.",
- [3]byte{0, 144, 103}: "WalkAbout Computers, Inc.",
- [3]byte{0, 144, 104}: "DVT CORP.",
- [3]byte{0, 144, 105}: "Juniper Networks",
- [3]byte{0, 144, 106}: "TURNSTONE SYSTEMS, INC.",
- [3]byte{0, 144, 107}: "APPLIED RESOURCES, INC.",
- [3]byte{0, 144, 108}: "Sartorius Hamburg GmbH",
- [3]byte{0, 144, 109}: "Cisco Systems, Inc",
- [3]byte{0, 144, 110}: "PRAXON, INC.",
- [3]byte{0, 144, 111}: "Cisco Systems, Inc",
- [3]byte{0, 144, 112}: "NEO NETWORKS, INC.",
- [3]byte{0, 144, 113}: "Applied Innovation Inc.",
- [3]byte{0, 144, 114}: "SIMRAD AS",
- [3]byte{0, 144, 115}: "GAIO TECHNOLOGY",
- [3]byte{0, 144, 116}: "ARGON NETWORKS, INC.",
- [3]byte{0, 144, 117}: "NEC DO BRASIL S.A.",
- [3]byte{0, 144, 118}: "FMT AIRCRAFT GATE SUPPORT SYSTEMS AB",
- [3]byte{0, 144, 119}: "ADVANCED FIBRE COMMUNICATIONS",
- [3]byte{0, 144, 120}: "MER TELEMANAGEMENT SOLUTIONS, LTD.",
- [3]byte{0, 144, 121}: "ClearOne, Inc.",
- [3]byte{0, 144, 122}: "Spectralink, Inc",
- [3]byte{0, 144, 123}: "E-TECH, INC.",
- [3]byte{0, 144, 124}: "DIGITALCAST, INC.",
- [3]byte{0, 144, 125}: "Lake Communications",
- [3]byte{0, 144, 126}: "VETRONIX CORP.",
- [3]byte{0, 144, 127}: "WatchGuard Technologies, Inc.",
- [3]byte{0, 144, 128}: "NOT LIMITED, INC.",
- [3]byte{0, 144, 129}: "ALOHA NETWORKS, INC.",
- [3]byte{0, 144, 130}: "FORCE INSTITUTE",
- [3]byte{0, 144, 131}: "TURBO COMMUNICATION, INC.",
- [3]byte{0, 144, 132}: "ATECH SYSTEM",
- [3]byte{0, 144, 133}: "GOLDEN ENTERPRISES, INC.",
- [3]byte{0, 144, 134}: "Cisco Systems, Inc",
- [3]byte{0, 144, 135}: "ITIS",
- [3]byte{0, 144, 136}: "BAXALL SECURITY LTD.",
- [3]byte{0, 144, 137}: "SOFTCOM MICROSYSTEMS, INC.",
- [3]byte{0, 144, 138}: "BAYLY COMMUNICATIONS, INC.",
- [3]byte{0, 144, 139}: "Tattile SRL",
- [3]byte{0, 144, 140}: "ETREND ELECTRONICS, INC.",
- [3]byte{0, 144, 141}: "VICKERS ELECTRONICS SYSTEMS",
- [3]byte{0, 144, 142}: "Nortel Networks Broadband Access",
- [3]byte{0, 144, 143}: "AUDIO CODES LTD.",
- [3]byte{0, 144, 144}: "I-BUS",
- [3]byte{0, 144, 145}: "DigitalScape, Inc.",
- [3]byte{0, 144, 146}: "Cisco Systems, Inc",
- [3]byte{0, 144, 147}: "NANAO CORPORATION",
- [3]byte{0, 144, 148}: "OSPREY TECHNOLOGIES, INC.",
- [3]byte{0, 144, 149}: "UNIVERSAL AVIONICS",
- [3]byte{0, 144, 150}: "ASKEY COMPUTER CORP",
- [3]byte{0, 144, 151}: "Sycamore Networks",
- [3]byte{0, 144, 152}: "SBC DESIGNS, INC.",
- [3]byte{0, 144, 153}: "ALLIED TELESIS, K.K.",
- [3]byte{0, 144, 154}: "ONE WORLD SYSTEMS, INC.",
- [3]byte{0, 144, 155}: "MARKEM-IMAJE",
- [3]byte{0, 144, 156}: "ARRIS Group, Inc.",
- [3]byte{0, 144, 157}: "NovaTech Process Solutions, LLC",
- [3]byte{0, 144, 158}: "Critical IO, LLC",
- [3]byte{0, 144, 159}: "DIGI-DATA CORPORATION",
- [3]byte{0, 144, 160}: "8X8 INC.",
- [3]byte{0, 144, 161}: "Flying Pig Systems/High End Systems Inc.",
- [3]byte{0, 144, 162}: "CyberTAN Technology Inc.",
- [3]byte{0, 144, 163}: "Corecess Inc.",
- [3]byte{0, 144, 164}: "ALTIGA NETWORKS",
- [3]byte{0, 144, 165}: "SPECTRA LOGIC",
- [3]byte{0, 144, 166}: "Cisco Systems, Inc",
- [3]byte{0, 144, 167}: "CLIENTEC CORPORATION",
- [3]byte{0, 144, 168}: "NineTiles Networks, Ltd.",
- [3]byte{0, 144, 169}: "WESTERN DIGITAL",
- [3]byte{0, 144, 170}: "INDIGO ACTIVE VISION SYSTEMS LIMITED",
- [3]byte{0, 144, 171}: "Cisco Systems, Inc",
- [3]byte{0, 144, 172}: "OPTIVISION, INC.",
- [3]byte{0, 144, 173}: "ASPECT ELECTRONICS, INC.",
- [3]byte{0, 144, 174}: "ITALTEL S.p.A/RF-UP-I",
- [3]byte{0, 144, 175}: "J. MORITA MFG. CORP.",
- [3]byte{0, 144, 176}: "VADEM",
- [3]byte{0, 144, 177}: "Cisco Systems, Inc",
- [3]byte{0, 144, 178}: "AVICI SYSTEMS INC.",
- [3]byte{0, 144, 179}: "AGRANAT SYSTEMS",
- [3]byte{0, 144, 180}: "WILLOWBROOK TECHNOLOGIES",
- [3]byte{0, 144, 181}: "NIKON CORPORATION",
- [3]byte{0, 144, 182}: "FIBEX SYSTEMS",
- [3]byte{0, 144, 183}: "DIGITAL LIGHTWAVE, INC.",
- [3]byte{0, 144, 184}: "ROHDE & SCHWARZ GMBH & CO. KG",
- [3]byte{0, 144, 185}: "BERAN INSTRUMENTS LTD.",
- [3]byte{0, 144, 186}: "VALID NETWORKS, INC.",
- [3]byte{0, 144, 187}: "TAINET COMMUNICATION SYSTEM Corp.",
- [3]byte{0, 144, 188}: "TELEMANN CO., LTD.",
- [3]byte{0, 144, 189}: "OMNIA COMMUNICATIONS, INC.",
- [3]byte{0, 144, 190}: "IBC/INTEGRATED BUSINESS COMPUTERS",
- [3]byte{0, 144, 191}: "Cisco Systems, Inc",
- [3]byte{0, 144, 192}: "K.J. LAW ENGINEERS, INC.",
- [3]byte{0, 144, 193}: "Peco II, Inc.",
- [3]byte{0, 144, 194}: "JK microsystems, Inc.",
- [3]byte{0, 144, 195}: "TOPIC SEMICONDUCTOR CORP.",
- [3]byte{0, 144, 196}: "JAVELIN SYSTEMS, INC.",
- [3]byte{0, 144, 197}: "INTERNET MAGIC, INC.",
- [3]byte{0, 144, 198}: "OPTIM SYSTEMS, INC.",
- [3]byte{0, 144, 199}: "ICOM INC.",
- [3]byte{0, 144, 200}: "WAVERIDER COMMUNICATIONS (CANADA) INC.",
- [3]byte{0, 144, 201}: "DPAC Technologies",
- [3]byte{0, 144, 202}: "ACCORD VIDEO TELECOMMUNICATIONS, LTD.",
- [3]byte{0, 144, 203}: "Wireless OnLine, Inc.",
- [3]byte{0, 144, 204}: "PLANEX COMMUNICATIONS INC.",
- [3]byte{0, 144, 205}: "ENT-EMPRESA NACIONAL DE TELECOMMUNICACOES, S.A.",
- [3]byte{0, 144, 206}: "TETRA GmbH",
- [3]byte{0, 144, 207}: "NORTEL",
- [3]byte{0, 144, 208}: "Thomson Telecom Belgium",
- [3]byte{0, 144, 209}: "LEICHU ENTERPRISE CO., LTD.",
- [3]byte{0, 144, 210}: "ARTEL VIDEO SYSTEMS",
- [3]byte{0, 144, 211}: "GIESECKE & DEVRIENT GmbH",
- [3]byte{0, 144, 212}: "BindView Development Corp.",
- [3]byte{0, 144, 213}: "EUPHONIX, INC.",
- [3]byte{0, 144, 214}: "Crystal Group, Inc.",
- [3]byte{0, 144, 215}: "NetBoost Corp.",
- [3]byte{0, 144, 216}: "WHITECROSS SYSTEMS",
- [3]byte{0, 144, 217}: "Cisco Systems, Inc",
- [3]byte{0, 144, 218}: "DYNARC, INC.",
- [3]byte{0, 144, 219}: "NEXT LEVEL COMMUNICATIONS",
- [3]byte{0, 144, 220}: "TECO INFORMATION SYSTEMS",
- [3]byte{0, 144, 221}: "MIHARU COMMUNICATIONS Inc",
- [3]byte{0, 144, 222}: "CARDKEY SYSTEMS, INC.",
- [3]byte{0, 144, 223}: "MITSUBISHI CHEMICAL AMERICA, INC.",
- [3]byte{0, 144, 224}: "SYSTRAN CORP.",
- [3]byte{0, 144, 225}: "TELENA S.P.A.",
- [3]byte{0, 144, 226}: "DISTRIBUTED PROCESSING TECHNOLOGY",
- [3]byte{0, 144, 227}: "AVEX ELECTRONICS INC.",
- [3]byte{0, 144, 228}: "NEC AMERICA, INC.",
- [3]byte{0, 144, 229}: "TEKNEMA, INC.",
- [3]byte{0, 144, 230}: "ALi Corporation",
- [3]byte{0, 144, 231}: "HORSCH ELEKTRONIK AG",
- [3]byte{0, 144, 232}: "MOXA TECHNOLOGIES CORP., LTD.",
- [3]byte{0, 144, 233}: "JANZ COMPUTER AG",
- [3]byte{0, 144, 234}: "ALPHA TECHNOLOGIES, INC.",
- [3]byte{0, 144, 235}: "SENTRY TELECOM SYSTEMS",
- [3]byte{0, 144, 236}: "PYRESCOM",
- [3]byte{0, 144, 237}: "CENTRAL SYSTEM RESEARCH CO., LTD.",
- [3]byte{0, 144, 238}: "PERSONAL COMMUNICATIONS TECHNOLOGIES",
- [3]byte{0, 144, 239}: "INTEGRIX, INC.",
- [3]byte{0, 144, 240}: "Harmonic Video Systems Ltd.",
- [3]byte{0, 144, 241}: "Seagate Cloud Systems Inc",
- [3]byte{0, 144, 242}: "Cisco Systems, Inc",
- [3]byte{0, 144, 243}: "ASPECT COMMUNICATIONS",
- [3]byte{0, 144, 244}: "LIGHTNING INSTRUMENTATION",
- [3]byte{0, 144, 245}: "CLEVO CO.",
- [3]byte{0, 144, 246}: "ESCALATE NETWORKS, INC.",
- [3]byte{0, 144, 247}: "NBASE COMMUNICATIONS LTD.",
- [3]byte{0, 144, 248}: "MEDIATRIX TELECOM",
- [3]byte{0, 144, 249}: "Imagine Communications",
- [3]byte{0, 144, 250}: "Emulex Corporation",
- [3]byte{0, 144, 251}: "PORTWELL, INC.",
- [3]byte{0, 144, 252}: "NETWORK COMPUTING DEVICES",
- [3]byte{0, 144, 253}: "CopperCom, Inc.",
- [3]byte{0, 144, 254}: "ELECOM CO., LTD. (LANEED DIV.)",
- [3]byte{0, 144, 255}: "TELLUS TECHNOLOGY INC.",
- [3]byte{0, 145, 214}: "Crystal Group, Inc.",
- [3]byte{0, 145, 250}: "Synapse Product Development",
- [3]byte{0, 146, 250}: "SHENZHEN WISKY TECHNOLOGY CO.,LTD",
- [3]byte{0, 147, 99}: "Uni-Link Technology Co., Ltd.",
- [3]byte{0, 148, 161}: "F5 Networks, Inc.",
- [3]byte{0, 149, 105}: "LSD Science and Technology Co.,Ltd.",
- [3]byte{0, 151, 255}: "Heimann Sensor GmbH",
- [3]byte{0, 154, 205}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 154, 210}: "Cisco Systems, Inc",
- [3]byte{0, 156, 2}: "Hewlett Packard",
- [3]byte{0, 157, 142}: "CARDIAC RECORDERS, INC.",
- [3]byte{0, 158, 30}: "Cisco Systems, Inc",
- [3]byte{0, 158, 200}: "Xiaomi Communications Co Ltd",
- [3]byte{0, 160, 0}: "CENTILLION NETWORKS, INC.",
- [3]byte{0, 160, 1}: "DRS Signal Solutions",
- [3]byte{0, 160, 2}: "LEEDS & NORTHRUP AUSTRALIA PTY LTD",
- [3]byte{0, 160, 3}: "Siemens Switzerland Ltd., I B T HVP",
- [3]byte{0, 160, 4}: "NETPOWER, INC.",
- [3]byte{0, 160, 5}: "DANIEL INSTRUMENTS, LTD.",
- [3]byte{0, 160, 6}: "IMAGE DATA PROCESSING SYSTEM GROUP",
- [3]byte{0, 160, 7}: "APEXX TECHNOLOGY, INC.",
- [3]byte{0, 160, 8}: "NETCORP",
- [3]byte{0, 160, 9}: "WHITETREE NETWORK",
- [3]byte{0, 160, 10}: "Airspan",
- [3]byte{0, 160, 11}: "COMPUTEX CO., LTD.",
- [3]byte{0, 160, 12}: "KINGMAX TECHNOLOGY, INC.",
- [3]byte{0, 160, 13}: "THE PANDA PROJECT",
- [3]byte{0, 160, 14}: "NetScout Systems, Inc.",
- [3]byte{0, 160, 15}: "Broadband Technologies",
- [3]byte{0, 160, 16}: "SYSLOGIC DATENTECHNIK AG",
- [3]byte{0, 160, 17}: "MUTOH INDUSTRIES LTD.",
- [3]byte{0, 160, 18}: "Telco Systems, Inc.",
- [3]byte{0, 160, 19}: "TELTREND LTD.",
- [3]byte{0, 160, 20}: "CSIR",
- [3]byte{0, 160, 21}: "WYLE",
- [3]byte{0, 160, 22}: "MICROPOLIS CORP.",
- [3]byte{0, 160, 23}: "J B M CORPORATION",
- [3]byte{0, 160, 24}: "CREATIVE CONTROLLERS, INC.",
- [3]byte{0, 160, 25}: "NEBULA CONSULTANTS, INC.",
- [3]byte{0, 160, 26}: "BINAR ELEKTRONIK AB",
- [3]byte{0, 160, 27}: "PREMISYS COMMUNICATIONS, INC.",
- [3]byte{0, 160, 28}: "NASCENT NETWORKS CORPORATION",
- [3]byte{0, 160, 29}: "Red Lion Controls, LP",
- [3]byte{0, 160, 30}: "EST CORPORATION",
- [3]byte{0, 160, 31}: "TRICORD SYSTEMS, INC.",
- [3]byte{0, 160, 32}: "CITICORP/TTI",
- [3]byte{0, 160, 33}: "General Dynamics",
- [3]byte{0, 160, 34}: "CENTRE FOR DEVELOPMENT OF ADVANCED COMPUTING",
- [3]byte{0, 160, 35}: "APPLIED CREATIVE TECHNOLOGY, INC.",
- [3]byte{0, 160, 36}: "3COM CORPORATION",
- [3]byte{0, 160, 37}: "REDCOM LABS INC.",
- [3]byte{0, 160, 38}: "TELDAT, S.A.",
- [3]byte{0, 160, 39}: "FIREPOWER SYSTEMS, INC.",
- [3]byte{0, 160, 40}: "CONNER PERIPHERALS",
- [3]byte{0, 160, 41}: "COULTER CORPORATION",
- [3]byte{0, 160, 42}: "TRANCELL SYSTEMS",
- [3]byte{0, 160, 43}: "TRANSITIONS RESEARCH CORP.",
- [3]byte{0, 160, 44}: "interWAVE Communications",
- [3]byte{0, 160, 45}: "1394 Trade Association",
- [3]byte{0, 160, 46}: "BRAND COMMUNICATIONS, LTD.",
- [3]byte{0, 160, 47}: "ADB Broadband Italia",
- [3]byte{0, 160, 48}: "CAPTOR NV/SA",
- [3]byte{0, 160, 49}: "HAZELTINE CORPORATION, MS 1-17",
- [3]byte{0, 160, 50}: "GES SINGAPORE PTE. LTD.",
- [3]byte{0, 160, 51}: "imc MeBsysteme GmbH",
- [3]byte{0, 160, 52}: "AXEL",
- [3]byte{0, 160, 53}: "CYLINK CORPORATION",
- [3]byte{0, 160, 54}: "APPLIED NETWORK TECHNOLOGY",
- [3]byte{0, 160, 55}: "Mindray DS USA, Inc.",
- [3]byte{0, 160, 56}: "EMAIL ELECTRONICS",
- [3]byte{0, 160, 57}: "ROSS TECHNOLOGY, INC.",
- [3]byte{0, 160, 58}: "KUBOTEK CORPORATION",
- [3]byte{0, 160, 59}: "TOSHIN ELECTRIC CO., LTD.",
- [3]byte{0, 160, 60}: "EG&G NUCLEAR INSTRUMENTS",
- [3]byte{0, 160, 61}: "OPTO-22",
- [3]byte{0, 160, 62}: "ATM FORUM",
- [3]byte{0, 160, 63}: "COMPUTER SOCIETY MICROPROCESSOR & MICROPROCESSOR STANDARDS C",
- [3]byte{0, 160, 64}: "Apple, Inc.",
- [3]byte{0, 160, 65}: "INFICON",
- [3]byte{0, 160, 66}: "SPUR PRODUCTS CORP.",
- [3]byte{0, 160, 67}: "AMERICAN TECHNOLOGY LABS, INC.",
- [3]byte{0, 160, 68}: "NTT IT CO., LTD.",
- [3]byte{0, 160, 69}: "PHOENIX CONTACT Electronics GmbH",
- [3]byte{0, 160, 70}: "SCITEX CORP. LTD.",
- [3]byte{0, 160, 71}: "INTEGRATED FITNESS CORP.",
- [3]byte{0, 160, 72}: "QUESTECH, LTD.",
- [3]byte{0, 160, 73}: "DIGITECH INDUSTRIES, INC.",
- [3]byte{0, 160, 74}: "NISSHIN ELECTRIC CO., LTD.",
- [3]byte{0, 160, 75}: "TFL LAN INC.",
- [3]byte{0, 160, 76}: "INNOVATIVE SYSTEMS & TECHNOLOGIES, INC.",
- [3]byte{0, 160, 77}: "EDA INSTRUMENTS, INC.",
- [3]byte{0, 160, 78}: "VOELKER TECHNOLOGIES, INC.",
- [3]byte{0, 160, 79}: "AMERITEC CORP.",
- [3]byte{0, 160, 80}: "CYPRESS SEMICONDUCTOR",
- [3]byte{0, 160, 81}: "ANGIA COMMUNICATIONS. INC.",
- [3]byte{0, 160, 82}: "STANILITE ELECTRONICS PTY. LTD",
- [3]byte{0, 160, 83}: "COMPACT DEVICES, INC.",
- [3]byte{0, 160, 84}: "Private",
- [3]byte{0, 160, 85}: "Data Device Corporation",
- [3]byte{0, 160, 86}: "MICROPROSS",
- [3]byte{0, 160, 87}: "LANCOM Systems GmbH",
- [3]byte{0, 160, 88}: "GLORY, LTD.",
- [3]byte{0, 160, 89}: "HAMILTON HALLMARK",
- [3]byte{0, 160, 90}: "KOFAX IMAGE PRODUCTS",
- [3]byte{0, 160, 91}: "MARQUIP, INC.",
- [3]byte{0, 160, 92}: "INVENTORY CONVERSION, INC./",
- [3]byte{0, 160, 93}: "CS COMPUTER SYSTEME GmbH",
- [3]byte{0, 160, 94}: "MYRIAD LOGIC INC.",
- [3]byte{0, 160, 95}: "BTG Electronics Design BV",
- [3]byte{0, 160, 96}: "ACER PERIPHERALS, INC.",
- [3]byte{0, 160, 97}: "PURITAN BENNETT",
- [3]byte{0, 160, 98}: "AES PRODATA",
- [3]byte{0, 160, 99}: "JRL SYSTEMS, INC.",
- [3]byte{0, 160, 100}: "KVB/ANALECT",
- [3]byte{0, 160, 101}: "Symantec Corporation",
- [3]byte{0, 160, 102}: "ISA CO., LTD.",
- [3]byte{0, 160, 103}: "NETWORK SERVICES GROUP",
- [3]byte{0, 160, 104}: "BHP LIMITED",
- [3]byte{0, 160, 105}: "Symmetricom, Inc.",
- [3]byte{0, 160, 106}: "Verilink Corporation",
- [3]byte{0, 160, 107}: "DMS DORSCH MIKROSYSTEM GMBH",
- [3]byte{0, 160, 108}: "SHINDENGEN ELECTRIC MFG. CO., LTD.",
- [3]byte{0, 160, 109}: "MANNESMANN TALLY CORPORATION",
- [3]byte{0, 160, 110}: "AUSTRON, INC.",
- [3]byte{0, 160, 111}: "Color Sentinel Systems, LLC",
- [3]byte{0, 160, 112}: "COASTCOM",
- [3]byte{0, 160, 113}: "VIDEO LOTTERY TECHNOLOGIES,INC",
- [3]byte{0, 160, 114}: "OVATION SYSTEMS LTD.",
- [3]byte{0, 160, 115}: "COM21, INC.",
- [3]byte{0, 160, 116}: "PERCEPTION TECHNOLOGY",
- [3]byte{0, 160, 117}: "MICRON TECHNOLOGY, INC.",
- [3]byte{0, 160, 118}: "CARDWARE LAB, INC.",
- [3]byte{0, 160, 119}: "FUJITSU NEXION, INC.",
- [3]byte{0, 160, 120}: "Marconi Communications",
- [3]byte{0, 160, 121}: "ALPS ELECTRIC (USA), INC.",
- [3]byte{0, 160, 122}: "ADVANCED PERIPHERALS TECHNOLOGIES, INC.",
- [3]byte{0, 160, 123}: "DAWN COMPUTER INCORPORATION",
- [3]byte{0, 160, 124}: "TONYANG NYLON CO., LTD.",
- [3]byte{0, 160, 125}: "SEEQ TECHNOLOGY, INC.",
- [3]byte{0, 160, 126}: "AVID TECHNOLOGY, INC.",
- [3]byte{0, 160, 127}: "GSM-SYNTEL, LTD.",
- [3]byte{0, 160, 128}: "Tattile SRL",
- [3]byte{0, 160, 129}: "ALCATEL DATA NETWORKS",
- [3]byte{0, 160, 130}: "NKT ELEKTRONIK A/S",
- [3]byte{0, 160, 131}: "ASIMMPHONY TURKEY",
- [3]byte{0, 160, 132}: "Dataplex Pty Ltd",
- [3]byte{0, 160, 133}: "Private",
- [3]byte{0, 160, 134}: "AMBER WAVE SYSTEMS, INC.",
- [3]byte{0, 160, 135}: "Microsemi Corporation",
- [3]byte{0, 160, 136}: "ESSENTIAL COMMUNICATIONS",
- [3]byte{0, 160, 137}: "XPOINT TECHNOLOGIES, INC.",
- [3]byte{0, 160, 138}: "BROOKTROUT TECHNOLOGY, INC.",
- [3]byte{0, 160, 139}: "ASTON ELECTRONIC DESIGNS LTD.",
- [3]byte{0, 160, 140}: "MultiMedia LANs, Inc.",
- [3]byte{0, 160, 141}: "JACOMO CORPORATION",
- [3]byte{0, 160, 142}: "Check Point Software Technologies",
- [3]byte{0, 160, 143}: "DESKNET SYSTEMS, INC.",
- [3]byte{0, 160, 144}: "TimeStep Corporation",
- [3]byte{0, 160, 145}: "APPLICOM INTERNATIONAL",
- [3]byte{0, 160, 146}: "H. BOLLMANN MANUFACTURERS, LTD",
- [3]byte{0, 160, 147}: "B/E AEROSPACE, Inc.",
- [3]byte{0, 160, 148}: "COMSAT CORPORATION",
- [3]byte{0, 160, 149}: "ACACIA NETWORKS, INC.",
- [3]byte{0, 160, 150}: "MITSUMI ELECTRIC CO.,LTD.",
- [3]byte{0, 160, 151}: "JC INFORMATION SYSTEMS",
- [3]byte{0, 160, 152}: "NetApp",
- [3]byte{0, 160, 153}: "K-NET LTD.",
- [3]byte{0, 160, 154}: "NIHON KOHDEN AMERICA",
- [3]byte{0, 160, 155}: "QPSX COMMUNICATIONS, LTD.",
- [3]byte{0, 160, 156}: "Xyplex, Inc.",
- [3]byte{0, 160, 157}: "JOHNATHON FREEMAN TECHNOLOGIES",
- [3]byte{0, 160, 158}: "ICTV",
- [3]byte{0, 160, 159}: "COMMVISION CORP.",
- [3]byte{0, 160, 160}: "COMPACT DATA, LTD.",
- [3]byte{0, 160, 161}: "EPIC DATA INC.",
- [3]byte{0, 160, 162}: "DIGICOM S.P.A.",
- [3]byte{0, 160, 163}: "RELIABLE POWER METERS",
- [3]byte{0, 160, 164}: "Oracle Corporation",
- [3]byte{0, 160, 165}: "TEKNOR MICROSYSTEME, INC.",
- [3]byte{0, 160, 166}: "M.I. SYSTEMS, K.K.",
- [3]byte{0, 160, 167}: "VORAX CORPORATION",
- [3]byte{0, 160, 168}: "RENEX CORPORATION",
- [3]byte{0, 160, 169}: "NAVTEL COMMUNICATIONS INC.",
- [3]byte{0, 160, 170}: "SPACELABS MEDICAL",
- [3]byte{0, 160, 171}: "NETCS INFORMATIONSTECHNIK GMBH",
- [3]byte{0, 160, 172}: "GILAT SATELLITE NETWORKS, LTD.",
- [3]byte{0, 160, 173}: "MARCONI SPA",
- [3]byte{0, 160, 174}: "NUCOM SYSTEMS, INC.",
- [3]byte{0, 160, 175}: "WMS INDUSTRIES",
- [3]byte{0, 160, 176}: "I-O DATA DEVICE, INC.",
- [3]byte{0, 160, 177}: "FIRST VIRTUAL CORPORATION",
- [3]byte{0, 160, 178}: "SHIMA SEIKI",
- [3]byte{0, 160, 179}: "ZYKRONIX",
- [3]byte{0, 160, 180}: "TEXAS MICROSYSTEMS, INC.",
- [3]byte{0, 160, 181}: "3H TECHNOLOGY",
- [3]byte{0, 160, 182}: "SANRITZ AUTOMATION CO., LTD.",
- [3]byte{0, 160, 183}: "CORDANT, INC.",
- [3]byte{0, 160, 184}: "NetApp",
- [3]byte{0, 160, 185}: "EAGLE TECHNOLOGY, INC.",
- [3]byte{0, 160, 186}: "PATTON ELECTRONICS CO.",
- [3]byte{0, 160, 187}: "HILAN GMBH",
- [3]byte{0, 160, 188}: "VIASAT, INCORPORATED",
- [3]byte{0, 160, 189}: "I-TECH CORP.",
- [3]byte{0, 160, 190}: "INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP",
- [3]byte{0, 160, 191}: "WIRELESS DATA GROUP MOTOROLA",
- [3]byte{0, 160, 192}: "DIGITAL LINK CORP.",
- [3]byte{0, 160, 193}: "ORTIVUS MEDICAL AB",
- [3]byte{0, 160, 194}: "R.A. SYSTEMS CO., LTD.",
- [3]byte{0, 160, 195}: "UNICOMPUTER GMBH",
- [3]byte{0, 160, 196}: "CRISTIE ELECTRONICS LTD.",
- [3]byte{0, 160, 197}: "Zyxel Communications Corporation",
- [3]byte{0, 160, 198}: "Qualcomm Inc.",
- [3]byte{0, 160, 199}: "TADIRAN TELECOMMUNICATIONS",
- [3]byte{0, 160, 200}: "Adtran Inc",
- [3]byte{0, 160, 201}: "Intel Corporation",
- [3]byte{0, 160, 202}: "FUJITSU DENSO LTD.",
- [3]byte{0, 160, 203}: "ARK TELECOMMUNICATIONS, INC.",
- [3]byte{0, 160, 204}: "LITE-ON COMMUNICATIONS, INC.",
- [3]byte{0, 160, 205}: "DR. JOHANNES HEIDENHAIN GmbH",
- [3]byte{0, 160, 206}: "Ecessa",
- [3]byte{0, 160, 207}: "SOTAS, INC.",
- [3]byte{0, 160, 208}: "TEN X TECHNOLOGY, INC.",
- [3]byte{0, 160, 209}: "INVENTEC CORPORATION",
- [3]byte{0, 160, 210}: "ALLIED TELESIS INTERNATIONAL CORPORATION",
- [3]byte{0, 160, 211}: "INSTEM COMPUTER SYSTEMS, LTD.",
- [3]byte{0, 160, 212}: "RADIOLAN, INC.",
- [3]byte{0, 160, 213}: "SIERRA WIRELESS INC.",
- [3]byte{0, 160, 214}: "SBE, Inc.",
- [3]byte{0, 160, 215}: "KASTEN CHASE APPLIED RESEARCH",
- [3]byte{0, 160, 216}: "SPECTRA - TEK",
- [3]byte{0, 160, 217}: "CONVEX COMPUTER CORPORATION",
- [3]byte{0, 160, 218}: "INTEGRATED SYSTEMS Technology, Inc.",
- [3]byte{0, 160, 219}: "FISHER & PAYKEL PRODUCTION",
- [3]byte{0, 160, 220}: "O.N. ELECTRONIC CO., LTD.",
- [3]byte{0, 160, 221}: "AZONIX CORPORATION",
- [3]byte{0, 160, 222}: "YAMAHA CORPORATION",
- [3]byte{0, 160, 223}: "STS TECHNOLOGIES, INC.",
- [3]byte{0, 160, 224}: "TENNYSON TECHNOLOGIES PTY LTD",
- [3]byte{0, 160, 225}: "WESTPORT RESEARCH ASSOCIATES, INC.",
- [3]byte{0, 160, 226}: "Keisokugiken Corporation",
- [3]byte{0, 160, 227}: "XKL SYSTEMS CORP.",
- [3]byte{0, 160, 228}: "OPTIQUEST",
- [3]byte{0, 160, 229}: "NHC COMMUNICATIONS",
- [3]byte{0, 160, 230}: "DIALOGIC CORPORATION",
- [3]byte{0, 160, 231}: "CENTRAL DATA CORPORATION",
- [3]byte{0, 160, 232}: "REUTERS HOLDINGS PLC",
- [3]byte{0, 160, 233}: "ELECTRONIC RETAILING SYSTEMS INTERNATIONAL",
- [3]byte{0, 160, 234}: "ETHERCOM CORP.",
- [3]byte{0, 160, 235}: "Encore Networks, Inc.",
- [3]byte{0, 160, 236}: "TRANSMITTON LTD.",
- [3]byte{0, 160, 237}: "Brooks Automation, Inc.",
- [3]byte{0, 160, 238}: "NASHOBA NETWORKS",
- [3]byte{0, 160, 239}: "LUCIDATA LTD.",
- [3]byte{0, 160, 240}: "TORONTO MICROELECTRONICS INC.",
- [3]byte{0, 160, 241}: "MTI",
- [3]byte{0, 160, 242}: "INFOTEK COMMUNICATIONS, INC.",
- [3]byte{0, 160, 243}: "STAUBLI",
- [3]byte{0, 160, 244}: "GE",
- [3]byte{0, 160, 245}: "RADGUARD LTD.",
- [3]byte{0, 160, 246}: "AutoGas Systems Inc.",
- [3]byte{0, 160, 247}: "V.I COMPUTER CORP.",
- [3]byte{0, 160, 248}: "Zebra Technologies Inc",
- [3]byte{0, 160, 249}: "BINTEC COMMUNICATIONS GMBH",
- [3]byte{0, 160, 250}: "Marconi Communication GmbH",
- [3]byte{0, 160, 251}: "TORAY ENGINEERING CO., LTD.",
- [3]byte{0, 160, 252}: "IMAGE SCIENCES, INC.",
- [3]byte{0, 160, 253}: "SCITEX DIGITAL PRINTING, INC.",
- [3]byte{0, 160, 254}: "BOSTON TECHNOLOGY, INC.",
- [3]byte{0, 160, 255}: "TELLABS OPERATIONS, INC.",
- [3]byte{0, 161, 222}: "ShenZhen ShiHua Technology CO.,LTD",
- [3]byte{0, 162, 137}: "Cisco Systems, Inc",
- [3]byte{0, 162, 218}: "INAT GmbH",
- [3]byte{0, 162, 238}: "Cisco Systems, Inc",
- [3]byte{0, 162, 245}: "Guangzhou Yuanyun Network Technology Co.,Ltd",
- [3]byte{0, 162, 255}: "abatec group AG",
- [3]byte{0, 163, 142}: "Cisco Systems, Inc",
- [3]byte{0, 163, 209}: "Cisco Systems, Inc",
- [3]byte{0, 165, 9}: "WigWag Inc.",
- [3]byte{0, 166, 202}: "Cisco Systems, Inc",
- [3]byte{0, 167, 66}: "Cisco Systems, Inc",
- [3]byte{0, 167, 132}: "ITX security",
- [3]byte{0, 170, 0}: "Intel Corporation",
- [3]byte{0, 170, 1}: "Intel Corporation",
- [3]byte{0, 170, 2}: "Intel Corporation",
- [3]byte{0, 170, 60}: "OLIVETTI TELECOM SPA (OLTECO)",
- [3]byte{0, 170, 112}: "LG Electronics (Mobile Communications)",
- [3]byte{0, 172, 224}: "ARRIS Group, Inc.",
- [3]byte{0, 174, 205}: "Pensando Systems",
- [3]byte{0, 174, 250}: "Murata Manufacturing Co., Ltd.",
- [3]byte{0, 175, 31}: "Cisco Systems, Inc",
- [3]byte{0, 176, 9}: "Grass Valley, A Belden Brand",
- [3]byte{0, 176, 23}: "InfoGear Technology Corp.",
- [3]byte{0, 176, 25}: "UTC CCS",
- [3]byte{0, 176, 28}: "Westport Technologies",
- [3]byte{0, 176, 30}: "Rantic Labs, Inc.",
- [3]byte{0, 176, 42}: "ORSYS GmbH",
- [3]byte{0, 176, 45}: "ViaGate Technologies, Inc.",
- [3]byte{0, 176, 51}: "OAO Izhevskiy radiozavod",
- [3]byte{0, 176, 59}: "HiQ Networks",
- [3]byte{0, 176, 72}: "Marconi Communications Inc.",
- [3]byte{0, 176, 74}: "Cisco Systems, Inc",
- [3]byte{0, 176, 82}: "Atheros Communications",
- [3]byte{0, 176, 100}: "Cisco Systems, Inc",
- [3]byte{0, 176, 105}: "Honewell Oy",
- [3]byte{0, 176, 109}: "Jones Futurex Inc.",
- [3]byte{0, 176, 128}: "Mannesmann Ipulsys B.V.",
- [3]byte{0, 176, 134}: "LocSoft Limited",
- [3]byte{0, 176, 142}: "Cisco Systems, Inc",
- [3]byte{0, 176, 145}: "Transmeta Corp.",
- [3]byte{0, 176, 148}: "Alaris, Inc.",
- [3]byte{0, 176, 154}: "Morrow Technologies Corp.",
- [3]byte{0, 176, 157}: "Point Grey Research Inc.",
- [3]byte{0, 176, 172}: "SIAE-Microelettronica S.p.A.",
- [3]byte{0, 176, 174}: "Symmetricom",
- [3]byte{0, 176, 179}: "XSTREAMIS PLC",
- [3]byte{0, 176, 194}: "Cisco Systems, Inc",
- [3]byte{0, 176, 199}: "Tellabs Operations, Inc.",
- [3]byte{0, 176, 206}: "Viveris Technologies",
- [3]byte{0, 176, 208}: "Dell Inc.",
- [3]byte{0, 176, 219}: "Nextcell, Inc.",
- [3]byte{0, 176, 223}: "Starboard Storage Systems",
- [3]byte{0, 176, 225}: "Cisco Systems, Inc",
- [3]byte{0, 176, 231}: "British Federal Ltd.",
- [3]byte{0, 176, 236}: "EACEM",
- [3]byte{0, 176, 238}: "Ajile Systems, Inc.",
- [3]byte{0, 176, 240}: "CALY NETWORKS",
- [3]byte{0, 176, 245}: "NetWorth Technologies, Inc.",
- [3]byte{0, 179, 56}: "Kontron Design Manufacturing Services (M) Sdn. Bhd",
- [3]byte{0, 179, 66}: "MacroSAN Technologies Co., Ltd.",
- [3]byte{0, 179, 98}: "Apple, Inc.",
- [3]byte{0, 181, 109}: "David Electronics Co., LTD.",
- [3]byte{0, 181, 214}: "Omnibit Inc.",
- [3]byte{0, 182, 159}: "Latch",
- [3]byte{0, 183, 141}: "Nanjing Shining Electric Automation Co., Ltd",
- [3]byte{0, 185, 246}: "Shenzhen Super Rich Electronics Co.,Ltd",
- [3]byte{0, 186, 192}: "Biometric Access Company",
- [3]byte{0, 187, 1}: "OCTOTHORPE CORP.",
- [3]byte{0, 187, 58}: "Private",
- [3]byte{0, 187, 142}: "HME Co., Ltd.",
- [3]byte{0, 187, 193}: "CANON INC.",
- [3]byte{0, 187, 240}: "UNGERMANN-BASS INC.",
- [3]byte{0, 189, 39}: "Exar Corp.",
- [3]byte{0, 189, 58}: "Nokia Corporation",
- [3]byte{0, 189, 130}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{0, 190, 158}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{0, 191, 21}: "Genetec Inc.",
- [3]byte{0, 191, 97}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 192, 0}: "LANOPTICS, LTD.",
- [3]byte{0, 192, 1}: "DIATEK PATIENT MANAGMENT",
- [3]byte{0, 192, 2}: "SERCOMM CORPORATION",
- [3]byte{0, 192, 3}: "GLOBALNET COMMUNICATIONS",
- [3]byte{0, 192, 4}: "JAPAN BUSINESS COMPUTER CO.LTD",
- [3]byte{0, 192, 5}: "LIVINGSTON ENTERPRISES, INC.",
- [3]byte{0, 192, 6}: "NIPPON AVIONICS CO., LTD.",
- [3]byte{0, 192, 7}: "PINNACLE DATA SYSTEMS, INC.",
- [3]byte{0, 192, 8}: "SECO SRL",
- [3]byte{0, 192, 9}: "KT TECHNOLOGY (S) PTE LTD",
- [3]byte{0, 192, 10}: "MICRO CRAFT",
- [3]byte{0, 192, 11}: "NORCONTROL A.S.",
- [3]byte{0, 192, 12}: "RELIA TECHNOLGIES",
- [3]byte{0, 192, 13}: "ADVANCED LOGIC RESEARCH, INC.",
- [3]byte{0, 192, 14}: "PSITECH, INC.",
- [3]byte{0, 192, 15}: "QUANTUM SOFTWARE SYSTEMS LTD.",
- [3]byte{0, 192, 16}: "HIRAKAWA HEWTECH CORP.",
- [3]byte{0, 192, 17}: "INTERACTIVE COMPUTING DEVICES",
- [3]byte{0, 192, 18}: "NETSPAN CORPORATION",
- [3]byte{0, 192, 19}: "NETRIX",
- [3]byte{0, 192, 20}: "TELEMATICS CALABASAS INT'L,INC",
- [3]byte{0, 192, 21}: "NEW MEDIA CORPORATION",
- [3]byte{0, 192, 22}: "ELECTRONIC THEATRE CONTROLS",
- [3]byte{0, 192, 23}: "NetScout Systems, Inc.",
- [3]byte{0, 192, 24}: "LANART CORPORATION",
- [3]byte{0, 192, 25}: "LEAP TECHNOLOGY, INC.",
- [3]byte{0, 192, 26}: "COROMETRICS MEDICAL SYSTEMS",
- [3]byte{0, 192, 27}: "SOCKET COMMUNICATIONS, INC.",
- [3]byte{0, 192, 28}: "INTERLINK COMMUNICATIONS LTD.",
- [3]byte{0, 192, 29}: "GRAND JUNCTION NETWORKS, INC.",
- [3]byte{0, 192, 30}: "LA FRANCAISE DES JEUX",
- [3]byte{0, 192, 31}: "S.E.R.C.E.L.",
- [3]byte{0, 192, 32}: "ARCO ELECTRONIC, CONTROL LTD.",
- [3]byte{0, 192, 33}: "NETEXPRESS",
- [3]byte{0, 192, 34}: "LASERMASTER TECHNOLOGIES, INC.",
- [3]byte{0, 192, 35}: "TUTANKHAMON ELECTRONICS",
- [3]byte{0, 192, 36}: "EDEN SISTEMAS DE COMPUTACAO SA",
- [3]byte{0, 192, 37}: "DATAPRODUCTS CORPORATION",
- [3]byte{0, 192, 38}: "LANS TECHNOLOGY CO., LTD.",
- [3]byte{0, 192, 39}: "CIPHER SYSTEMS, INC.",
- [3]byte{0, 192, 40}: "JASCO CORPORATION",
- [3]byte{0, 192, 41}: "Nexans Deutschland GmbH - ANS",
- [3]byte{0, 192, 42}: "OHKURA ELECTRIC CO., LTD.",
- [3]byte{0, 192, 43}: "GERLOFF GESELLSCHAFT FUR",
- [3]byte{0, 192, 44}: "CENTRUM COMMUNICATIONS, INC.",
- [3]byte{0, 192, 45}: "FUJI PHOTO FILM CO., LTD.",
- [3]byte{0, 192, 46}: "NETWIZ",
- [3]byte{0, 192, 47}: "OKUMA CORPORATION",
- [3]byte{0, 192, 48}: "INTEGRATED ENGINEERING B. V.",
- [3]byte{0, 192, 49}: "DESIGN RESEARCH SYSTEMS, INC.",
- [3]byte{0, 192, 50}: "I-CUBED LIMITED",
- [3]byte{0, 192, 51}: "TELEBIT COMMUNICATIONS APS",
- [3]byte{0, 192, 52}: "TRANSACTION NETWORK",
- [3]byte{0, 192, 53}: "QUINTAR COMPANY",
- [3]byte{0, 192, 54}: "RAYTECH ELECTRONIC CORP.",
- [3]byte{0, 192, 55}: "DYNATEM",
- [3]byte{0, 192, 56}: "RASTER IMAGE PROCESSING SYSTEM",
- [3]byte{0, 192, 57}: "Teridian Semiconductor Corporation",
- [3]byte{0, 192, 58}: "MEN-MIKRO ELEKTRONIK GMBH",
- [3]byte{0, 192, 59}: "MULTIACCESS COMPUTING CORP.",
- [3]byte{0, 192, 60}: "TOWER TECH S.R.L.",
- [3]byte{0, 192, 61}: "WIESEMANN & THEIS GMBH",
- [3]byte{0, 192, 62}: "FA. GEBR. HELLER GMBH",
- [3]byte{0, 192, 63}: "STORES AUTOMATED SYSTEMS, INC.",
- [3]byte{0, 192, 64}: "ECCI",
- [3]byte{0, 192, 65}: "DIGITAL TRANSMISSION SYSTEMS",
- [3]byte{0, 192, 66}: "DATALUX CORP.",
- [3]byte{0, 192, 67}: "STRATACOM",
- [3]byte{0, 192, 68}: "EMCOM CORPORATION",
- [3]byte{0, 192, 69}: "ISOLATION SYSTEMS, LTD.",
- [3]byte{0, 192, 70}: "Blue Chip Technology Ltd",
- [3]byte{0, 192, 71}: "UNIMICRO SYSTEMS, INC.",
- [3]byte{0, 192, 72}: "BAY TECHNICAL ASSOCIATES",
- [3]byte{0, 192, 73}: "U.S. ROBOTICS, INC.",
- [3]byte{0, 192, 74}: "GROUP 2000 AG",
- [3]byte{0, 192, 75}: "CREATIVE MICROSYSTEMS",
- [3]byte{0, 192, 76}: "DEPARTMENT OF FOREIGN AFFAIRS",
- [3]byte{0, 192, 77}: "MITEC, INC.",
- [3]byte{0, 192, 78}: "COMTROL CORPORATION",
- [3]byte{0, 192, 79}: "Dell Inc.",
- [3]byte{0, 192, 80}: "TOYO DENKI SEIZO K.K.",
- [3]byte{0, 192, 81}: "ADVANCED INTEGRATION RESEARCH",
- [3]byte{0, 192, 82}: "BURR-BROWN",
- [3]byte{0, 192, 83}: "Aspect Software Inc.",
- [3]byte{0, 192, 84}: "NETWORK PERIPHERALS, LTD.",
- [3]byte{0, 192, 85}: "MODULAR COMPUTING TECHNOLOGIES",
- [3]byte{0, 192, 86}: "SOMELEC",
- [3]byte{0, 192, 87}: "MYCO ELECTRONICS",
- [3]byte{0, 192, 88}: "DATAEXPERT CORP.",
- [3]byte{0, 192, 89}: "DENSO CORPORATION",
- [3]byte{0, 192, 90}: "SEMAPHORE COMMUNICATIONS CORP.",
- [3]byte{0, 192, 91}: "NETWORKS NORTHWEST, INC.",
- [3]byte{0, 192, 92}: "ELONEX PLC",
- [3]byte{0, 192, 93}: "L&N TECHNOLOGIES",
- [3]byte{0, 192, 94}: "VARI-LITE, INC.",
- [3]byte{0, 192, 95}: "FINE-PAL COMPANY LIMITED",
- [3]byte{0, 192, 96}: "ID SCANDINAVIA AS",
- [3]byte{0, 192, 97}: "SOLECTEK CORPORATION",
- [3]byte{0, 192, 98}: "IMPULSE TECHNOLOGY",
- [3]byte{0, 192, 99}: "MORNING STAR TECHNOLOGIES, INC",
- [3]byte{0, 192, 100}: "General Datacomm LLC",
- [3]byte{0, 192, 101}: "SCOPE COMMUNICATIONS, INC.",
- [3]byte{0, 192, 102}: "DOCUPOINT, INC.",
- [3]byte{0, 192, 103}: "UNITED BARCODE INDUSTRIES",
- [3]byte{0, 192, 104}: "HME Clear-Com LTD.",
- [3]byte{0, 192, 105}: "Axxcelera Broadband Wireless",
- [3]byte{0, 192, 106}: "ZAHNER-ELEKTRIK GMBH & CO. KG",
- [3]byte{0, 192, 107}: "OSI PLUS CORPORATION",
- [3]byte{0, 192, 108}: "SVEC COMPUTER CORP.",
- [3]byte{0, 192, 109}: "BOCA RESEARCH, INC.",
- [3]byte{0, 192, 110}: "HAFT TECHNOLOGY, INC.",
- [3]byte{0, 192, 111}: "KOMATSU LTD.",
- [3]byte{0, 192, 112}: "SECTRA SECURE-TRANSMISSION AB",
- [3]byte{0, 192, 113}: "AREANEX COMMUNICATIONS, INC.",
- [3]byte{0, 192, 114}: "KNX LTD.",
- [3]byte{0, 192, 115}: "XEDIA CORPORATION",
- [3]byte{0, 192, 116}: "TOYODA AUTOMATIC LOOM",
- [3]byte{0, 192, 117}: "XANTE CORPORATION",
- [3]byte{0, 192, 118}: "I-DATA INTERNATIONAL A-S",
- [3]byte{0, 192, 119}: "DAEWOO TELECOM LTD.",
- [3]byte{0, 192, 120}: "COMPUTER SYSTEMS ENGINEERING",
- [3]byte{0, 192, 121}: "FONSYS CO.,LTD.",
- [3]byte{0, 192, 122}: "PRIVA B.V.",
- [3]byte{0, 192, 123}: "ASCEND COMMUNICATIONS, INC.",
- [3]byte{0, 192, 124}: "HIGHTECH INFORMATION",
- [3]byte{0, 192, 125}: "RISC DEVELOPMENTS LTD.",
- [3]byte{0, 192, 126}: "KUBOTA CORPORATION ELECTRONIC",
- [3]byte{0, 192, 127}: "NUPON COMPUTING CORP.",
- [3]byte{0, 192, 128}: "NETSTAR, INC.",
- [3]byte{0, 192, 129}: "METRODATA LTD.",
- [3]byte{0, 192, 130}: "MOORE PRODUCTS CO.",
- [3]byte{0, 192, 131}: "TRACE MOUNTAIN PRODUCTS, INC.",
- [3]byte{0, 192, 132}: "DATA LINK CORP. LTD.",
- [3]byte{0, 192, 133}: "ELECTRONICS FOR IMAGING, INC.",
- [3]byte{0, 192, 134}: "THE LYNK CORPORATION",
- [3]byte{0, 192, 135}: "UUNET TECHNOLOGIES, INC.",
- [3]byte{0, 192, 136}: "EKF ELEKTRONIK GMBH",
- [3]byte{0, 192, 137}: "TELINDUS DISTRIBUTION",
- [3]byte{0, 192, 138}: "Lauterbach GmbH",
- [3]byte{0, 192, 139}: "RISQ MODULAR SYSTEMS, INC.",
- [3]byte{0, 192, 140}: "PERFORMANCE TECHNOLOGIES, INC.",
- [3]byte{0, 192, 141}: "TRONIX PRODUCT DEVELOPMENT",
- [3]byte{0, 192, 142}: "NETWORK INFORMATION TECHNOLOGY",
- [3]byte{0, 192, 143}: "Panasonic Electric Works Co., Ltd.",
- [3]byte{0, 192, 144}: "PRAIM S.R.L.",
- [3]byte{0, 192, 145}: "JABIL CIRCUIT, INC.",
- [3]byte{0, 192, 146}: "MENNEN MEDICAL INC.",
- [3]byte{0, 192, 147}: "ALTA RESEARCH CORP.",
- [3]byte{0, 192, 148}: "VMX INC.",
- [3]byte{0, 192, 149}: "ZNYX Networks, Inc.",
- [3]byte{0, 192, 150}: "TAMURA CORPORATION",
- [3]byte{0, 192, 151}: "ARCHIPEL SA",
- [3]byte{0, 192, 152}: "CHUNTEX ELECTRONIC CO., LTD.",
- [3]byte{0, 192, 153}: "YOSHIKI INDUSTRIAL CO.,LTD.",
- [3]byte{0, 192, 154}: "PHOTONICS CORPORATION",
- [3]byte{0, 192, 155}: "RELIANCE COMM/TEC, R-TEC",
- [3]byte{0, 192, 156}: "HIOKI E.E. CORPORATION",
- [3]byte{0, 192, 157}: "DISTRIBUTED SYSTEMS INT'L, INC",
- [3]byte{0, 192, 158}: "CACHE COMPUTERS, INC.",
- [3]byte{0, 192, 159}: "QUANTA COMPUTER INC.",
- [3]byte{0, 192, 160}: "ADVANCE MICRO RESEARCH, INC.",
- [3]byte{0, 192, 161}: "TOKYO DENSHI SEKEI CO.",
- [3]byte{0, 192, 162}: "INTERMEDIUM A/S",
- [3]byte{0, 192, 163}: "DUAL ENTERPRISES CORPORATION",
- [3]byte{0, 192, 164}: "UNIGRAF OY",
- [3]byte{0, 192, 165}: "DICKENS DATA SYSTEMS",
- [3]byte{0, 192, 166}: "EXICOM AUSTRALIA PTY. LTD",
- [3]byte{0, 192, 167}: "SEEL LTD.",
- [3]byte{0, 192, 168}: "GVC CORPORATION",
- [3]byte{0, 192, 169}: "BARRON MCCANN LTD.",
- [3]byte{0, 192, 170}: "SILICON VALLEY COMPUTER",
- [3]byte{0, 192, 171}: "Telco Systems, Inc.",
- [3]byte{0, 192, 172}: "GAMBIT COMPUTER COMMUNICATIONS",
- [3]byte{0, 192, 173}: "MARBEN COMMUNICATION SYSTEMS",
- [3]byte{0, 192, 174}: "TOWERCOM CO. INC. DBA PC HOUSE",
- [3]byte{0, 192, 175}: "TEKLOGIX INC.",
- [3]byte{0, 192, 176}: "GCC TECHNOLOGIES,INC.",
- [3]byte{0, 192, 177}: "GENIUS NET CO.",
- [3]byte{0, 192, 178}: "NORAND CORPORATION",
- [3]byte{0, 192, 179}: "COMSTAT DATACOMM CORPORATION",
- [3]byte{0, 192, 180}: "MYSON TECHNOLOGY, INC.",
- [3]byte{0, 192, 181}: "CORPORATE NETWORK SYSTEMS,INC.",
- [3]byte{0, 192, 182}: "Overland Storage, Inc.",
- [3]byte{0, 192, 183}: "AMERICAN POWER CONVERSION CORP",
- [3]byte{0, 192, 184}: "FRASER'S HILL LTD.",
- [3]byte{0, 192, 185}: "FUNK SOFTWARE, INC.",
- [3]byte{0, 192, 186}: "NETVANTAGE",
- [3]byte{0, 192, 187}: "FORVAL CREATIVE, INC.",
- [3]byte{0, 192, 188}: "TELECOM AUSTRALIA/CSSC",
- [3]byte{0, 192, 189}: "INEX TECHNOLOGIES, INC.",
- [3]byte{0, 192, 190}: "ALCATEL - SEL",
- [3]byte{0, 192, 191}: "TECHNOLOGY CONCEPTS, LTD.",
- [3]byte{0, 192, 192}: "SHORE MICROSYSTEMS, INC.",
- [3]byte{0, 192, 193}: "QUAD/GRAPHICS, INC.",
- [3]byte{0, 192, 194}: "INFINITE NETWORKS LTD.",
- [3]byte{0, 192, 195}: "ACUSON COMPUTED SONOGRAPHY",
- [3]byte{0, 192, 196}: "COMPUTER OPERATIONAL",
- [3]byte{0, 192, 197}: "SID INFORMATICA",
- [3]byte{0, 192, 198}: "PERSONAL MEDIA CORP.",
- [3]byte{0, 192, 199}: "SPARKTRUM MICROSYSTEMS, INC.",
- [3]byte{0, 192, 200}: "MICRO BYTE PTY. LTD.",
- [3]byte{0, 192, 201}: "ELSAG BAILEY PROCESS",
- [3]byte{0, 192, 202}: "ALFA, INC.",
- [3]byte{0, 192, 203}: "CONTROL TECHNOLOGY CORPORATION",
- [3]byte{0, 192, 204}: "TELESCIENCES CO SYSTEMS, INC.",
- [3]byte{0, 192, 205}: "COMELTA, S.A.",
- [3]byte{0, 192, 206}: "CEI SYSTEMS & ENGINEERING PTE",
- [3]byte{0, 192, 207}: "IMATRAN VOIMA OY",
- [3]byte{0, 192, 208}: "RATOC SYSTEM INC.",
- [3]byte{0, 192, 209}: "COMTREE TECHNOLOGY CORPORATION",
- [3]byte{0, 192, 210}: "SYNTELLECT, INC.",
- [3]byte{0, 192, 211}: "OLYMPUS IMAGE SYSTEMS, INC.",
- [3]byte{0, 192, 212}: "AXON NETWORKS, INC.",
- [3]byte{0, 192, 213}: "Werbeagentur Jürgen Siebert",
- [3]byte{0, 192, 214}: "J1 SYSTEMS, INC.",
- [3]byte{0, 192, 215}: "TAIWAN TRADING CENTER DBA",
- [3]byte{0, 192, 216}: "UNIVERSAL DATA SYSTEMS",
- [3]byte{0, 192, 217}: "QUINTE NETWORK CONFIDENTIALITY",
- [3]byte{0, 192, 218}: "NICE SYSTEMS LTD.",
- [3]byte{0, 192, 219}: "IPC CORPORATION (PTE) LTD.",
- [3]byte{0, 192, 220}: "EOS TECHNOLOGIES, INC.",
- [3]byte{0, 192, 221}: "QLogic Corporation",
- [3]byte{0, 192, 222}: "ZCOMM, INC.",
- [3]byte{0, 192, 223}: "KYE Systems Corp.",
- [3]byte{0, 192, 224}: "DSC COMMUNICATION CORP.",
- [3]byte{0, 192, 225}: "SONIC SOLUTIONS",
- [3]byte{0, 192, 226}: "CALCOMP, INC.",
- [3]byte{0, 192, 227}: "OSITECH COMMUNICATIONS, INC.",
- [3]byte{0, 192, 228}: "SIEMENS BUILDING",
- [3]byte{0, 192, 229}: "GESPAC, S.A.",
- [3]byte{0, 192, 230}: "Verilink Corporation",
- [3]byte{0, 192, 231}: "FIBERDATA AB",
- [3]byte{0, 192, 232}: "PLEXCOM, INC.",
- [3]byte{0, 192, 233}: "OAK SOLUTIONS, LTD.",
- [3]byte{0, 192, 234}: "ARRAY TECHNOLOGY LTD.",
- [3]byte{0, 192, 235}: "SEH COMPUTERTECHNIK GMBH",
- [3]byte{0, 192, 236}: "DAUPHIN TECHNOLOGY",
- [3]byte{0, 192, 237}: "US ARMY ELECTRONIC",
- [3]byte{0, 192, 238}: "KYOCERA Display Corporation",
- [3]byte{0, 192, 239}: "ABIT CORPORATION",
- [3]byte{0, 192, 240}: "Kingston Technology Company, Inc.",
- [3]byte{0, 192, 241}: "SHINKO ELECTRIC CO., LTD.",
- [3]byte{0, 192, 242}: "TRANSITION NETWORKS",
- [3]byte{0, 192, 243}: "NETWORK COMMUNICATIONS CORP.",
- [3]byte{0, 192, 244}: "INTERLINK SYSTEM CO., LTD.",
- [3]byte{0, 192, 245}: "METACOMP, INC.",
- [3]byte{0, 192, 246}: "CELAN TECHNOLOGY INC.",
- [3]byte{0, 192, 247}: "ENGAGE COMMUNICATION, INC.",
- [3]byte{0, 192, 248}: "ABOUT COMPUTING INC.",
- [3]byte{0, 192, 249}: "Artesyn Embedded Technologies",
- [3]byte{0, 192, 250}: "CANARY COMMUNICATIONS, INC.",
- [3]byte{0, 192, 251}: "ADVANCED TECHNOLOGY LABS",
- [3]byte{0, 192, 252}: "ELASTIC REALITY, INC.",
- [3]byte{0, 192, 253}: "PROSUM",
- [3]byte{0, 192, 254}: "APTEC COMPUTER SYSTEMS, INC.",
- [3]byte{0, 192, 255}: "Seagate Cloud Systems Inc",
- [3]byte{0, 193, 79}: "DDL Co,.ltd.",
- [3]byte{0, 193, 100}: "Cisco Systems, Inc",
- [3]byte{0, 193, 177}: "Cisco Systems, Inc",
- [3]byte{0, 194, 198}: "Intel Corporate",
- [3]byte{0, 197, 219}: "Datatech Sistemas Digitales Avanzados SL",
- [3]byte{0, 198, 16}: "Apple, Inc.",
- [3]byte{0, 200, 139}: "Cisco Systems, Inc",
- [3]byte{0, 202, 229}: "Cisco Systems, Inc",
- [3]byte{0, 203, 0}: "Private",
- [3]byte{0, 203, 189}: "Cambridge Broadband Networks Ltd.",
- [3]byte{0, 204, 252}: "Cisco Systems, Inc",
- [3]byte{0, 205, 144}: "MAS Elektronik AG",
- [3]byte{0, 205, 254}: "Apple, Inc.",
- [3]byte{0, 207, 28}: "Communication Machinery Corporation",
- [3]byte{0, 208, 0}: "FERRAN SCIENTIFIC, INC.",
- [3]byte{0, 208, 1}: "VST TECHNOLOGIES, INC.",
- [3]byte{0, 208, 2}: "DITECH CORPORATION",
- [3]byte{0, 208, 3}: "COMDA ENTERPRISES CORP.",
- [3]byte{0, 208, 4}: "PENTACOM LTD.",
- [3]byte{0, 208, 5}: "ZHS ZEITMANAGEMENTSYSTEME",
- [3]byte{0, 208, 6}: "Cisco Systems, Inc",
- [3]byte{0, 208, 7}: "MIC ASSOCIATES, INC.",
- [3]byte{0, 208, 8}: "MACTELL CORPORATION",
- [3]byte{0, 208, 9}: "HSING TECH. ENTERPRISE CO. LTD",
- [3]byte{0, 208, 10}: "LANACCESS TELECOM S.A.",
- [3]byte{0, 208, 11}: "RHK TECHNOLOGY, INC.",
- [3]byte{0, 208, 12}: "SNIJDER MICRO SYSTEMS",
- [3]byte{0, 208, 13}: "MICROMERITICS INSTRUMENT",
- [3]byte{0, 208, 14}: "PLURIS, INC.",
- [3]byte{0, 208, 15}: "SPEECH DESIGN GMBH",
- [3]byte{0, 208, 16}: "CONVERGENT NETWORKS, INC.",
- [3]byte{0, 208, 17}: "PRISM VIDEO, INC.",
- [3]byte{0, 208, 18}: "GATEWORKS CORP.",
- [3]byte{0, 208, 19}: "PRIMEX AEROSPACE COMPANY",
- [3]byte{0, 208, 20}: "ROOT, INC.",
- [3]byte{0, 208, 21}: "UNIVEX MICROTECHNOLOGY CORP.",
- [3]byte{0, 208, 22}: "SCM MICROSYSTEMS, INC.",
- [3]byte{0, 208, 23}: "SYNTECH INFORMATION CO., LTD.",
- [3]byte{0, 208, 24}: "QWES. COM, INC.",
- [3]byte{0, 208, 25}: "DAINIPPON SCREEN CORPORATE",
- [3]byte{0, 208, 26}: "URMET TLC S.P.A.",
- [3]byte{0, 208, 27}: "MIMAKI ENGINEERING CO., LTD.",
- [3]byte{0, 208, 28}: "SBS TECHNOLOGIES,",
- [3]byte{0, 208, 29}: "FURUNO ELECTRIC CO., LTD.",
- [3]byte{0, 208, 30}: "PINGTEL CORP.",
- [3]byte{0, 208, 31}: "Senetas Corporation Ltd",
- [3]byte{0, 208, 32}: "AIM SYSTEM, INC.",
- [3]byte{0, 208, 33}: "REGENT ELECTRONICS CORP.",
- [3]byte{0, 208, 34}: "INCREDIBLE TECHNOLOGIES, INC.",
- [3]byte{0, 208, 35}: "INFORTREND TECHNOLOGY, INC.",
- [3]byte{0, 208, 36}: "Cognex Corporation",
- [3]byte{0, 208, 37}: "XROSSTECH, INC.",
- [3]byte{0, 208, 38}: "HIRSCHMANN AUSTRIA GMBH",
- [3]byte{0, 208, 39}: "APPLIED AUTOMATION, INC.",
- [3]byte{0, 208, 40}: "Harmonic, Inc",
- [3]byte{0, 208, 41}: "WAKEFERN FOOD CORPORATION",
- [3]byte{0, 208, 42}: "Voxent Systems Ltd.",
- [3]byte{0, 208, 43}: "JETCELL, INC.",
- [3]byte{0, 208, 44}: "CAMPBELL SCIENTIFIC, INC.",
- [3]byte{0, 208, 45}: "ADEMCO",
- [3]byte{0, 208, 46}: "COMMUNICATION AUTOMATION CORP.",
- [3]byte{0, 208, 47}: "VLSI TECHNOLOGY INC.",
- [3]byte{0, 208, 48}: "Safetran Systems Corp",
- [3]byte{0, 208, 49}: "INDUSTRIAL LOGIC CORPORATION",
- [3]byte{0, 208, 50}: "YANO ELECTRIC CO., LTD.",
- [3]byte{0, 208, 51}: "DALIAN DAXIAN NETWORK",
- [3]byte{0, 208, 52}: "ORMEC SYSTEMS CORP.",
- [3]byte{0, 208, 53}: "BEHAVIOR TECH. COMPUTER CORP.",
- [3]byte{0, 208, 54}: "TECHNOLOGY ATLANTA CORP.",
- [3]byte{0, 208, 55}: "ARRIS Group, Inc.",
- [3]byte{0, 208, 56}: "FIVEMERE, LTD.",
- [3]byte{0, 208, 57}: "UTILICOM, INC.",
- [3]byte{0, 208, 58}: "ZONEWORX, INC.",
- [3]byte{0, 208, 59}: "VISION PRODUCTS PTY. LTD.",
- [3]byte{0, 208, 60}: "Vieo, Inc.",
- [3]byte{0, 208, 61}: "GALILEO TECHNOLOGY, LTD.",
- [3]byte{0, 208, 62}: "ROCKETCHIPS, INC.",
- [3]byte{0, 208, 63}: "AMERICAN COMMUNICATION",
- [3]byte{0, 208, 64}: "SYSMATE CO., LTD.",
- [3]byte{0, 208, 65}: "AMIGO TECHNOLOGY CO., LTD.",
- [3]byte{0, 208, 66}: "MAHLO GMBH & CO. UG",
- [3]byte{0, 208, 67}: "ZONAL RETAIL DATA SYSTEMS",
- [3]byte{0, 208, 68}: "ALIDIAN NETWORKS, INC.",
- [3]byte{0, 208, 69}: "KVASER AB",
- [3]byte{0, 208, 70}: "DOLBY LABORATORIES, INC.",
- [3]byte{0, 208, 71}: "XN TECHNOLOGIES",
- [3]byte{0, 208, 72}: "ECTON, INC.",
- [3]byte{0, 208, 73}: "IMPRESSTEK CO., LTD.",
- [3]byte{0, 208, 74}: "PRESENCE TECHNOLOGY GMBH",
- [3]byte{0, 208, 75}: "LA CIE GROUP S.A.",
- [3]byte{0, 208, 76}: "EUROTEL TELECOM LTD.",
- [3]byte{0, 208, 77}: "DIV OF RESEARCH & STATISTICS",
- [3]byte{0, 208, 78}: "LOGIBAG",
- [3]byte{0, 208, 79}: "BITRONICS, INC.",
- [3]byte{0, 208, 80}: "ISKRATEL",
- [3]byte{0, 208, 81}: "O2 MICRO, INC.",
- [3]byte{0, 208, 82}: "ASCEND COMMUNICATIONS, INC.",
- [3]byte{0, 208, 83}: "CONNECTED SYSTEMS",
- [3]byte{0, 208, 84}: "SAS INSTITUTE INC.",
- [3]byte{0, 208, 85}: "KATHREIN-WERKE KG",
- [3]byte{0, 208, 86}: "SOMAT CORPORATION",
- [3]byte{0, 208, 87}: "ULTRAK, INC.",
- [3]byte{0, 208, 88}: "Cisco Systems, Inc",
- [3]byte{0, 208, 89}: "AMBIT MICROSYSTEMS CORP.",
- [3]byte{0, 208, 90}: "SYMBIONICS, LTD.",
- [3]byte{0, 208, 91}: "ACROLOOP MOTION CONTROL",
- [3]byte{0, 208, 92}: "KATHREIN TechnoTrend GmbH",
- [3]byte{0, 208, 93}: "INTELLIWORXX, INC.",
- [3]byte{0, 208, 94}: "STRATABEAM TECHNOLOGY, INC.",
- [3]byte{0, 208, 95}: "VALCOM, INC.",
- [3]byte{0, 208, 96}: "Panasonic Europe Ltd.",
- [3]byte{0, 208, 97}: "TREMON ENTERPRISES CO., LTD.",
- [3]byte{0, 208, 98}: "DIGIGRAM",
- [3]byte{0, 208, 99}: "Cisco Systems, Inc",
- [3]byte{0, 208, 100}: "MULTITEL",
- [3]byte{0, 208, 101}: "TOKO ELECTRIC",
- [3]byte{0, 208, 102}: "WINTRISS ENGINEERING CORP.",
- [3]byte{0, 208, 103}: "CAMPIO COMMUNICATIONS",
- [3]byte{0, 208, 104}: "IWILL CORPORATION",
- [3]byte{0, 208, 105}: "TECHNOLOGIC SYSTEMS",
- [3]byte{0, 208, 106}: "LINKUP SYSTEMS CORPORATION",
- [3]byte{0, 208, 107}: "SR TELECOM INC.",
- [3]byte{0, 208, 108}: "SHAREWAVE, INC.",
- [3]byte{0, 208, 109}: "ACRISON, INC.",
- [3]byte{0, 208, 110}: "TRENDVIEW RECORDERS LTD.",
- [3]byte{0, 208, 111}: "KMC CONTROLS",
- [3]byte{0, 208, 112}: "LONG WELL ELECTRONICS CORP.",
- [3]byte{0, 208, 113}: "ECHELON CORP.",
- [3]byte{0, 208, 114}: "BROADLOGIC",
- [3]byte{0, 208, 115}: "ACN ADVANCED COMMUNICATIONS",
- [3]byte{0, 208, 116}: "TAQUA SYSTEMS, INC.",
- [3]byte{0, 208, 117}: "ALARIS MEDICAL SYSTEMS, INC.",
- [3]byte{0, 208, 118}: "Bank of America",
- [3]byte{0, 208, 119}: "LUCENT TECHNOLOGIES",
- [3]byte{0, 208, 120}: "Eltex of Sweden AB",
- [3]byte{0, 208, 121}: "Cisco Systems, Inc",
- [3]byte{0, 208, 122}: "AMAQUEST COMPUTER CORP.",
- [3]byte{0, 208, 123}: "COMCAM INTERNATIONAL INC",
- [3]byte{0, 208, 124}: "KOYO ELECTRONICS INC. CO.,LTD.",
- [3]byte{0, 208, 125}: "COSINE COMMUNICATIONS",
- [3]byte{0, 208, 126}: "KEYCORP LTD.",
- [3]byte{0, 208, 127}: "STRATEGY & TECHNOLOGY, LIMITED",
- [3]byte{0, 208, 128}: "EXABYTE CORPORATION",
- [3]byte{0, 208, 129}: "RTD Embedded Technologies, Inc.",
- [3]byte{0, 208, 130}: "IOWAVE INC.",
- [3]byte{0, 208, 131}: "INVERTEX, INC.",
- [3]byte{0, 208, 132}: "NEXCOMM SYSTEMS, INC.",
- [3]byte{0, 208, 133}: "OTIS ELEVATOR COMPANY",
- [3]byte{0, 208, 134}: "FOVEON, INC.",
- [3]byte{0, 208, 135}: "MICROFIRST INC.",
- [3]byte{0, 208, 136}: "ARRIS Group, Inc.",
- [3]byte{0, 208, 137}: "DYNACOLOR, INC.",
- [3]byte{0, 208, 138}: "PHOTRON USA",
- [3]byte{0, 208, 139}: "ADVA Optical Networking Ltd.",
- [3]byte{0, 208, 140}: "GENOA TECHNOLOGY, INC.",
- [3]byte{0, 208, 141}: "PHOENIX GROUP, INC.",
- [3]byte{0, 208, 142}: "Grass Valley, A Belden Brand",
- [3]byte{0, 208, 143}: "ARDENT TECHNOLOGIES, INC.",
- [3]byte{0, 208, 144}: "Cisco Systems, Inc",
- [3]byte{0, 208, 145}: "SMARTSAN SYSTEMS, INC.",
- [3]byte{0, 208, 146}: "GLENAYRE WESTERN MULTIPLEX",
- [3]byte{0, 208, 147}: "TQ - COMPONENTS GMBH",
- [3]byte{0, 208, 148}: "Seeion Control LLC",
- [3]byte{0, 208, 149}: "Alcatel-Lucent Enterprise",
- [3]byte{0, 208, 150}: "3COM EUROPE LTD.",
- [3]byte{0, 208, 151}: "Cisco Systems, Inc",
- [3]byte{0, 208, 152}: "Photon Dynamics Canada Inc.",
- [3]byte{0, 208, 153}: "Elcard Wireless Systems Oy",
- [3]byte{0, 208, 154}: "FILANET CORPORATION",
- [3]byte{0, 208, 155}: "SPECTEL LTD.",
- [3]byte{0, 208, 156}: "KAPADIA COMMUNICATIONS",
- [3]byte{0, 208, 157}: "VERIS INDUSTRIES",
- [3]byte{0, 208, 158}: "2Wire Inc",
- [3]byte{0, 208, 159}: "NOVTEK TEST SYSTEMS",
- [3]byte{0, 208, 160}: "MIPS DENMARK",
- [3]byte{0, 208, 161}: "OSKAR VIERLING GMBH + CO. KG",
- [3]byte{0, 208, 162}: "INTEGRATED DEVICE",
- [3]byte{0, 208, 163}: "VOCAL DATA, INC.",
- [3]byte{0, 208, 164}: "ALANTRO COMMUNICATIONS",
- [3]byte{0, 208, 165}: "AMERICAN ARIUM",
- [3]byte{0, 208, 166}: "LANBIRD TECHNOLOGY CO., LTD.",
- [3]byte{0, 208, 167}: "TOKYO SOKKI KENKYUJO CO., LTD.",
- [3]byte{0, 208, 168}: "NETWORK ENGINES, INC.",
- [3]byte{0, 208, 169}: "SHINANO KENSHI CO., LTD.",
- [3]byte{0, 208, 170}: "CHASE COMMUNICATIONS",
- [3]byte{0, 208, 171}: "DELTAKABEL TELECOM CV",
- [3]byte{0, 208, 172}: "Commscope, Inc",
- [3]byte{0, 208, 173}: "TL INDUSTRIES",
- [3]byte{0, 208, 174}: "ORESIS COMMUNICATIONS, INC.",
- [3]byte{0, 208, 175}: "CUTLER-HAMMER, INC.",
- [3]byte{0, 208, 176}: "BITSWITCH LTD.",
- [3]byte{0, 208, 177}: "OMEGA ELECTRONICS SA",
- [3]byte{0, 208, 178}: "Xiotech Corporation",
- [3]byte{0, 208, 179}: "DRS Technologies Canada Ltd",
- [3]byte{0, 208, 180}: "KATSUJIMA CO., LTD.",
- [3]byte{0, 208, 181}: "IPricot formerly DotCom",
- [3]byte{0, 208, 182}: "CRESCENT NETWORKS, INC.",
- [3]byte{0, 208, 183}: "Intel Corporation",
- [3]byte{0, 208, 184}: "Iomega Corporation",
- [3]byte{0, 208, 185}: "MICROTEK INTERNATIONAL, INC.",
- [3]byte{0, 208, 186}: "Cisco Systems, Inc",
- [3]byte{0, 208, 187}: "Cisco Systems, Inc",
- [3]byte{0, 208, 188}: "Cisco Systems, Inc",
- [3]byte{0, 208, 189}: "Lattice Semiconductor Corp. (LPA)",
- [3]byte{0, 208, 190}: "EMUTEC INC.",
- [3]byte{0, 208, 191}: "PIVOTAL TECHNOLOGIES",
- [3]byte{0, 208, 192}: "Cisco Systems, Inc",
- [3]byte{0, 208, 193}: "HARMONIC DATA SYSTEMS, LTD.",
- [3]byte{0, 208, 194}: "BALTHAZAR TECHNOLOGY AB",
- [3]byte{0, 208, 195}: "VIVID TECHNOLOGY PTE, LTD.",
- [3]byte{0, 208, 196}: "TERATECH CORPORATION",
- [3]byte{0, 208, 197}: "COMPUTATIONAL SYSTEMS, INC.",
- [3]byte{0, 208, 198}: "THOMAS & BETTS CORP.",
- [3]byte{0, 208, 199}: "PATHWAY, INC.",
- [3]byte{0, 208, 200}: "Prevas A/S",
- [3]byte{0, 208, 201}: "ADVANTECH CO., LTD.",
- [3]byte{0, 208, 202}: "Intrinsyc Software International Inc.",
- [3]byte{0, 208, 203}: "DASAN CO., LTD.",
- [3]byte{0, 208, 204}: "TECHNOLOGIES LYRE INC.",
- [3]byte{0, 208, 205}: "ATAN TECHNOLOGY INC.",
- [3]byte{0, 208, 206}: "ASYST ELECTRONIC",
- [3]byte{0, 208, 207}: "MORETON BAY",
- [3]byte{0, 208, 208}: "ZHONGXING TELECOM LTD.",
- [3]byte{0, 208, 209}: "Sycamore Networks",
- [3]byte{0, 208, 210}: "EPILOG CORPORATION",
- [3]byte{0, 208, 211}: "Cisco Systems, Inc",
- [3]byte{0, 208, 212}: "V-BITS, INC.",
- [3]byte{0, 208, 213}: "GRUNDIG AG",
- [3]byte{0, 208, 214}: "AETHRA TELECOMUNICAZIONI",
- [3]byte{0, 208, 215}: "B2C2, INC.",
- [3]byte{0, 208, 216}: "3Com Corporation",
- [3]byte{0, 208, 217}: "DEDICATED MICROCOMPUTERS",
- [3]byte{0, 208, 218}: "TAICOM DATA SYSTEMS CO., LTD.",
- [3]byte{0, 208, 219}: "MCQUAY INTERNATIONAL",
- [3]byte{0, 208, 220}: "MODULAR MINING SYSTEMS, INC.",
- [3]byte{0, 208, 221}: "SUNRISE TELECOM, INC.",
- [3]byte{0, 208, 222}: "PHILIPS MULTIMEDIA NETWORK",
- [3]byte{0, 208, 223}: "KUZUMI ELECTRONICS, INC.",
- [3]byte{0, 208, 224}: "DOOIN ELECTRONICS CO.",
- [3]byte{0, 208, 225}: "AVIONITEK ISRAEL INC.",
- [3]byte{0, 208, 226}: "MRT MICRO, INC.",
- [3]byte{0, 208, 227}: "ELE-CHEM ENGINEERING CO., LTD.",
- [3]byte{0, 208, 228}: "Cisco Systems, Inc",
- [3]byte{0, 208, 229}: "SOLIDUM SYSTEMS CORP.",
- [3]byte{0, 208, 230}: "IBOND INC.",
- [3]byte{0, 208, 231}: "VCON TELECOMMUNICATION LTD.",
- [3]byte{0, 208, 232}: "MAC SYSTEM CO., LTD.",
- [3]byte{0, 208, 233}: "Advantage Century Telecommunication Corp.",
- [3]byte{0, 208, 234}: "NEXTONE COMMUNICATIONS, INC.",
- [3]byte{0, 208, 235}: "LIGHTERA NETWORKS, INC.",
- [3]byte{0, 208, 236}: "NAKAYO Inc",
- [3]byte{0, 208, 237}: "XIOX",
- [3]byte{0, 208, 238}: "DICTAPHONE CORPORATION",
- [3]byte{0, 208, 239}: "IGT",
- [3]byte{0, 208, 240}: "CONVISION TECHNOLOGY GMBH",
- [3]byte{0, 208, 241}: "SEGA ENTERPRISES, LTD.",
- [3]byte{0, 208, 242}: "MONTEREY NETWORKS",
- [3]byte{0, 208, 243}: "SOLARI DI UDINE SPA",
- [3]byte{0, 208, 244}: "CARINTHIAN TECH INSTITUTE",
- [3]byte{0, 208, 245}: "ORANGE MICRO, INC.",
- [3]byte{0, 208, 246}: "Nokia",
- [3]byte{0, 208, 247}: "NEXT NETS CORPORATION",
- [3]byte{0, 208, 248}: "FUJIAN STAR TERMINAL",
- [3]byte{0, 208, 249}: "ACUTE COMMUNICATIONS CORP.",
- [3]byte{0, 208, 250}: "Thales e-Security Ltd.",
- [3]byte{0, 208, 251}: "TEK MICROSYSTEMS, INCORPORATED",
- [3]byte{0, 208, 252}: "GRANITE MICROSYSTEMS",
- [3]byte{0, 208, 253}: "OPTIMA TELE.COM, INC.",
- [3]byte{0, 208, 254}: "ASTRAL POINT",
- [3]byte{0, 208, 255}: "Cisco Systems, Inc",
- [3]byte{0, 209, 28}: "ACETEL",
- [3]byte{0, 211, 24}: "SPG Controls",
- [3]byte{0, 211, 141}: "Hotel Technology Next Generation",
- [3]byte{0, 214, 50}: "GE Energy",
- [3]byte{0, 215, 143}: "Cisco Systems, Inc",
- [3]byte{0, 217, 209}: "Sony Interactive Entertainment Inc.",
- [3]byte{0, 218, 85}: "Cisco Systems, Inc",
- [3]byte{0, 219, 30}: "Albedo Telecom SL",
- [3]byte{0, 219, 69}: "THAMWAY CO.,LTD.",
- [3]byte{0, 219, 112}: "Apple, Inc.",
- [3]byte{0, 219, 223}: "Intel Corporate",
- [3]byte{0, 221, 0}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 1}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 2}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 3}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 4}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 5}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 6}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 7}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 8}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 9}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 10}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 11}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 12}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 13}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 14}: "UNGERMANN-BASS INC.",
- [3]byte{0, 221, 15}: "UNGERMANN-BASS INC.",
- [3]byte{0, 222, 251}: "Cisco Systems, Inc",
- [3]byte{0, 224, 0}: "FUJITSU LIMITED",
- [3]byte{0, 224, 1}: "STRAND LIGHTING LIMITED",
- [3]byte{0, 224, 2}: "CROSSROADS SYSTEMS, INC.",
- [3]byte{0, 224, 3}: "NOKIA WIRELESS BUSINESS COMMUN",
- [3]byte{0, 224, 4}: "PMC-SIERRA, INC.",
- [3]byte{0, 224, 5}: "TECHNICAL CORP.",
- [3]byte{0, 224, 6}: "SILICON INTEGRATED SYS. CORP.",
- [3]byte{0, 224, 7}: "Avaya ECS Ltd",
- [3]byte{0, 224, 8}: "AMAZING CONTROLS! INC.",
- [3]byte{0, 224, 9}: "MARATHON TECHNOLOGIES CORP.",
- [3]byte{0, 224, 10}: "DIBA, INC.",
- [3]byte{0, 224, 11}: "ROOFTOP COMMUNICATIONS CORP.",
- [3]byte{0, 224, 12}: "MOTOROLA",
- [3]byte{0, 224, 13}: "RADIANT SYSTEMS",
- [3]byte{0, 224, 14}: "AVALON IMAGING SYSTEMS, INC.",
- [3]byte{0, 224, 15}: "Shanghai Baud Data Communication Co.,Ltd.",
- [3]byte{0, 224, 16}: "HESS SB-AUTOMATENBAU GmbH",
- [3]byte{0, 224, 17}: "UNIDEN CORPORATION",
- [3]byte{0, 224, 18}: "PLUTO TECHNOLOGIES INTERNATIONAL INC.",
- [3]byte{0, 224, 19}: "EASTERN ELECTRONIC CO., LTD.",
- [3]byte{0, 224, 20}: "Cisco Systems, Inc",
- [3]byte{0, 224, 21}: "HEIWA CORPORATION",
- [3]byte{0, 224, 22}: "RAPID CITY COMMUNICATIONS",
- [3]byte{0, 224, 23}: "EXXACT GmbH",
- [3]byte{0, 224, 24}: "ASUSTek COMPUTER INC.",
- [3]byte{0, 224, 25}: "ING. GIORDANO ELETTRONICA",
- [3]byte{0, 224, 26}: "COMTEC SYSTEMS. CO., LTD.",
- [3]byte{0, 224, 27}: "SPHERE COMMUNICATIONS, INC.",
- [3]byte{0, 224, 28}: "Cradlepoint, Inc",
- [3]byte{0, 224, 29}: "WebTV NETWORKS, INC.",
- [3]byte{0, 224, 30}: "Cisco Systems, Inc",
- [3]byte{0, 224, 31}: "AVIDIA Systems, Inc.",
- [3]byte{0, 224, 32}: "TECNOMEN OY",
- [3]byte{0, 224, 33}: "FREEGATE CORP.",
- [3]byte{0, 224, 34}: "Analog Devices, Inc.",
- [3]byte{0, 224, 35}: "TELRAD",
- [3]byte{0, 224, 36}: "GADZOOX NETWORKS",
- [3]byte{0, 224, 37}: "dit Co., Ltd.",
- [3]byte{0, 224, 38}: "Redlake MASD LLC",
- [3]byte{0, 224, 39}: "DUX, INC.",
- [3]byte{0, 224, 40}: "APTIX CORPORATION",
- [3]byte{0, 224, 41}: "STANDARD MICROSYSTEMS CORP.",
- [3]byte{0, 224, 42}: "TANDBERG TELEVISION AS",
- [3]byte{0, 224, 43}: "Extreme Networks, Inc.",
- [3]byte{0, 224, 44}: "AST COMPUTER",
- [3]byte{0, 224, 45}: "InnoMediaLogic, Inc.",
- [3]byte{0, 224, 46}: "SPC ELECTRONICS CORPORATION",
- [3]byte{0, 224, 47}: "MCNS HOLDINGS, L.P.",
- [3]byte{0, 224, 48}: "MELITA INTERNATIONAL CORP.",
- [3]byte{0, 224, 49}: "HAGIWARA ELECTRIC CO., LTD.",
- [3]byte{0, 224, 50}: "MISYS FINANCIAL SYSTEMS, LTD.",
- [3]byte{0, 224, 51}: "E.E.P.D. GmbH",
- [3]byte{0, 224, 52}: "Cisco Systems, Inc",
- [3]byte{0, 224, 53}: "Artesyn Embedded Technologies",
- [3]byte{0, 224, 54}: "PIONEER CORPORATION",
- [3]byte{0, 224, 55}: "CENTURY CORPORATION",
- [3]byte{0, 224, 56}: "PROXIMA CORPORATION",
- [3]byte{0, 224, 57}: "PARADYNE CORP.",
- [3]byte{0, 224, 58}: "Cabletron Systems, Inc.",
- [3]byte{0, 224, 59}: "PROMINET CORPORATION",
- [3]byte{0, 224, 60}: "AdvanSys",
- [3]byte{0, 224, 61}: "FOCON ELECTRONIC SYSTEMS A/S",
- [3]byte{0, 224, 62}: "ALFATECH, INC.",
- [3]byte{0, 224, 63}: "JATON CORPORATION",
- [3]byte{0, 224, 64}: "DeskStation Technology, Inc.",
- [3]byte{0, 224, 65}: "CSPI",
- [3]byte{0, 224, 66}: "Pacom Systems Ltd.",
- [3]byte{0, 224, 67}: "VitalCom",
- [3]byte{0, 224, 68}: "LSICS CORPORATION",
- [3]byte{0, 224, 69}: "TOUCHWAVE, INC.",
- [3]byte{0, 224, 70}: "BENTLY NEVADA CORP.",
- [3]byte{0, 224, 71}: "InFocus Corporation",
- [3]byte{0, 224, 72}: "SDL COMMUNICATIONS, INC.",
- [3]byte{0, 224, 73}: "MICROWI ELECTRONIC GmbH",
- [3]byte{0, 224, 74}: "ZX Technologies, Inc",
- [3]byte{0, 224, 75}: "JUMP INDUSTRIELLE COMPUTERTECHNIK GmbH",
- [3]byte{0, 224, 76}: "REALTEK SEMICONDUCTOR CORP.",
- [3]byte{0, 224, 77}: "INTERNET INITIATIVE JAPAN, INC",
- [3]byte{0, 224, 78}: "SANYO DENKI CO., LTD.",
- [3]byte{0, 224, 79}: "Cisco Systems, Inc",
- [3]byte{0, 224, 80}: "EXECUTONE INFORMATION SYSTEMS, INC.",
- [3]byte{0, 224, 81}: "TALX CORPORATION",
- [3]byte{0, 224, 82}: "Brocade Communications Systems, Inc.",
- [3]byte{0, 224, 83}: "CELLPORT LABS, INC.",
- [3]byte{0, 224, 84}: "KODAI HITEC CO., LTD.",
- [3]byte{0, 224, 85}: "INGENIERIA ELECTRONICA COMERCIAL INELCOM S.A.",
- [3]byte{0, 224, 86}: "HOLONTECH CORPORATION",
- [3]byte{0, 224, 87}: "HAN MICROTELECOM. CO., LTD.",
- [3]byte{0, 224, 88}: "PHASE ONE DENMARK A/S",
- [3]byte{0, 224, 89}: "CONTROLLED ENVIRONMENTS, LTD.",
- [3]byte{0, 224, 90}: "GALEA NETWORK SECURITY",
- [3]byte{0, 224, 91}: "WEST END SYSTEMS CORP.",
- [3]byte{0, 224, 92}: "Panasonic Healthcare Co., Ltd.",
- [3]byte{0, 224, 93}: "UNITEC CO., LTD.",
- [3]byte{0, 224, 94}: "JAPAN AVIATION ELECTRONICS INDUSTRY, LTD.",
- [3]byte{0, 224, 95}: "e-Net, Inc.",
- [3]byte{0, 224, 96}: "SHERWOOD",
- [3]byte{0, 224, 97}: "EdgePoint Networks, Inc.",
- [3]byte{0, 224, 98}: "HOST ENGINEERING",
- [3]byte{0, 224, 99}: "Cabletron Systems, Inc.",
- [3]byte{0, 224, 100}: "SAMSUNG ELECTRONICS",
- [3]byte{0, 224, 101}: "OPTICAL ACCESS INTERNATIONAL",
- [3]byte{0, 224, 102}: "ProMax Systems, Inc.",
- [3]byte{0, 224, 103}: "eac AUTOMATION-CONSULTING GmbH",
- [3]byte{0, 224, 104}: "MERRIMAC SYSTEMS INC.",
- [3]byte{0, 224, 105}: "JAYCOR",
- [3]byte{0, 224, 106}: "KAPSCH AG",
- [3]byte{0, 224, 107}: "W&G SPECIAL PRODUCTS",
- [3]byte{0, 224, 108}: "Ultra Electronics Command & Control Systems",
- [3]byte{0, 224, 109}: "COMPUWARE CORPORATION",
- [3]byte{0, 224, 110}: "FAR SYSTEMS S.p.A.",
- [3]byte{0, 224, 111}: "ARRIS Group, Inc.",
- [3]byte{0, 224, 112}: "DH TECHNOLOGY",
- [3]byte{0, 224, 113}: "EPIS MICROCOMPUTER",
- [3]byte{0, 224, 114}: "LYNK",
- [3]byte{0, 224, 115}: "NATIONAL AMUSEMENT NETWORK, INC.",
- [3]byte{0, 224, 116}: "TIERNAN COMMUNICATIONS, INC.",
- [3]byte{0, 224, 117}: "Verilink Corporation",
- [3]byte{0, 224, 118}: "DEVELOPMENT CONCEPTS, INC.",
- [3]byte{0, 224, 119}: "WEBGEAR, INC.",
- [3]byte{0, 224, 120}: "BERKELEY NETWORKS",
- [3]byte{0, 224, 121}: "A.T.N.R.",
- [3]byte{0, 224, 122}: "MIKRODIDAKT AB",
- [3]byte{0, 224, 123}: "BAY NETWORKS",
- [3]byte{0, 224, 124}: "METTLER-TOLEDO, INC.",
- [3]byte{0, 224, 125}: "NETRONIX, INC.",
- [3]byte{0, 224, 126}: "WALT DISNEY IMAGINEERING",
- [3]byte{0, 224, 127}: "LOGISTISTEM s.r.l.",
- [3]byte{0, 224, 128}: "CONTROL RESOURCES CORPORATION",
- [3]byte{0, 224, 129}: "TYAN COMPUTER CORP.",
- [3]byte{0, 224, 130}: "ANERMA",
- [3]byte{0, 224, 131}: "JATO TECHNOLOGIES, INC.",
- [3]byte{0, 224, 132}: "COMPULITE R&D",
- [3]byte{0, 224, 133}: "GLOBAL MAINTECH, INC.",
- [3]byte{0, 224, 134}: "Emerson Network Power, Avocent Division",
- [3]byte{0, 224, 135}: "LeCroy - Networking Productions Division",
- [3]byte{0, 224, 136}: "LTX-Credence CORPORATION",
- [3]byte{0, 224, 137}: "ION Networks, Inc.",
- [3]byte{0, 224, 138}: "GEC AVERY, LTD.",
- [3]byte{0, 224, 139}: "QLogic Corporation",
- [3]byte{0, 224, 140}: "NEOPARADIGM LABS, INC.",
- [3]byte{0, 224, 141}: "PRESSURE SYSTEMS, INC.",
- [3]byte{0, 224, 142}: "UTSTARCOM",
- [3]byte{0, 224, 143}: "Cisco Systems, Inc",
- [3]byte{0, 224, 144}: "BECKMAN LAB. AUTOMATION DIV.",
- [3]byte{0, 224, 145}: "LG Electronics",
- [3]byte{0, 224, 146}: "ADMTEK INCORPORATED",
- [3]byte{0, 224, 147}: "ACKFIN NETWORKS",
- [3]byte{0, 224, 148}: "OSAI SRL",
- [3]byte{0, 224, 149}: "ADVANCED-VISION TECHNOLGIES CORP.",
- [3]byte{0, 224, 150}: "SHIMADZU CORPORATION",
- [3]byte{0, 224, 151}: "CARRIER ACCESS CORPORATION",
- [3]byte{0, 224, 152}: "AboCom",
- [3]byte{0, 224, 153}: "SAMSON AG",
- [3]byte{0, 224, 154}: "Positron Inc.",
- [3]byte{0, 224, 155}: "ENGAGE NETWORKS, INC.",
- [3]byte{0, 224, 156}: "MII",
- [3]byte{0, 224, 157}: "SARNOFF CORPORATION",
- [3]byte{0, 224, 158}: "Quantum Corporation",
- [3]byte{0, 224, 159}: "PIXEL VISION",
- [3]byte{0, 224, 160}: "WILTRON CO.",
- [3]byte{0, 224, 161}: "HIMA PAUL HILDEBRANDT GmbH Co. KG",
- [3]byte{0, 224, 162}: "MICROSLATE INC.",
- [3]byte{0, 224, 163}: "Cisco Systems, Inc",
- [3]byte{0, 224, 164}: "ESAOTE S.p.A.",
- [3]byte{0, 224, 165}: "ComCore Semiconductor, Inc.",
- [3]byte{0, 224, 166}: "TELOGY NETWORKS, INC.",
- [3]byte{0, 224, 167}: "IPC INFORMATION SYSTEMS, INC.",
- [3]byte{0, 224, 168}: "SAT GmbH & Co.",
- [3]byte{0, 224, 169}: "FUNAI ELECTRIC CO., LTD.",
- [3]byte{0, 224, 170}: "ELECTROSONIC LTD.",
- [3]byte{0, 224, 171}: "DIMAT S.A.",
- [3]byte{0, 224, 172}: "MIDSCO, INC.",
- [3]byte{0, 224, 173}: "EES TECHNOLOGY, LTD.",
- [3]byte{0, 224, 174}: "XAQTI CORPORATION",
- [3]byte{0, 224, 175}: "GENERAL DYNAMICS INFORMATION SYSTEMS",
- [3]byte{0, 224, 176}: "Cisco Systems, Inc",
- [3]byte{0, 224, 177}: "Alcatel-Lucent Enterprise",
- [3]byte{0, 224, 178}: "TELMAX COMMUNICATIONS CORP.",
- [3]byte{0, 224, 179}: "EtherWAN Systems, Inc.",
- [3]byte{0, 224, 180}: "TECHNO SCOPE CO., LTD.",
- [3]byte{0, 224, 181}: "ARDENT COMMUNICATIONS CORP.",
- [3]byte{0, 224, 182}: "Entrada Networks",
- [3]byte{0, 224, 183}: "PI GROUP, LTD.",
- [3]byte{0, 224, 184}: "GATEWAY 2000",
- [3]byte{0, 224, 185}: "BYAS SYSTEMS",
- [3]byte{0, 224, 186}: "BERGHOF AUTOMATIONSTECHNIK GmbH",
- [3]byte{0, 224, 187}: "NBX CORPORATION",
- [3]byte{0, 224, 188}: "SYMON COMMUNICATIONS, INC.",
- [3]byte{0, 224, 189}: "INTERFACE SYSTEMS, INC.",
- [3]byte{0, 224, 190}: "GENROCO INTERNATIONAL, INC.",
- [3]byte{0, 224, 191}: "TORRENT NETWORKING TECHNOLOGIES CORP.",
- [3]byte{0, 224, 192}: "SEIWA ELECTRIC MFG. CO., LTD.",
- [3]byte{0, 224, 193}: "MEMOREX TELEX JAPAN, LTD.",
- [3]byte{0, 224, 194}: "NECSY S.p.A.",
- [3]byte{0, 224, 195}: "SAKAI SYSTEM DEVELOPMENT CORP.",
- [3]byte{0, 224, 196}: "HORNER ELECTRIC, INC.",
- [3]byte{0, 224, 197}: "BCOM ELECTRONICS INC.",
- [3]byte{0, 224, 198}: "LINK2IT, L.L.C.",
- [3]byte{0, 224, 199}: "EUROTECH SRL",
- [3]byte{0, 224, 200}: "VIRTUAL ACCESS, LTD.",
- [3]byte{0, 224, 201}: "AutomatedLogic Corporation",
- [3]byte{0, 224, 202}: "BEST DATA PRODUCTS",
- [3]byte{0, 224, 203}: "RESON, INC.",
- [3]byte{0, 224, 204}: "HERO SYSTEMS, LTD.",
- [3]byte{0, 224, 205}: "SAAB SENSIS CORPORATION",
- [3]byte{0, 224, 206}: "ARN",
- [3]byte{0, 224, 207}: "INTEGRATED DEVICE",
- [3]byte{0, 224, 208}: "NETSPEED, INC.",
- [3]byte{0, 224, 209}: "TELSIS LIMITED",
- [3]byte{0, 224, 210}: "VERSANET COMMUNICATIONS, INC.",
- [3]byte{0, 224, 211}: "DATENTECHNIK GmbH",
- [3]byte{0, 224, 212}: "EXCELLENT COMPUTER",
- [3]byte{0, 224, 213}: "Emulex Corporation",
- [3]byte{0, 224, 214}: "COMPUTER & COMMUNICATION RESEARCH LAB.",
- [3]byte{0, 224, 215}: "SUNSHINE ELECTRONICS, INC.",
- [3]byte{0, 224, 216}: "LANBit Computer, Inc.",
- [3]byte{0, 224, 217}: "TAZMO CO., LTD.",
- [3]byte{0, 224, 218}: "Alcatel-Lucent Enterprise",
- [3]byte{0, 224, 219}: "ViaVideo Communications, Inc.",
- [3]byte{0, 224, 220}: "NEXWARE CORP.",
- [3]byte{0, 224, 221}: "Zenith Electronics Corporation",
- [3]byte{0, 224, 222}: "DATAX NV",
- [3]byte{0, 224, 223}: "KEYMILE GmbH",
- [3]byte{0, 224, 224}: "SI ELECTRONICS, LTD.",
- [3]byte{0, 224, 225}: "G2 NETWORKS, INC.",
- [3]byte{0, 224, 226}: "INNOVA CORP.",
- [3]byte{0, 224, 227}: "SK-ELEKTRONIK GMBH",
- [3]byte{0, 224, 228}: "FANUC ROBOTICS NORTH AMERICA, Inc.",
- [3]byte{0, 224, 229}: "CINCO NETWORKS, INC.",
- [3]byte{0, 224, 230}: "INCAA Computers",
- [3]byte{0, 224, 231}: "RAYTHEON E-SYSTEMS, INC.",
- [3]byte{0, 224, 232}: "GRETACODER Data Systems AG",
- [3]byte{0, 224, 233}: "DATA LABS, INC.",
- [3]byte{0, 224, 234}: "INNOVAT COMMUNICATIONS, INC.",
- [3]byte{0, 224, 235}: "DIGICOM SYSTEMS, INCORPORATED",
- [3]byte{0, 224, 236}: "CELESTICA INC.",
- [3]byte{0, 224, 237}: "SILICOM, LTD.",
- [3]byte{0, 224, 238}: "MAREL HF",
- [3]byte{0, 224, 239}: "DIONEX",
- [3]byte{0, 224, 240}: "ABLER TECHNOLOGY, INC.",
- [3]byte{0, 224, 241}: "THAT CORPORATION",
- [3]byte{0, 224, 242}: "ARLOTTO COMNET, INC.",
- [3]byte{0, 224, 243}: "WebSprint Communications, Inc.",
- [3]byte{0, 224, 244}: "INSIDE Technology A/S",
- [3]byte{0, 224, 245}: "TELES AG",
- [3]byte{0, 224, 246}: "DECISION EUROPE",
- [3]byte{0, 224, 247}: "Cisco Systems, Inc",
- [3]byte{0, 224, 248}: "DICNA CONTROL AB",
- [3]byte{0, 224, 249}: "Cisco Systems, Inc",
- [3]byte{0, 224, 250}: "TRL TECHNOLOGY, LTD.",
- [3]byte{0, 224, 251}: "LEIGHTRONIX, INC.",
- [3]byte{0, 224, 252}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 224, 253}: "A-TREND TECHNOLOGY CO., LTD.",
- [3]byte{0, 224, 254}: "Cisco Systems, Inc",
- [3]byte{0, 224, 255}: "SECURITY DYNAMICS TECHNOLOGIES, Inc.",
- [3]byte{0, 225, 109}: "Cisco Systems, Inc",
- [3]byte{0, 225, 117}: "AK-Systems Ltd",
- [3]byte{0, 225, 140}: "Intel Corporate",
- [3]byte{0, 227, 178}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 228, 0}: "Sichuan Changhong Electric Ltd.",
- [3]byte{0, 230, 102}: "ARIMA Communications Corp.",
- [3]byte{0, 230, 211}: "NIXDORF COMPUTER CORP.",
- [3]byte{0, 230, 232}: "Netzin Technology Corporation,.Ltd.",
- [3]byte{0, 232, 171}: "Meggitt Training Systems, Inc.",
- [3]byte{0, 235, 45}: "Sony Mobile Communications AB",
- [3]byte{0, 235, 213}: "Cisco Systems, Inc",
- [3]byte{0, 236, 10}: "Xiaomi Communications Co Ltd",
- [3]byte{0, 238, 189}: "HTC Corporation",
- [3]byte{0, 240, 81}: "KWB Gmbh",
- [3]byte{0, 242, 44}: "Shanghai B-star Technology Co.,Ltd.",
- [3]byte{0, 242, 139}: "Cisco Systems, Inc",
- [3]byte{0, 243, 219}: "WOO Sports",
- [3]byte{0, 244, 3}: "Orbis Systems Oy",
- [3]byte{0, 244, 111}: "Samsung Electronics Co.,Ltd",
- [3]byte{0, 244, 185}: "Apple, Inc.",
- [3]byte{0, 246, 99}: "Cisco Systems, Inc",
- [3]byte{0, 247, 111}: "Apple, Inc.",
- [3]byte{0, 248, 28}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{0, 248, 44}: "Cisco Systems, Inc",
- [3]byte{0, 248, 96}: "PT. Panggung Electric Citrabuana",
- [3]byte{0, 248, 113}: "DGS Denmark A/S",
- [3]byte{0, 250, 59}: "CLOOS ELECTRONIC GMBH",
- [3]byte{0, 252, 88}: "WebSilicon Ltd.",
- [3]byte{0, 252, 112}: "Intrepid Control Systems, Inc.",
- [3]byte{0, 252, 139}: "Amazon Technologies Inc.",
- [3]byte{0, 252, 141}: "Hitron Technologies. Inc",
- [3]byte{0, 253, 69}: "Hewlett Packard Enterprise",
- [3]byte{0, 253, 76}: "NEVATEC",
- [3]byte{0, 254, 200}: "Cisco Systems, Inc",
- [3]byte{2, 7, 1}: "RACAL-DATACOM",
- [3]byte{2, 28, 124}: "PERQ SYSTEMS CORPORATION",
- [3]byte{2, 96, 134}: "LOGIC REPLACEMENT TECH. LTD.",
- [3]byte{2, 96, 140}: "3COM CORPORATION",
- [3]byte{2, 112, 1}: "RACAL-DATACOM",
- [3]byte{2, 112, 176}: "M/A-COM INC. COMPANIES",
- [3]byte{2, 112, 179}: "DATA RECALL LTD.",
- [3]byte{2, 157, 142}: "CARDIAC RECORDERS, INC.",
- [3]byte{2, 170, 60}: "OLIVETTI TELECOMM SPA (OLTECO)",
- [3]byte{2, 187, 1}: "OCTOTHORPE CORP.",
- [3]byte{2, 192, 140}: "3COM CORPORATION",
- [3]byte{2, 207, 28}: "Communication Machinery Corporation",
- [3]byte{2, 230, 211}: "NIXDORF COMPUTER CORP.",
- [3]byte{4, 2, 31}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 3, 214}: "Nintendo Co.,Ltd",
- [3]byte{4, 4, 234}: "Valens Semiconductor Ltd.",
- [3]byte{4, 10, 131}: "Alcatel-Lucent",
- [3]byte{4, 10, 224}: "XMIT AG COMPUTER NETWORKS",
- [3]byte{4, 12, 206}: "Apple, Inc.",
- [3]byte{4, 14, 194}: "ViewSonic Mobile China Limited",
- [3]byte{4, 21, 82}: "Apple, Inc.",
- [3]byte{4, 24, 15}: "Samsung Electronics Co.,Ltd",
- [3]byte{4, 24, 182}: "Private",
- [3]byte{4, 24, 214}: "Ubiquiti Networks Inc.",
- [3]byte{4, 25, 127}: "Grasphere Japan",
- [3]byte{4, 26, 4}: "WaveIP",
- [3]byte{4, 27, 109}: "LG Electronics (Mobile Communications)",
- [3]byte{4, 27, 148}: "Host Mobility AB",
- [3]byte{4, 27, 186}: "Samsung Electronics Co.,Ltd",
- [3]byte{4, 29, 16}: "Dream Ware Inc.",
- [3]byte{4, 30, 100}: "Apple, Inc.",
- [3]byte{4, 30, 122}: "DSPWorks",
- [3]byte{4, 32, 154}: "Panasonic Corporation AVC Networks Company",
- [3]byte{4, 33, 76}: "Insight Energy Ventures LLC",
- [3]byte{4, 34, 52}: "Wireless Standard Extensions",
- [3]byte{4, 37, 197}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 38, 5}: "GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH",
- [3]byte{4, 38, 101}: "Apple, Inc.",
- [3]byte{4, 39, 88}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 42, 226}: "Cisco Systems, Inc",
- [3]byte{4, 43, 187}: "PicoCELA, Inc.",
- [3]byte{4, 45, 180}: "First Property (Beijing) Co., Ltd Modern MOMA Branch",
- [3]byte{4, 47, 86}: "ATOCS (Shenzhen) LTD",
- [3]byte{4, 49, 16}: "Inspur Group Co., Ltd.",
- [3]byte{4, 50, 244}: "Partron",
- [3]byte{4, 51, 137}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 54, 4}: "Gyeyoung I&T",
- [3]byte{4, 58, 13}: "SM Optics S.r.l.",
- [3]byte{4, 61, 152}: "ChongQing QingJia Electronics CO.,LTD",
- [3]byte{4, 65, 105}: "GoPro",
- [3]byte{4, 68, 161}: "TELECON GALICIA,S.A.",
- [3]byte{4, 70, 101}: "Murata Manufacturing Co., Ltd.",
- [3]byte{4, 72, 154}: "Apple, Inc.",
- [3]byte{4, 74, 80}: "Ramaxel Technology (Shenzhen) limited company",
- [3]byte{4, 75, 237}: "Apple, Inc.",
- [3]byte{4, 75, 255}: "GuangZhou Hedy Digital Technology Co., Ltd",
- [3]byte{4, 76, 239}: "Fujian Sanao Technology Co.,Ltd",
- [3]byte{4, 78, 6}: "Ericsson AB",
- [3]byte{4, 78, 90}: "ARRIS Group, Inc.",
- [3]byte{4, 79, 76}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 79, 139}: "Adapteva, Inc.",
- [3]byte{4, 79, 170}: "Ruckus Wireless",
- [3]byte{4, 80, 218}: "Qiku Internet Network Scientific (Shenzhen) Co., Ltd",
- [3]byte{4, 82, 199}: "Bose Corporation",
- [3]byte{4, 82, 243}: "Apple, Inc.",
- [3]byte{4, 83, 213}: "Sysorex Global Holdings",
- [3]byte{4, 84, 83}: "Apple, Inc.",
- [3]byte{4, 85, 202}: "BriView (Xiamen) Corp.",
- [3]byte{4, 86, 4}: "Gionee Communication Equipment Co.,Ltd.",
- [3]byte{4, 87, 47}: "Sertel Electronics UK Ltd",
- [3]byte{4, 88, 111}: "Sichuan Whayer information industry Co.,LTD",
- [3]byte{4, 90, 149}: "Nokia Corporation",
- [3]byte{4, 92, 6}: "Zmodo Technology Corporation",
- [3]byte{4, 92, 142}: "gosund GROUP CO.,LTD",
- [3]byte{4, 93, 75}: "Sony Corporation",
- [3]byte{4, 93, 86}: "camtron industrial inc.",
- [3]byte{4, 95, 167}: "Shenzhen Yichen Technology Development Co.,LTD",
- [3]byte{4, 97, 105}: "MEDIA GLOBAL LINKS CO., LTD.",
- [3]byte{4, 98, 115}: "Cisco Systems, Inc",
- [3]byte{4, 98, 215}: "ALSTOM HYDRO FRANCE",
- [3]byte{4, 99, 224}: "Nome Oy",
- [3]byte{4, 101, 101}: "Testop",
- [3]byte{4, 103, 133}: "scemtec Hard- und Software fuer Mess- und Steuerungstechnik GmbH",
- [3]byte{4, 105, 248}: "Apple, Inc.",
- [3]byte{4, 108, 157}: "Cisco Systems, Inc",
- [3]byte{4, 109, 66}: "Bryston Ltd.",
- [3]byte{4, 110, 2}: "OpenRTLS Group",
- [3]byte{4, 110, 73}: "TaiYear Electronic Technology (Suzhou) Co., Ltd",
- [3]byte{4, 112, 188}: "Globalstar Inc.",
- [3]byte{4, 113, 75}: "IEEE Registration Authority",
- [3]byte{4, 116, 161}: "Aligera Equipamentos Digitais Ltda",
- [3]byte{4, 117, 3}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 117, 245}: "CSST",
- [3]byte{4, 118, 110}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{4, 120, 99}: "Shanghai MXCHIP Information Technology Co., Ltd.",
- [3]byte{4, 125, 80}: "Shenzhen Kang Ying Technology Co.Ltd.",
- [3]byte{4, 125, 123}: "QUANTA COMPUTER INC.",
- [3]byte{4, 126, 74}: "moobox CO., Ltd.",
- [3]byte{4, 129, 174}: "Clack Corporation",
- [3]byte{4, 132, 138}: "7INOVA TECHNOLOGY LIMITED",
- [3]byte{4, 136, 140}: "Eifelwerk Butler Systeme GmbH",
- [3]byte{4, 136, 226}: "Beats Electronics LLC",
- [3]byte{4, 138, 21}: "Avaya Inc",
- [3]byte{4, 139, 66}: "Skspruce Technologies",
- [3]byte{4, 140, 3}: "ThinPAD Technology (Shenzhen)CO.,LTD",
- [3]byte{4, 141, 56}: "Netcore Technology Inc.",
- [3]byte{4, 146, 238}: "iway AG",
- [3]byte{4, 148, 107}: "TECNO MOBILE LIMITED",
- [3]byte{4, 148, 161}: "CATCH THE WIND INC",
- [3]byte{4, 149, 115}: "zte corporation",
- [3]byte{4, 149, 230}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{4, 150, 69}: "WUXI SKY CHIP INTERCONNECTION TECHNOLOGY CO.,LTD.",
- [3]byte{4, 151, 144}: "Lartech telecom LLC",
- [3]byte{4, 152, 243}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{4, 153, 230}: "Shenzhen Yoostar Technology Co., Ltd",
- [3]byte{4, 155, 156}: "Eadingcore Intelligent Technology Co., Ltd.",
- [3]byte{4, 156, 98}: "BMT Medical Technology s.r.o.",
- [3]byte{4, 159, 6}: "Smobile Co., Ltd.",
- [3]byte{4, 159, 129}: "NetScout Systems, Inc.",
- [3]byte{4, 159, 202}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 161, 81}: "NETGEAR",
- [3]byte{4, 163, 22}: "Texas Instruments",
- [3]byte{4, 163, 243}: "Emicon",
- [3]byte{4, 168, 42}: "Nokia Corporation",
- [3]byte{4, 176, 231}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 177, 103}: "Xiaomi Communications Co Ltd",
- [3]byte{4, 179, 182}: "Seamap (UK) Ltd",
- [3]byte{4, 180, 102}: "BSP Co., Ltd.",
- [3]byte{4, 182, 72}: "ZENNER",
- [3]byte{4, 186, 54}: "Li Seng Technology Ltd",
- [3]byte{4, 187, 249}: "Pavilion Data Systems Inc",
- [3]byte{4, 189, 112}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 189, 136}: "Aruba Networks",
- [3]byte{4, 191, 109}: "Zyxel Communications Corporation",
- [3]byte{4, 191, 168}: "ISB Corporation",
- [3]byte{4, 192, 91}: "Tigo Energy",
- [3]byte{4, 192, 111}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 192, 156}: "Tellabs Inc.",
- [3]byte{4, 193, 3}: "Clover Network, Inc.",
- [3]byte{4, 193, 185}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{4, 194, 62}: "HTC Corporation",
- [3]byte{4, 197, 164}: "Cisco Systems, Inc",
- [3]byte{4, 200, 128}: "Samtec Inc",
- [3]byte{4, 201, 145}: "Phistek INC.",
- [3]byte{4, 201, 217}: "Echostar Technologies Corp",
- [3]byte{4, 203, 29}: "Traka plc",
- [3]byte{4, 206, 20}: "Wilocity LTD.",
- [3]byte{4, 207, 37}: "MANYCOLORS, INC.",
- [3]byte{4, 211, 207}: "Apple, Inc.",
- [3]byte{4, 212, 55}: "ZNV",
- [3]byte{4, 214, 170}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{4, 215, 131}: "Y&H E&C Co.,LTD.",
- [3]byte{4, 218, 210}: "Cisco Systems, Inc",
- [3]byte{4, 219, 86}: "Apple, Inc.",
- [3]byte{4, 219, 138}: "Suntech International Ltd.",
- [3]byte{4, 221, 76}: "Velocytech",
- [3]byte{4, 222, 219}: "Rockport Networks Inc",
- [3]byte{4, 222, 242}: "Shenzhen ECOM Technology Co. Ltd",
- [3]byte{4, 223, 105}: "Car Connectivity Consortium",
- [3]byte{4, 224, 176}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{4, 224, 196}: "TRIUMPH-ADLER AG",
- [3]byte{4, 225, 200}: "IMS Soluções em Energia Ltda.",
- [3]byte{4, 226, 248}: "AEP Ticketing solutions srl",
- [3]byte{4, 228, 81}: "Texas Instruments",
- [3]byte{4, 229, 54}: "Apple, Inc.",
- [3]byte{4, 229, 72}: "Cohda Wireless Pty Ltd",
- [3]byte{4, 230, 98}: "Acroname Inc.",
- [3]byte{4, 230, 118}: "AMPAK Technology, Inc.",
- [3]byte{4, 233, 229}: "PJRC.COM, LLC",
- [3]byte{4, 238, 145}: "x-fabric GmbH",
- [3]byte{4, 240, 33}: "Compex Systems Pte Ltd",
- [3]byte{4, 241, 40}: "HMD Global Oy",
- [3]byte{4, 241, 62}: "Apple, Inc.",
- [3]byte{4, 241, 125}: "Tarana Wireless",
- [3]byte{4, 244, 188}: "Xena Networks",
- [3]byte{4, 247, 228}: "Apple, Inc.",
- [3]byte{4, 248, 194}: "Flaircomm Microelectronics, Inc.",
- [3]byte{4, 249, 56}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 250, 63}: "Opticore Inc.",
- [3]byte{4, 254, 49}: "Samsung Electronics Co.,Ltd",
- [3]byte{4, 254, 127}: "Cisco Systems, Inc",
- [3]byte{4, 254, 141}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{4, 254, 161}: "Fihonest communication co.,Ltd",
- [3]byte{4, 255, 81}: "NOVAMEDIA INNOVISION SP. Z O.O.",
- [3]byte{8, 0, 1}: "COMPUTERVISION CORPORATION",
- [3]byte{8, 0, 2}: "BRIDGE COMMUNICATIONS INC.",
- [3]byte{8, 0, 3}: "ADVANCED COMPUTER COMM.",
- [3]byte{8, 0, 4}: "CROMEMCO INCORPORATED",
- [3]byte{8, 0, 5}: "SYMBOLICS INC.",
- [3]byte{8, 0, 6}: "SIEMENS AG",
- [3]byte{8, 0, 7}: "Apple, Inc.",
- [3]byte{8, 0, 8}: "BOLT BERANEK AND NEWMAN INC.",
- [3]byte{8, 0, 9}: "Hewlett Packard",
- [3]byte{8, 0, 10}: "NESTAR SYSTEMS INCORPORATED",
- [3]byte{8, 0, 11}: "UNISYS CORPORATION",
- [3]byte{8, 0, 12}: "MIKLYN DEVELOPMENT CO.",
- [3]byte{8, 0, 13}: "International Computers, Ltd",
- [3]byte{8, 0, 14}: "NCR CORPORATION",
- [3]byte{8, 0, 15}: "MITEL CORPORATION",
- [3]byte{8, 0, 17}: "TEKTRONIX INC.",
- [3]byte{8, 0, 18}: "BELL ATLANTIC INTEGRATED SYST.",
- [3]byte{8, 0, 19}: "Exxon",
- [3]byte{8, 0, 20}: "EXCELAN",
- [3]byte{8, 0, 21}: "STC BUSINESS SYSTEMS",
- [3]byte{8, 0, 22}: "BARRISTER INFO SYS CORP",
- [3]byte{8, 0, 23}: "NATIONAL SEMICONDUCTOR",
- [3]byte{8, 0, 24}: "PIRELLI FOCOM NETWORKS",
- [3]byte{8, 0, 25}: "GENERAL ELECTRIC CORPORATION",
- [3]byte{8, 0, 26}: "TIARA/ 10NET",
- [3]byte{8, 0, 27}: "Dell EMC",
- [3]byte{8, 0, 28}: "KDD-KOKUSAI DEBNSIN DENWA CO.",
- [3]byte{8, 0, 29}: "ABLE COMMUNICATIONS INC.",
- [3]byte{8, 0, 30}: "APOLLO COMPUTER INC.",
- [3]byte{8, 0, 31}: "SHARP CORPORATION",
- [3]byte{8, 0, 32}: "Oracle Corporation",
- [3]byte{8, 0, 33}: "3M COMPANY",
- [3]byte{8, 0, 34}: "NBI INC.",
- [3]byte{8, 0, 35}: "Panasonic Communications Co., Ltd.",
- [3]byte{8, 0, 36}: "10NET COMMUNICATIONS/DCA",
- [3]byte{8, 0, 37}: "CONTROL DATA",
- [3]byte{8, 0, 38}: "NORSK DATA A.S.",
- [3]byte{8, 0, 39}: "PCS Systemtechnik GmbH",
- [3]byte{8, 0, 40}: "Texas Instruments",
- [3]byte{8, 0, 41}: "Megatek Corporation",
- [3]byte{8, 0, 42}: "MOSAIC TECHNOLOGIES INC.",
- [3]byte{8, 0, 43}: "DIGITAL EQUIPMENT CORPORATION",
- [3]byte{8, 0, 44}: "BRITTON LEE INC.",
- [3]byte{8, 0, 45}: "LAN-TEC INC.",
- [3]byte{8, 0, 46}: "METAPHOR COMPUTER SYSTEMS",
- [3]byte{8, 0, 47}: "PRIME COMPUTER INC.",
- [3]byte{8, 0, 48}: "CERN",
- [3]byte{8, 0, 48}: "NETWORK RESEARCH CORPORATION",
- [3]byte{8, 0, 48}: "ROYAL MELBOURNE INST OF TECH",
- [3]byte{8, 0, 49}: "LITTLE MACHINES INC.",
- [3]byte{8, 0, 50}: "TIGAN INCORPORATED",
- [3]byte{8, 0, 51}: "BAUSCH & LOMB",
- [3]byte{8, 0, 52}: "FILENET CORPORATION",
- [3]byte{8, 0, 53}: "MICROFIVE CORPORATION",
- [3]byte{8, 0, 54}: "INTERGRAPH CORPORATION",
- [3]byte{8, 0, 55}: "FUJI-XEROX CO. LTD.",
- [3]byte{8, 0, 56}: "BULL S.A.S.",
- [3]byte{8, 0, 57}: "SPIDER SYSTEMS LIMITED",
- [3]byte{8, 0, 58}: "ORCATECH INC.",
- [3]byte{8, 0, 59}: "TORUS SYSTEMS LIMITED",
- [3]byte{8, 0, 60}: "SCHLUMBERGER WELL SERVICES",
- [3]byte{8, 0, 61}: "CADNETIX CORPORATIONS",
- [3]byte{8, 0, 62}: "CODEX CORPORATION",
- [3]byte{8, 0, 63}: "FRED KOSCHARA ENTERPRISES",
- [3]byte{8, 0, 64}: "FERRANTI COMPUTER SYS. LIMITED",
- [3]byte{8, 0, 65}: "RACAL-MILGO INFORMATION SYS..",
- [3]byte{8, 0, 66}: "JAPAN MACNICS CORP.",
- [3]byte{8, 0, 67}: "PIXEL COMPUTER INC.",
- [3]byte{8, 0, 68}: "DAVID SYSTEMS INC.",
- [3]byte{8, 0, 69}: "CONCURRENT COMPUTER CORP.",
- [3]byte{8, 0, 70}: "Sony Corporation",
- [3]byte{8, 0, 71}: "SEQUENT COMPUTER SYSTEMS INC.",
- [3]byte{8, 0, 72}: "EUROTHERM GAUGING SYSTEMS",
- [3]byte{8, 0, 73}: "UNIVATION",
- [3]byte{8, 0, 74}: "BANYAN SYSTEMS INC.",
- [3]byte{8, 0, 75}: "Planning Research Corp.",
- [3]byte{8, 0, 76}: "HYDRA COMPUTER SYSTEMS INC.",
- [3]byte{8, 0, 77}: "CORVUS SYSTEMS INC.",
- [3]byte{8, 0, 78}: "3COM EUROPE LTD.",
- [3]byte{8, 0, 79}: "CYGNET SYSTEMS",
- [3]byte{8, 0, 80}: "DAISY SYSTEMS CORP.",
- [3]byte{8, 0, 81}: "ExperData",
- [3]byte{8, 0, 82}: "INSYSTEC",
- [3]byte{8, 0, 83}: "MIDDLE EAST TECH. UNIVERSITY",
- [3]byte{8, 0, 85}: "STANFORD TELECOMM. INC.",
- [3]byte{8, 0, 86}: "STANFORD LINEAR ACCEL. CENTER",
- [3]byte{8, 0, 87}: "Evans & Sutherland",
- [3]byte{8, 0, 88}: "SYSTEMS CONCEPTS",
- [3]byte{8, 0, 89}: "A/S MYCRON",
- [3]byte{8, 0, 90}: "IBM Corp",
- [3]byte{8, 0, 91}: "VTA TECHNOLOGIES INC.",
- [3]byte{8, 0, 92}: "FOUR PHASE SYSTEMS",
- [3]byte{8, 0, 93}: "GOULD INC.",
- [3]byte{8, 0, 94}: "COUNTERPOINT COMPUTER INC.",
- [3]byte{8, 0, 95}: "SABER TECHNOLOGY CORP.",
- [3]byte{8, 0, 96}: "INDUSTRIAL NETWORKING INC.",
- [3]byte{8, 0, 97}: "JAROGATE LTD.",
- [3]byte{8, 0, 98}: "General Dynamics",
- [3]byte{8, 0, 99}: "PLESSEY",
- [3]byte{8, 0, 100}: "Sitasys AG",
- [3]byte{8, 0, 101}: "GENRAD INC.",
- [3]byte{8, 0, 102}: "AGFA CORPORATION",
- [3]byte{8, 0, 103}: "ComDesign",
- [3]byte{8, 0, 104}: "RIDGE COMPUTERS",
- [3]byte{8, 0, 105}: "SILICON GRAPHICS INC.",
- [3]byte{8, 0, 106}: "AT&T",
- [3]byte{8, 0, 107}: "ACCEL TECHNOLOGIES INC.",
- [3]byte{8, 0, 108}: "SUNTEK TECHNOLOGY INT'L",
- [3]byte{8, 0, 109}: "WHITECHAPEL COMPUTER WORKS",
- [3]byte{8, 0, 110}: "MASSCOMP",
- [3]byte{8, 0, 111}: "PHILIPS APELDOORN B.V.",
- [3]byte{8, 0, 112}: "Mitsubishi Precision Co.,LTd.",
- [3]byte{8, 0, 113}: "MATRA (DSIE)",
- [3]byte{8, 0, 114}: "XEROX CORP UNIV GRANT PROGRAM",
- [3]byte{8, 0, 115}: "TECMAR INC.",
- [3]byte{8, 0, 116}: "CASIO COMPUTER CO. LTD.",
- [3]byte{8, 0, 117}: "DANSK DATA ELECTRONIK",
- [3]byte{8, 0, 118}: "PC LAN TECHNOLOGIES",
- [3]byte{8, 0, 119}: "TSL COMMUNICATIONS LTD.",
- [3]byte{8, 0, 120}: "ACCELL CORPORATION",
- [3]byte{8, 0, 121}: "THE DROID WORKS",
- [3]byte{8, 0, 122}: "INDATA",
- [3]byte{8, 0, 123}: "SANYO ELECTRIC CO. LTD.",
- [3]byte{8, 0, 124}: "VITALINK COMMUNICATIONS CORP.",
- [3]byte{8, 0, 126}: "AMALGAMATED WIRELESS(AUS) LTD",
- [3]byte{8, 0, 127}: "CARNEGIE-MELLON UNIVERSITY",
- [3]byte{8, 0, 128}: "AES DATA INC.",
- [3]byte{8, 0, 129}: "ASTECH INC.",
- [3]byte{8, 0, 130}: "VERITAS SOFTWARE",
- [3]byte{8, 0, 131}: "Seiko Instruments Inc.",
- [3]byte{8, 0, 132}: "TOMEN ELECTRONICS CORP.",
- [3]byte{8, 0, 133}: "ELXSI",
- [3]byte{8, 0, 134}: "KONICA MINOLTA HOLDINGS, INC.",
- [3]byte{8, 0, 135}: "Xyplex, Inc.",
- [3]byte{8, 0, 136}: "Brocade Communications Systems, Inc.",
- [3]byte{8, 0, 137}: "Kinetics",
- [3]byte{8, 0, 138}: "PerfTech, Inc.",
- [3]byte{8, 0, 139}: "PYRAMID TECHNOLOGY CORP.",
- [3]byte{8, 0, 140}: "NETWORK RESEARCH CORPORATION",
- [3]byte{8, 0, 141}: "XYVISION INC.",
- [3]byte{8, 0, 142}: "Tandem Computers",
- [3]byte{8, 0, 143}: "CHIPCOM CORPORATION",
- [3]byte{8, 0, 144}: "SONOMA SYSTEMS",
- [3]byte{8, 1, 15}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{8, 2, 142}: "NETGEAR",
- [3]byte{8, 3, 113}: "KRG CORPORATE",
- [3]byte{8, 5, 129}: "Roku, Inc.",
- [3]byte{8, 5, 205}: "DongGuang EnMai Electronic Product Co.Ltd.",
- [3]byte{8, 8, 194}: "Samsung Electronics Co.,Ltd",
- [3]byte{8, 8, 234}: "AMSC",
- [3]byte{8, 9, 182}: "Masimo Corp",
- [3]byte{8, 10, 78}: "Planet Bingo® — 3rd Rock Gaming®",
- [3]byte{8, 12, 11}: "SysMik GmbH Dresden",
- [3]byte{8, 12, 201}: "Mission Technology Group, dba Magma",
- [3]byte{8, 13, 132}: "GECO, Inc.",
- [3]byte{8, 14, 168}: "Velex s.r.l.",
- [3]byte{8, 15, 250}: "KSP INC.",
- [3]byte{8, 17, 94}: "Bitel Co., Ltd.",
- [3]byte{8, 17, 150}: "Intel Corporate",
- [3]byte{8, 20, 67}: "UNIBRAIN S.A.",
- [3]byte{8, 21, 47}: "Samsung Electronics Co., Ltd. ARTIK",
- [3]byte{8, 22, 81}: "SHENZHEN SEA STAR TECHNOLOGY CO.,LTD",
- [3]byte{8, 23, 53}: "Cisco Systems, Inc",
- [3]byte{8, 23, 244}: "IBM Corp",
- [3]byte{8, 24, 26}: "zte corporation",
- [3]byte{8, 24, 76}: "A. S. Thomas, Inc.",
- [3]byte{8, 25, 166}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{8, 29, 251}: "Shanghai Mexon Communication Technology Co.,Ltd",
- [3]byte{8, 31, 63}: "WondaLink Inc.",
- [3]byte{8, 31, 113}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{8, 31, 235}: "BinCube",
- [3]byte{8, 31, 243}: "Cisco Systems, Inc",
- [3]byte{8, 33, 239}: "Samsung Electronics Co.,Ltd",
- [3]byte{8, 35, 178}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{8, 37, 34}: "ADVANSEE",
- [3]byte{8, 39, 25}: "APS systems/electronic AG",
- [3]byte{8, 39, 206}: "NAGANO KEIKI CO., LTD.",
- [3]byte{8, 42, 208}: "SRD Innovations Inc.",
- [3]byte{8, 44, 176}: "Network Instruments",
- [3]byte{8, 46, 95}: "Hewlett Packard",
- [3]byte{8, 48, 107}: "Palo Alto Networks",
- [3]byte{8, 53, 113}: "CASwell INC.",
- [3]byte{8, 53, 178}: "CoreEdge Networks Co., Ltd",
- [3]byte{8, 55, 61}: "Samsung Electronics Co.,Ltd",
- [3]byte{8, 55, 156}: "Topaz Co. LTD.",
- [3]byte{8, 56, 165}: "Funkwerk plettac electronic GmbH",
- [3]byte{8, 58, 92}: "Junilab, Inc.",
- [3]byte{8, 58, 184}: "Shinoda Plasma Co., Ltd.",
- [3]byte{8, 61, 136}: "Samsung Electronics Co.,Ltd",
- [3]byte{8, 62, 12}: "ARRIS Group, Inc.",
- [3]byte{8, 62, 93}: "Sagemcom Broadband SAS",
- [3]byte{8, 62, 142}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{8, 63, 62}: "WSH GmbH",
- [3]byte{8, 63, 118}: "Intellian Technologies, Inc.",
- [3]byte{8, 63, 188}: "zte corporation",
- [3]byte{8, 64, 39}: "Gridstore Inc.",
- [3]byte{8, 64, 243}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{8, 70, 86}: "VEO-LABS",
- [3]byte{8, 72, 44}: "Raycore Taiwan Co., LTD.",
- [3]byte{8, 74, 207}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{8, 78, 28}: "H2A Systems, LLC",
- [3]byte{8, 78, 191}: "Broad Net Mux Corporation",
- [3]byte{8, 81, 20}: "QINGDAO TOPSCOMM COMMUNICATION CO., LTD",
- [3]byte{8, 81, 46}: "Orion Diagnostica Oy",
- [3]byte{8, 82, 64}: "EbV Elektronikbau- und Vertriebs GmbH",
- [3]byte{8, 87, 0}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{8, 90, 224}: "Recovision Technology Co., Ltd.",
- [3]byte{8, 91, 14}: "Fortinet, Inc.",
- [3]byte{8, 91, 218}: "CliniCare LTD",
- [3]byte{8, 93, 221}: "MERCURY CORPORATION",
- [3]byte{8, 96, 110}: "ASUSTek COMPUTER INC.",
- [3]byte{8, 98, 102}: "ASUSTek COMPUTER INC.",
- [3]byte{8, 99, 97}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{8, 102, 31}: "Palo Alto Networks",
- [3]byte{8, 102, 152}: "Apple, Inc.",
- [3]byte{8, 103, 78}: "Hisense broadband multimedia technology Co.,Ltd",
- [3]byte{8, 104, 208}: "Japan System Design",
- [3]byte{8, 104, 234}: "EITO ELECTRONICS CO., LTD.",
- [3]byte{8, 106, 10}: "ASKEY COMPUTER CORP",
- [3]byte{8, 109, 65}: "Apple, Inc.",
- [3]byte{8, 109, 242}: "Shenzhen MIMOWAVE Technology Co.,Ltd",
- [3]byte{8, 112, 69}: "Apple, Inc.",
- [3]byte{8, 116, 2}: "Apple, Inc.",
- [3]byte{8, 116, 246}: "Winterhalter Gastronom GmbH",
- [3]byte{8, 117, 114}: "Obelux Oy",
- [3]byte{8, 118, 24}: "ViE Technologies Sdn. Bhd.",
- [3]byte{8, 118, 149}: "Auto Industrial Co., Ltd.",
- [3]byte{8, 118, 255}: "Thomson Telecom Belgium",
- [3]byte{8, 120, 8}: "Samsung Electronics Co.,Ltd",
- [3]byte{8, 121, 153}: "AIM GmbH",
- [3]byte{8, 122, 76}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{8, 123, 170}: "SVYAZKOMPLEKTSERVICE, LLC",
- [3]byte{8, 124, 190}: "Quintic Corp.",
- [3]byte{8, 125, 33}: "Altasec technology corporation",
- [3]byte{8, 128, 57}: "Cisco SPVTG",
- [3]byte{8, 129, 188}: "HongKong Ipro Technology Co., Limited",
- [3]byte{8, 129, 244}: "Juniper Networks",
- [3]byte{8, 132, 102}: "Novartis Pharma AG",
- [3]byte{8, 134, 32}: "TECNO MOBILE LIMITED",
- [3]byte{8, 134, 59}: "Belkin International Inc.",
- [3]byte{8, 140, 44}: "Samsung Electronics Co.,Ltd",
- [3]byte{8, 141, 200}: "Ryowa Electronics Co.,Ltd",
- [3]byte{8, 142, 79}: "SF Software Solutions",
- [3]byte{8, 143, 44}: "Hills Sound Vision & Lighting",
- [3]byte{8, 148, 239}: "Wistron Infocomm (Zhongshan) Corporation",
- [3]byte{8, 149, 42}: "Technicolor CH USA Inc.",
- [3]byte{8, 150, 173}: "Cisco Systems, Inc",
- [3]byte{8, 150, 215}: "AVM GmbH",
- [3]byte{8, 151, 88}: "Shenzhen Strong Rising Electronics Co.,Ltd DongGuan Subsidiary",
- [3]byte{8, 155, 75}: "iKuai Networks",
- [3]byte{8, 158, 1}: "QUANTA COMPUTER INC.",
- [3]byte{8, 158, 8}: "Google, Inc.",
- [3]byte{8, 159, 151}: "LEROY AUTOMATION",
- [3]byte{8, 161, 43}: "ShenZhen EZL Technology Co., Ltd",
- [3]byte{8, 165, 200}: "Sunnovo International Limited",
- [3]byte{8, 168, 161}: "Cyclotronics Power Concepts, Inc",
- [3]byte{8, 169, 90}: "AzureWave Technology Inc.",
- [3]byte{8, 172, 165}: "Benu Video, Inc.",
- [3]byte{8, 175, 120}: "Totus Solutions, Inc.",
- [3]byte{8, 178, 88}: "Juniper Networks",
- [3]byte{8, 178, 163}: "Cynny Italia S.r.L.",
- [3]byte{8, 180, 207}: "Abicom International",
- [3]byte{8, 183, 56}: "Lite-On Technogy Corp.",
- [3]byte{8, 183, 236}: "Wireless Seismic",
- [3]byte{8, 186, 34}: "Swaive Corporation",
- [3]byte{8, 187, 204}: "AK-NORD EDV VERTRIEBSGES. mbH",
- [3]byte{8, 188, 32}: "Hangzhou Royal Cloud Technology Co., Ltd",
- [3]byte{8, 189, 67}: "NETGEAR",
- [3]byte{8, 190, 9}: "Astrol Electronic AG",
- [3]byte{8, 190, 119}: "Green Electronics",
- [3]byte{8, 190, 172}: "Edimax Technology Co. Ltd.",
- [3]byte{8, 192, 33}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{8, 198, 179}: "QTECH LLC",
- [3]byte{8, 202, 69}: "Toyou Feiji Electronics Co., Ltd.",
- [3]byte{8, 204, 104}: "Cisco Systems, Inc",
- [3]byte{8, 204, 167}: "Cisco Systems, Inc",
- [3]byte{8, 205, 155}: "samtec automotive electronics & software GmbH",
- [3]byte{8, 208, 159}: "Cisco Systems, Inc",
- [3]byte{8, 208, 183}: "Qingdao Hisense Communications Co.,Ltd.",
- [3]byte{8, 210, 154}: "Proformatique",
- [3]byte{8, 211, 75}: "Techman Electronics (Changshu) Co., Ltd.",
- [3]byte{8, 212, 12}: "Intel Corporate",
- [3]byte{8, 212, 43}: "Samsung Electronics Co.,Ltd",
- [3]byte{8, 213, 192}: "Seers Technology Co., Ltd",
- [3]byte{8, 216, 51}: "Shenzhen RF Technology Co., Ltd",
- [3]byte{8, 223, 31}: "Bose Corporation",
- [3]byte{8, 229, 218}: "NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD.",
- [3]byte{8, 230, 114}: "JEBSEE ELECTRONICS CO.,LTD.",
- [3]byte{8, 232, 79}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{8, 234, 64}: "SHENZHEN BILIAN ELECTRONIC CO.,LTD",
- [3]byte{8, 234, 68}: "Aerohive Networks Inc.",
- [3]byte{8, 235, 41}: "Jiangsu Huitong Group Co.,Ltd.",
- [3]byte{8, 235, 116}: "HUMAX Co., Ltd.",
- [3]byte{8, 235, 237}: "World Elite Technology Co.,LTD",
- [3]byte{8, 236, 169}: "Samsung Electronics Co.,Ltd",
- [3]byte{8, 237, 2}: "IEEE Registration Authority",
- [3]byte{8, 237, 185}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{8, 238, 139}: "Samsung Electronics Co.,Ltd",
- [3]byte{8, 239, 59}: "MCS Logic Inc.",
- [3]byte{8, 239, 171}: "SAYME WIRELESS SENSOR NETWORK",
- [3]byte{8, 241, 183}: "Towerstream Corpration",
- [3]byte{8, 242, 244}: "Net One Partners Co.,Ltd.",
- [3]byte{8, 244, 171}: "Apple, Inc.",
- [3]byte{8, 246, 248}: "GET Engineering",
- [3]byte{8, 247, 40}: "GLOBO Multimedia Sp. z o.o. Sp.k.",
- [3]byte{8, 250, 224}: "Fohhn Audio AG",
- [3]byte{8, 252, 82}: "OpenXS BV",
- [3]byte{8, 252, 136}: "Samsung Electronics Co.,Ltd",
- [3]byte{8, 253, 14}: "Samsung Electronics Co.,Ltd",
- [3]byte{12, 2, 39}: "Technicolor CH USA Inc.",
- [3]byte{12, 4, 0}: "Jantar d.o.o.",
- [3]byte{12, 5, 53}: "Juniper Systems",
- [3]byte{12, 17, 5}: "Ringslink (Xiamen) Network Communication Technologies Co., Ltd",
- [3]byte{12, 17, 103}: "Cisco Systems, Inc",
- [3]byte{12, 18, 98}: "zte corporation",
- [3]byte{12, 19, 11}: "Uniqoteq Ltd.",
- [3]byte{12, 20, 32}: "Samsung Electronics Co.,Ltd",
- [3]byte{12, 21, 57}: "Apple, Inc.",
- [3]byte{12, 21, 197}: "SDTEC Co., Ltd.",
- [3]byte{12, 23, 241}: "TELECSYS",
- [3]byte{12, 25, 31}: "Inform Electronik",
- [3]byte{12, 26, 16}: "Acoustic Stream",
- [3]byte{12, 28, 32}: "Kakao Corp",
- [3]byte{12, 29, 175}: "Xiaomi Communications Co Ltd",
- [3]byte{12, 29, 194}: "SeAH Networks",
- [3]byte{12, 32, 38}: "noax Technologies AG",
- [3]byte{12, 37, 118}: "LONGCHEER TELECOMMUNICATION LIMITED",
- [3]byte{12, 39, 36}: "Cisco Systems, Inc",
- [3]byte{12, 39, 85}: "Valuable Techologies Limited",
- [3]byte{12, 42, 105}: "electric imp, incorporated",
- [3]byte{12, 42, 231}: "Beijing General Research Institute of Mining and Metallurgy",
- [3]byte{12, 45, 137}: "QiiQ Communications Inc.",
- [3]byte{12, 48, 33}: "Apple, Inc.",
- [3]byte{12, 55, 71}: "zte corporation",
- [3]byte{12, 55, 220}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{12, 56, 62}: "Fanvil Technology Co., Ltd.",
- [3]byte{12, 57, 86}: "Observator instruments",
- [3]byte{12, 60, 101}: "Dome Imaging Inc",
- [3]byte{12, 60, 205}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{12, 62, 159}: "Apple, Inc.",
- [3]byte{12, 65, 62}: "Microsoft Corporation",
- [3]byte{12, 69, 186}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{12, 70, 157}: "MS Sedco",
- [3]byte{12, 71, 61}: "Hitron Technologies. Inc",
- [3]byte{12, 71, 201}: "Amazon Technologies Inc.",
- [3]byte{12, 72, 133}: "LG Electronics (Mobile Communications)",
- [3]byte{12, 73, 51}: "Sichuan Jiuzhou Electronic Technology Co., Ltd.",
- [3]byte{12, 75, 84}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{12, 76, 57}: "MitraStar Technology Corp.",
- [3]byte{12, 77, 233}: "Apple, Inc.",
- [3]byte{12, 79, 90}: "ASA-RT s.r.l.",
- [3]byte{12, 81, 1}: "Apple, Inc.",
- [3]byte{12, 81, 247}: "CHAUVIN ARNOUX",
- [3]byte{12, 82, 3}: "AGM GROUP LIMITED",
- [3]byte{12, 84, 165}: "PEGATRON CORPORATION",
- [3]byte{12, 84, 185}: "Nokia",
- [3]byte{12, 85, 33}: "Axiros GmbH",
- [3]byte{12, 86, 92}: "HyBroad Vision (Hong Kong) Technology Co Ltd",
- [3]byte{12, 87, 235}: "Mueller Systems",
- [3]byte{12, 88, 66}: "DME Micro",
- [3]byte{12, 90, 25}: "Axtion Sdn Bhd",
- [3]byte{12, 90, 158}: "Wi-SUN Alliance",
- [3]byte{12, 92, 216}: "DOLI Elektronik GmbH",
- [3]byte{12, 95, 53}: "Niagara Video Corporation",
- [3]byte{12, 96, 118}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{12, 97, 17}: "Anda Technologies SAC",
- [3]byte{12, 97, 39}: "Actiontec Electronics, Inc",
- [3]byte{12, 97, 207}: "Texas Instruments",
- [3]byte{12, 99, 252}: "Nanjing Signway Technology Co., Ltd",
- [3]byte{12, 104, 3}: "Cisco Systems, Inc",
- [3]byte{12, 106, 230}: "Stanley Security Solutions",
- [3]byte{12, 110, 79}: "PrimeVOLT Co., Ltd.",
- [3]byte{12, 111, 156}: "Shaw Communications Inc.",
- [3]byte{12, 113, 93}: "Samsung Electronics Co.,Ltd",
- [3]byte{12, 114, 44}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{12, 114, 217}: "zte corporation",
- [3]byte{12, 115, 190}: "Dongguan Haimai Electronie Technology Co.,Ltd",
- [3]byte{12, 116, 194}: "Apple, Inc.",
- [3]byte{12, 117, 35}: "BEIJING GEHUA CATV NETWORK CO.,LTD",
- [3]byte{12, 117, 108}: "Anaren Microwave, Inc.",
- [3]byte{12, 117, 189}: "Cisco Systems, Inc",
- [3]byte{12, 119, 26}: "Apple, Inc.",
- [3]byte{12, 125, 124}: "Kexiang Information Technology Co, Ltd.",
- [3]byte{12, 129, 18}: "Private",
- [3]byte{12, 130, 48}: "SHENZHEN MAGNUS TECHNOLOGIES CO.,LTD",
- [3]byte{12, 130, 104}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{12, 130, 106}: "Wuhan Huagong Genuine Optics Technology Co., Ltd",
- [3]byte{12, 132, 17}: "A.O. Smith Water Products",
- [3]byte{12, 132, 132}: "Zenovia Electronics Inc.",
- [3]byte{12, 132, 220}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{12, 133, 37}: "Cisco Systems, Inc",
- [3]byte{12, 134, 16}: "Juniper Networks",
- [3]byte{12, 137, 16}: "Samsung Electronics Co.,Ltd",
- [3]byte{12, 138, 135}: "AgLogica Holdings, Inc",
- [3]byte{12, 139, 253}: "Intel Corporate",
- [3]byte{12, 140, 143}: "Kamo Technology Limited",
- [3]byte{12, 140, 220}: "Suunto Oy",
- [3]byte{12, 141, 152}: "TOP EIGHT IND CORP",
- [3]byte{12, 141, 219}: "Cisco Meraki",
- [3]byte{12, 143, 255}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{12, 145, 96}: "Hui Zhou Gaoshengda Technology Co.,LTD",
- [3]byte{12, 146, 78}: "Rice Lake Weighing Systems",
- [3]byte{12, 147, 1}: "PT. Prasimax Inovasi Teknologi",
- [3]byte{12, 147, 251}: "BNS Solutions",
- [3]byte{12, 150, 191}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{12, 152, 56}: "Xiaomi Communications Co Ltd",
- [3]byte{12, 155, 19}: "Shanghai Magic Mobile Telecommunication Co.Ltd.",
- [3]byte{12, 157, 86}: "Consort Controls Ltd",
- [3]byte{12, 158, 145}: "Sankosha Corporation",
- [3]byte{12, 161, 56}: "Blinq Wireless Inc.",
- [3]byte{12, 162, 244}: "Chameleon Technology (UK) Limited",
- [3]byte{12, 164, 2}: "Alcatel-Lucent IPD",
- [3]byte{12, 164, 42}: "OB Telecom Electronic Technology Co., Ltd",
- [3]byte{12, 166, 148}: "Sunitec Enterprise Co.,Ltd",
- [3]byte{12, 172, 5}: "Unitend Technologies Inc.",
- [3]byte{12, 175, 90}: "GENUS POWER INFRASTRUCTURES LIMITED",
- [3]byte{12, 178, 183}: "Texas Instruments",
- [3]byte{12, 179, 25}: "Samsung Electronics Co.,Ltd",
- [3]byte{12, 180, 89}: "Marketech International Corp.",
- [3]byte{12, 180, 239}: "Digience Co.,Ltd.",
- [3]byte{12, 181, 222}: "Alcatel Lucent",
- [3]byte{12, 185, 18}: "JM-DATA GmbH",
- [3]byte{12, 185, 55}: "Ubee Interactive Co., Limited",
- [3]byte{12, 188, 159}: "Apple, Inc.",
- [3]byte{12, 189, 81}: "TCT mobile ltd",
- [3]byte{12, 191, 21}: "Genetec Inc.",
- [3]byte{12, 191, 63}: "Shenzhen Lencotion Technology Co.,Ltd",
- [3]byte{12, 192, 192}: "MAGNETI MARELLI SISTEMAS ELECTRONICOS MEXICO",
- [3]byte{12, 195, 167}: "Meritec",
- [3]byte{12, 196, 122}: "Super Micro Computer, Inc.",
- [3]byte{12, 196, 126}: "EUCAST Co., Ltd.",
- [3]byte{12, 198, 85}: "Wuxi YSTen Technology Co.,Ltd.",
- [3]byte{12, 198, 106}: "Nokia Corporation",
- [3]byte{12, 198, 172}: "DAGS",
- [3]byte{12, 199, 49}: "Currant, Inc.",
- [3]byte{12, 200, 31}: "Summer Infant, Inc.",
- [3]byte{12, 201, 198}: "Samwin Hong Kong Limited",
- [3]byte{12, 203, 141}: "ASCO Numatics GmbH",
- [3]byte{12, 204, 38}: "Airenetworks",
- [3]byte{12, 205, 211}: "EASTRIVER TECHNOLOGY CO., LTD.",
- [3]byte{12, 205, 251}: "EDIC Systems Inc.",
- [3]byte{12, 206, 246}: "Guizhou Fortuneship Technology Co., Ltd",
- [3]byte{12, 207, 209}: "SPRINGWAVE Co., Ltd",
- [3]byte{12, 210, 146}: "Intel Corporate",
- [3]byte{12, 210, 181}: "Binatone Telecommunication Pvt. Ltd",
- [3]byte{12, 213, 2}: "Westell Technologies Inc.",
- [3]byte{12, 214, 150}: "Amimon Ltd",
- [3]byte{12, 214, 189}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{12, 215, 70}: "Apple, Inc.",
- [3]byte{12, 215, 194}: "Axium Technologies, Inc.",
- [3]byte{12, 216, 108}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{12, 217, 150}: "Cisco Systems, Inc",
- [3]byte{12, 217, 193}: "Visteon Corporation",
- [3]byte{12, 218, 65}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{12, 220, 204}: "Inala Technologies",
- [3]byte{12, 221, 239}: "Nokia Corporation",
- [3]byte{12, 223, 164}: "Samsung Electronics Co.,Ltd",
- [3]byte{12, 224, 228}: "PLANTRONICS, INC.",
- [3]byte{12, 229, 211}: "DH electronics GmbH",
- [3]byte{12, 231, 9}: "Fox Crypto B.V.",
- [3]byte{12, 231, 37}: "Microsoft Corporation",
- [3]byte{12, 232, 47}: "Bonfiglioli Vectron GmbH",
- [3]byte{12, 233, 54}: "ELIMOS srl",
- [3]byte{12, 234, 201}: "ARRIS Group, Inc.",
- [3]byte{12, 238, 230}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{12, 239, 124}: "AnaCom Inc",
- [3]byte{12, 239, 175}: "IEEE Registration Authority",
- [3]byte{12, 240, 25}: "Malgn Technology Co., Ltd.",
- [3]byte{12, 240, 180}: "Globalsat International Technology Ltd",
- [3]byte{12, 243, 97}: "Java Information",
- [3]byte{12, 243, 238}: "EM Microelectronic",
- [3]byte{12, 244, 5}: "Beijing Signalway Technologies Co.,Ltd",
- [3]byte{12, 244, 213}: "Ruckus Wireless",
- [3]byte{12, 245, 164}: "Cisco Systems, Inc",
- [3]byte{12, 248, 147}: "ARRIS Group, Inc.",
- [3]byte{12, 249, 192}: "BSkyB Ltd",
- [3]byte{12, 252, 131}: "Airoha Technology Corp.,",
- [3]byte{12, 253, 55}: "SUSE Linux GmbH",
- [3]byte{12, 254, 69}: "Sony Interactive Entertainment Inc.",
- [3]byte{16, 0, 0}: "Private",
- [3]byte{16, 0, 90}: "IBM Corp",
- [3]byte{16, 0, 232}: "NATIONAL SEMICONDUCTOR",
- [3]byte{16, 0, 253}: "LaonPeople",
- [3]byte{16, 1, 202}: "Ashley Butterworth",
- [3]byte{16, 2, 181}: "Intel Corporate",
- [3]byte{16, 5, 1}: "PEGATRON CORPORATION",
- [3]byte{16, 5, 177}: "ARRIS Group, Inc.",
- [3]byte{16, 5, 202}: "Cisco Systems, Inc",
- [3]byte{16, 7, 35}: "IEEE Registration Authority",
- [3]byte{16, 7, 182}: "Samsung Electronics Co.,Ltd",
- [3]byte{16, 8, 177}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{16, 9, 12}: "Janome Sewing Machine Co., Ltd.",
- [3]byte{16, 11, 169}: "Intel Corporate",
- [3]byte{16, 12, 36}: "pomdevices, LLC",
- [3]byte{16, 13, 47}: "Online Security Pty. Ltd.",
- [3]byte{16, 13, 50}: "Embedian, Inc.",
- [3]byte{16, 13, 127}: "NETGEAR",
- [3]byte{16, 14, 43}: "NEC CASIO Mobile Communications",
- [3]byte{16, 14, 126}: "Juniper Networks",
- [3]byte{16, 15, 24}: "Fu Gang Electronic(KunShan)CO.,LTD",
- [3]byte{16, 16, 182}: "McCain Inc",
- [3]byte{16, 18, 18}: "Vivo International Corporation Pty Ltd",
- [3]byte{16, 18, 24}: "Korins Inc.",
- [3]byte{16, 18, 72}: "ITG, Inc.",
- [3]byte{16, 18, 80}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{16, 19, 49}: "Technicolor",
- [3]byte{16, 19, 238}: "Justec International Technology INC.",
- [3]byte{16, 24, 158}: "Elmo Motion Control",
- [3]byte{16, 27, 84}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{16, 28, 12}: "Apple, Inc.",
- [3]byte{16, 29, 81}: "ON-Q LLC dba ON-Q Mesh Networks",
- [3]byte{16, 29, 192}: "Samsung Electronics Co.,Ltd",
- [3]byte{16, 31, 116}: "Hewlett Packard",
- [3]byte{16, 34, 121}: "ZeroDesktop, Inc.",
- [3]byte{16, 39, 190}: "TVIP",
- [3]byte{16, 40, 49}: "Morion Inc.",
- [3]byte{16, 42, 179}: "Xiaomi Communications Co Ltd",
- [3]byte{16, 44, 131}: "XIMEA",
- [3]byte{16, 45, 150}: "Looxcie Inc.",
- [3]byte{16, 46, 175}: "Texas Instruments",
- [3]byte{16, 47, 107}: "Microsoft Corporation",
- [3]byte{16, 48, 52}: "Cara Systems",
- [3]byte{16, 48, 71}: "Samsung Electronics Co.,Ltd",
- [3]byte{16, 51, 120}: "FLECTRON Co., LTD",
- [3]byte{16, 55, 17}: "Simlink AS",
- [3]byte{16, 59, 89}: "Samsung Electronics Co.,Ltd",
- [3]byte{16, 61, 234}: "HFC Technology (Beijing) Ltd. Co.",
- [3]byte{16, 64, 243}: "Apple, Inc.",
- [3]byte{16, 65, 127}: "Apple, Inc.",
- [3]byte{16, 67, 105}: "Soundmax Electronic Limited",
- [3]byte{16, 68, 0}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{16, 68, 90}: "Shaanxi Hitech Electronic Co., LTD",
- [3]byte{16, 69, 190}: "Norphonic AS",
- [3]byte{16, 69, 248}: "LNT-Automation GmbH",
- [3]byte{16, 70, 180}: "FormericaOE",
- [3]byte{16, 71, 128}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{16, 72, 177}: "Beijing Duokan Technology Limited",
- [3]byte{16, 73, 99}: "HARTING K.K.",
- [3]byte{16, 74, 125}: "Intel Corporate",
- [3]byte{16, 75, 70}: "Mitsubishi Electric Corporation",
- [3]byte{16, 77, 119}: "Innovative Computer Engineering",
- [3]byte{16, 78, 7}: "Shanghai Genvision Industries Co.,Ltd",
- [3]byte{16, 78, 137}: "Garmin International",
- [3]byte{16, 79, 168}: "Sony Corporation",
- [3]byte{16, 81, 114}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{16, 86, 17}: "ARRIS Group, Inc.",
- [3]byte{16, 86, 202}: "Peplink International Ltd.",
- [3]byte{16, 88, 135}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{16, 90, 247}: "ADB Italia",
- [3]byte{16, 92, 59}: "Perma-Pipe, Inc.",
- [3]byte{16, 92, 191}: "DuroByte Inc",
- [3]byte{16, 95, 6}: "Actiontec Electronics, Inc",
- [3]byte{16, 95, 73}: "Cisco SPVTG",
- [3]byte{16, 96, 75}: "Hewlett Packard",
- [3]byte{16, 98, 201}: "Adatis GmbH & Co. KG",
- [3]byte{16, 98, 208}: "Technicolor CH USA Inc.",
- [3]byte{16, 98, 235}: "D-Link International",
- [3]byte{16, 100, 226}: "ADFweb.com s.r.l.",
- [3]byte{16, 101, 163}: "Core Brands LLC",
- [3]byte{16, 101, 207}: "IQSIM",
- [3]byte{16, 102, 130}: "NEC Platforms, Ltd.",
- [3]byte{16, 104, 63}: "LG Electronics (Mobile Communications)",
- [3]byte{16, 111, 63}: "BUFFALO.INC",
- [3]byte{16, 111, 239}: "Ad-Sol Nissin Corp",
- [3]byte{16, 113, 249}: "Cloud Telecomputers, LLC",
- [3]byte{16, 114, 35}: "TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO",
- [3]byte{16, 118, 138}: "EoCell",
- [3]byte{16, 119, 176}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{16, 119, 177}: "Samsung Electronics Co.,Ltd",
- [3]byte{16, 120, 91}: "Actiontec Electronics, Inc",
- [3]byte{16, 120, 115}: "Shenzhen Jinkeyi Communication Co., Ltd.",
- [3]byte{16, 120, 206}: "Hanvit SI, Inc.",
- [3]byte{16, 120, 210}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{16, 122, 134}: "U&U ENGINEERING INC.",
- [3]byte{16, 123, 68}: "ASUSTek COMPUTER INC.",
- [3]byte{16, 123, 239}: "Zyxel Communications Corporation",
- [3]byte{16, 125, 26}: "Dell Inc.",
- [3]byte{16, 131, 210}: "Microseven Systems, LLC",
- [3]byte{16, 134, 140}: "ARRIS Group, Inc.",
- [3]byte{16, 136, 15}: "Daruma Telecomunicações e Informática S.A.",
- [3]byte{16, 136, 206}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{16, 138, 27}: "RAONIX Inc.",
- [3]byte{16, 140, 207}: "Cisco Systems, Inc",
- [3]byte{16, 146, 102}: "Samsung Electronics Co.,Ltd",
- [3]byte{16, 147, 233}: "Apple, Inc.",
- [3]byte{16, 149, 75}: "Megabyte Ltd.",
- [3]byte{16, 152, 54}: "Dell Inc.",
- [3]byte{16, 154, 185}: "Tosibox Oy",
- [3]byte{16, 154, 221}: "Apple, Inc.",
- [3]byte{16, 159, 169}: "Actiontec Electronics, Inc",
- [3]byte{16, 161, 59}: "FUJIKURA RUBBER LTD.",
- [3]byte{16, 164, 190}: "SHENZHEN BILIAN ELECTRONIC CO.,LTD",
- [3]byte{16, 165, 208}: "Murata Manufacturing Co., Ltd.",
- [3]byte{16, 166, 89}: "Mobile Create Co.,Ltd.",
- [3]byte{16, 167, 67}: "SK Mtek Limited",
- [3]byte{16, 169, 50}: "Beijing Cyber Cloud Technology Co. ,Ltd.",
- [3]byte{16, 174, 96}: "Private",
- [3]byte{16, 175, 120}: "Shenzhen ATUE Technology Co., Ltd",
- [3]byte{16, 177, 248}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{16, 178, 107}: "base Co.,Ltd.",
- [3]byte{16, 183, 19}: "Private",
- [3]byte{16, 183, 246}: "Plastoform Industries Ltd.",
- [3]byte{16, 185, 254}: "Lika srl",
- [3]byte{16, 186, 165}: "GANA I&C CO., LTD",
- [3]byte{16, 189, 24}: "Cisco Systems, Inc",
- [3]byte{16, 189, 85}: "Q-Lab Corporation",
- [3]byte{16, 190, 245}: "D-Link International",
- [3]byte{16, 191, 72}: "ASUSTek COMPUTER INC.",
- [3]byte{16, 192, 124}: "Blu-ray Disc Association",
- [3]byte{16, 194, 186}: "UTT Co., Ltd.",
- [3]byte{16, 195, 123}: "ASUSTek COMPUTER INC.",
- [3]byte{16, 197, 134}: "BIO SOUND LAB CO., LTD.",
- [3]byte{16, 198, 12}: "Domino UK Ltd",
- [3]byte{16, 198, 31}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{16, 198, 126}: "SHENZHEN JUCHIN TECHNOLOGY CO., LTD",
- [3]byte{16, 198, 252}: "Garmin International",
- [3]byte{16, 199, 63}: "Midas Klark Teknik Ltd",
- [3]byte{16, 202, 129}: "PRECIA",
- [3]byte{16, 204, 27}: "Liverock technologies,INC",
- [3]byte{16, 204, 219}: "AXIMUM PRODUITS ELECTRONIQUES",
- [3]byte{16, 205, 174}: "Avaya Inc",
- [3]byte{16, 205, 182}: "Essential Products, Inc.",
- [3]byte{16, 206, 169}: "Texas Instruments",
- [3]byte{16, 208, 122}: "AMPAK Technology, Inc.",
- [3]byte{16, 208, 171}: "zte corporation",
- [3]byte{16, 209, 220}: "INSTAR Deutschland GmbH",
- [3]byte{16, 211, 138}: "Samsung Electronics Co.,Ltd",
- [3]byte{16, 213, 66}: "Samsung Electronics Co.,Ltd",
- [3]byte{16, 218, 67}: "NETGEAR",
- [3]byte{16, 221, 177}: "Apple, Inc.",
- [3]byte{16, 221, 244}: "Maxway Electronics CO.,LTD",
- [3]byte{16, 222, 228}: "automationNEXT GmbH",
- [3]byte{16, 223, 139}: "Shenzhen CareDear Communication Technology Co.,Ltd",
- [3]byte{16, 226, 213}: "Qi Hardware Inc.",
- [3]byte{16, 227, 199}: "Seohwa Telecom",
- [3]byte{16, 228, 175}: "APR, LLC",
- [3]byte{16, 230, 143}: "KWANGSUNG ELECTRONICS KOREA CO.,LTD.",
- [3]byte{16, 230, 174}: "Source Technologies, LLC",
- [3]byte{16, 232, 120}: "Nokia",
- [3]byte{16, 232, 238}: "PhaseSpace",
- [3]byte{16, 234, 89}: "Cisco SPVTG",
- [3]byte{16, 238, 217}: "Canoga Perkins Corporation",
- [3]byte{16, 240, 5}: "Intel Corporate",
- [3]byte{16, 241, 99}: "TNK CO.,LTD",
- [3]byte{16, 241, 242}: "LG Electronics (Mobile Communications)",
- [3]byte{16, 243, 17}: "Cisco Systems, Inc",
- [3]byte{16, 243, 219}: "Gridco Systems, Inc.",
- [3]byte{16, 244, 154}: "T3 Innovation",
- [3]byte{16, 246, 129}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{16, 249, 111}: "LG Electronics (Mobile Communications)",
- [3]byte{16, 249, 238}: "Nokia Corporation",
- [3]byte{16, 250, 206}: "Reacheng Communication Technology Co.,Ltd",
- [3]byte{16, 251, 240}: "KangSheng LTD.",
- [3]byte{16, 252, 84}: "Shany Electronic Co., Ltd.",
- [3]byte{16, 252, 182}: "mirusystems CO.,LTD",
- [3]byte{16, 254, 237}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{17, 0, 170}: "Private",
- [3]byte{17, 17, 17}: "Private",
- [3]byte{20, 2, 236}: "Hewlett Packard Enterprise",
- [3]byte{20, 4, 103}: "SNK Technologies Co.,Ltd.",
- [3]byte{20, 7, 8}: "Private",
- [3]byte{20, 7, 224}: "Abrantix AG",
- [3]byte{20, 12, 91}: "PLNetworks",
- [3]byte{20, 12, 118}: "FREEBOX SAS",
- [3]byte{20, 13, 79}: "Flextronics International",
- [3]byte{20, 16, 159}: "Apple, Inc.",
- [3]byte{20, 19, 48}: "Anakreon UK LLP",
- [3]byte{20, 19, 87}: "ATP Electronics, Inc.",
- [3]byte{20, 20, 75}: "Ruijie Networks Co.,LTD",
- [3]byte{20, 20, 230}: "Ningbo Sanhe Digital Co.,Ltd",
- [3]byte{20, 21, 124}: "TOKYO COSMOS ELECTRIC CO.,LTD.",
- [3]byte{20, 24, 119}: "Dell Inc.",
- [3]byte{20, 26, 81}: "Treetech Sistemas Digitais",
- [3]byte{20, 26, 163}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{20, 27, 189}: "Volex Inc.",
- [3]byte{20, 27, 240}: "Intellimedia Systems Ltd",
- [3]byte{20, 31, 120}: "Samsung Electronics Co.,Ltd",
- [3]byte{20, 31, 186}: "IEEE Registration Authority",
- [3]byte{20, 34, 219}: "eero inc.",
- [3]byte{20, 35, 215}: "EUTRONIX CO., LTD.",
- [3]byte{20, 40, 130}: "MIDICOM ELECTRONICS CO.LTD",
- [3]byte{20, 41, 113}: "NEMOA ELECTRONICS (HK) CO. LTD",
- [3]byte{20, 43, 210}: "Armtel Ltd.",
- [3]byte{20, 43, 214}: "Guangdong Appscomm Co.,Ltd",
- [3]byte{20, 45, 39}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{20, 45, 139}: "Incipio Technologies, Inc",
- [3]byte{20, 45, 245}: "Amphitech",
- [3]byte{20, 47, 253}: "LT SECURITY INC",
- [3]byte{20, 48, 4}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{20, 48, 122}: "Avermetrics",
- [3]byte{20, 48, 198}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{20, 50, 209}: "Samsung Electronics Co.,Ltd",
- [3]byte{20, 51, 101}: "TEM Mobile Limited",
- [3]byte{20, 53, 139}: "Mediabridge Products, LLC.",
- [3]byte{20, 53, 179}: "Future Designs, Inc.",
- [3]byte{20, 54, 5}: "Nokia Corporation",
- [3]byte{20, 54, 198}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{20, 55, 59}: "PROCOM Systems",
- [3]byte{20, 58, 234}: "Dynapower Company LLC",
- [3]byte{20, 61, 242}: "Beijing Shidai Hongyuan Network Communication Co.,Ltd",
- [3]byte{20, 62, 96}: "Nokia",
- [3]byte{20, 62, 191}: "zte corporation",
- [3]byte{20, 63, 39}: "Noccela Oy",
- [3]byte{20, 65, 70}: "Honeywell (China) Co., LTD",
- [3]byte{20, 65, 226}: "Monaco Enterprises, Inc.",
- [3]byte{20, 67, 25}: "Creative&Link Technology Limited",
- [3]byte{20, 68, 74}: "Apollo Seiko Ltd.",
- [3]byte{20, 70, 228}: "AVISTEL",
- [3]byte{20, 72, 139}: "Shenzhen Doov Technology Co.,Ltd",
- [3]byte{20, 73, 120}: "Digital Control Incorporated",
- [3]byte{20, 73, 224}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{20, 76, 26}: "Max Communication GmbH",
- [3]byte{20, 77, 103}: "Zioncom Electronics (Shenzhen) Ltd.",
- [3]byte{20, 79, 215}: "IEEE Registration Authority",
- [3]byte{20, 84, 18}: "Entis Co., Ltd.",
- [3]byte{20, 86, 69}: "Savitech Corp.",
- [3]byte{20, 86, 142}: "Samsung Electronics Co.,Ltd",
- [3]byte{20, 88, 208}: "Hewlett Packard",
- [3]byte{20, 90, 5}: "Apple, Inc.",
- [3]byte{20, 90, 131}: "Logi-D inc",
- [3]byte{20, 91, 209}: "ARRIS Group, Inc.",
- [3]byte{20, 91, 225}: "nyantec GmbH",
- [3]byte{20, 94, 69}: "Kaleao Limited",
- [3]byte{20, 95, 148}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{20, 96, 128}: "zte corporation",
- [3]byte{20, 97, 2}: "Alpine Electronics, Inc.",
- [3]byte{20, 97, 47}: "Avaya Inc",
- [3]byte{20, 99, 8}: "JABIL CIRCUIT (SHANGHAI) LTD.",
- [3]byte{20, 106, 11}: "Cypress Electronics Limited",
- [3]byte{20, 107, 114}: "Shenzhen Fortune Ship Technology Co., Ltd.",
- [3]byte{20, 110, 10}: "Private",
- [3]byte{20, 115, 115}: "TUBITAK UEKAE",
- [3]byte{20, 116, 17}: "RIM",
- [3]byte{20, 117, 144}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{20, 120, 11}: "PerkinElmer Technologies GmbH & Co. KG",
- [3]byte{20, 121, 243}: "China Mobile Group Device Co.,Ltd.",
- [3]byte{20, 125, 179}: "JOA TELECOM.CO.,LTD",
- [3]byte{20, 125, 197}: "Murata Manufacturing Co., Ltd.",
- [3]byte{20, 130, 91}: "Hefei Radio Communication Technology Co., Ltd",
- [3]byte{20, 134, 146}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{20, 137, 62}: "VIXTEL TECHNOLOGIES LIMTED",
- [3]byte{20, 137, 81}: "LCFC(HeFei) Electronics Technology co., ltd",
- [3]byte{20, 137, 253}: "Samsung Electronics Co.,Ltd",
- [3]byte{20, 138, 112}: "ADS GmbH",
- [3]byte{20, 143, 33}: "Garmin International",
- [3]byte{20, 143, 198}: "Apple, Inc.",
- [3]byte{20, 144, 144}: "KongTop industrial(shen zhen)CO.,LTD",
- [3]byte{20, 145, 130}: "Belkin International Inc.",
- [3]byte{20, 147, 70}: "PNI sensor corporation",
- [3]byte{20, 148, 72}: "BLU CASTLE S.A.",
- [3]byte{20, 152, 125}: "Technicolor CH USA Inc.",
- [3]byte{20, 153, 226}: "Apple, Inc.",
- [3]byte{20, 154, 16}: "Microsoft Corporation",
- [3]byte{20, 157, 9}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{20, 158, 207}: "Dell Inc.",
- [3]byte{20, 159, 60}: "Samsung Electronics Co.,Ltd",
- [3]byte{20, 159, 182}: "GUANGDONG GENIUS TECHNOLOGY CO.,LTD.",
- [3]byte{20, 159, 232}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{20, 160, 248}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{20, 163, 100}: "Samsung Electronics Co.,Ltd",
- [3]byte{20, 165, 26}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{20, 166, 44}: "S.M. Dezac S.A.",
- [3]byte{20, 167, 139}: "Zhejiang Dahua Technology Co., Ltd.",
- [3]byte{20, 168, 107}: "ShenZhen Telacom Science&Technology Co., Ltd",
- [3]byte{20, 169, 227}: "MST CORPORATION",
- [3]byte{20, 171, 197}: "Intel Corporate",
- [3]byte{20, 171, 240}: "ARRIS Group, Inc.",
- [3]byte{20, 174, 219}: "VTech Telecommunications Ltd.",
- [3]byte{20, 177, 38}: "Industrial Software Co",
- [3]byte{20, 177, 200}: "InfiniWing, Inc.",
- [3]byte{20, 179, 31}: "Dell Inc.",
- [3]byte{20, 179, 112}: "Gigaset Digital Technology (Shenzhen) Co., Ltd.",
- [3]byte{20, 180, 132}: "Samsung Electronics Co.,Ltd",
- [3]byte{20, 183, 61}: "ARCHEAN Technologies",
- [3]byte{20, 183, 248}: "Technicolor CH USA Inc.",
- [3]byte{20, 184, 55}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{20, 185, 104}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{20, 187, 110}: "Samsung Electronics Co.,Ltd",
- [3]byte{20, 189, 97}: "Apple, Inc.",
- [3]byte{20, 192, 137}: "DUNE HD LTD",
- [3]byte{20, 193, 38}: "Nokia Corporation",
- [3]byte{20, 193, 255}: "ShenZhen QianHai Comlan communication Co.,LTD",
- [3]byte{20, 194, 29}: "Sabtech Industries",
- [3]byte{20, 195, 194}: "K.A. Schmersal GmbH & Co. KG",
- [3]byte{20, 201, 19}: "LG Electronics",
- [3]byte{20, 204, 32}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{20, 207, 141}: "OHSUNG",
- [3]byte{20, 207, 146}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{20, 207, 226}: "ARRIS Group, Inc.",
- [3]byte{20, 209, 31}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{20, 212, 254}: "ARRIS Group, Inc.",
- [3]byte{20, 214, 77}: "D-Link International",
- [3]byte{20, 215, 110}: "CONCH ELECTRONIC Co.,Ltd",
- [3]byte{20, 218, 233}: "ASUSTek COMPUTER INC.",
- [3]byte{20, 219, 133}: "S NET MEDIA",
- [3]byte{20, 221, 169}: "ASUSTek COMPUTER INC.",
- [3]byte{20, 221, 229}: "MPMKVVCL",
- [3]byte{20, 228, 236}: "mLogic LLC",
- [3]byte{20, 230, 228}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{20, 231, 200}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{20, 235, 51}: "BSMediasoft Co., Ltd.",
- [3]byte{20, 237, 165}: "Wächter GmbH Sicherheitssysteme",
- [3]byte{20, 237, 187}: "2Wire Inc",
- [3]byte{20, 237, 228}: "Kaiam Corporation",
- [3]byte{20, 238, 157}: "AirNav Systems LLC",
- [3]byte{20, 240, 197}: "Xtremio Ltd.",
- [3]byte{20, 242, 142}: "ShenYang ZhongKe-Allwin Technology Co.LTD",
- [3]byte{20, 244, 42}: "Samsung Electronics Co.,Ltd",
- [3]byte{20, 246, 90}: "Xiaomi Communications Co Ltd",
- [3]byte{20, 248, 147}: "Wuhan FiberHome Digital Technology Co.,Ltd.",
- [3]byte{20, 254, 175}: "SAGITTAR LIMITED",
- [3]byte{20, 254, 181}: "Dell Inc.",
- [3]byte{24, 0, 45}: "Sony Mobile Communications AB",
- [3]byte{24, 0, 219}: "Fitbit Inc.",
- [3]byte{24, 1, 125}: "Harbin Arteor technology co., LTD",
- [3]byte{24, 1, 227}: "Bittium Wireless Ltd",
- [3]byte{24, 3, 115}: "Dell Inc.",
- [3]byte{24, 3, 250}: "IBT Interfaces",
- [3]byte{24, 6, 117}: "Dilax Intelcom GmbH",
- [3]byte{24, 6, 255}: "Acer Computer(Shanghai) Limited.",
- [3]byte{24, 11, 82}: "Nanotron Technologies GmbH",
- [3]byte{24, 12, 20}: "iSonea Limited",
- [3]byte{24, 12, 119}: "Westinghouse Electric Company, LLC",
- [3]byte{24, 12, 172}: "CANON INC.",
- [3]byte{24, 16, 78}: "CEDINT-UPM",
- [3]byte{24, 18, 18}: "Cepton Technologies",
- [3]byte{24, 20, 32}: "TEB SAS",
- [3]byte{24, 20, 86}: "Nokia Corporation",
- [3]byte{24, 22, 201}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 23, 20}: "DAEWOOIS",
- [3]byte{24, 23, 37}: "Cameo Communications, Inc.",
- [3]byte{24, 25, 63}: "Tamtron Oy",
- [3]byte{24, 27, 235}: "Actiontec Electronics, Inc",
- [3]byte{24, 30, 120}: "Sagemcom Broadband SAS",
- [3]byte{24, 30, 176}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 32, 18}: "Aztech Associates Inc.",
- [3]byte{24, 32, 50}: "Apple, Inc.",
- [3]byte{24, 32, 76}: "Kummler+Matter AG",
- [3]byte{24, 32, 166}: "Sage Co., Ltd.",
- [3]byte{24, 33, 149}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 34, 126}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 38, 102}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 40, 97}: "AirTies Wireless Networks",
- [3]byte{24, 42, 123}: "Nintendo Co., Ltd.",
- [3]byte{24, 43, 5}: "8D Technologies",
- [3]byte{24, 44, 145}: "Concept Development, Inc.",
- [3]byte{24, 44, 180}: "Nectarsoft Co., Ltd.",
- [3]byte{24, 45, 152}: "Jinwoo Industrial system",
- [3]byte{24, 48, 9}: "Woojin Industrial Systems Co., Ltd.",
- [3]byte{24, 50, 162}: "LAON TECHNOLOGY CO., LTD.",
- [3]byte{24, 51, 157}: "Cisco Systems, Inc",
- [3]byte{24, 52, 81}: "Apple, Inc.",
- [3]byte{24, 53, 209}: "ARRIS Group, Inc.",
- [3]byte{24, 54, 252}: "Elecsys International Corporation",
- [3]byte{24, 56, 37}: "Wuhan Lingjiu High-tech Co.,Ltd.",
- [3]byte{24, 56, 100}: "CAP-TECH INTERNATIONAL CO., LTD.",
- [3]byte{24, 57, 25}: "Unicoi Systems",
- [3]byte{24, 57, 110}: "SUNSEA TELECOMMUNICATIONS CO.,LTD.",
- [3]byte{24, 58, 45}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 59, 210}: "BYD Precision Manufacture Company Ltd.",
- [3]byte{24, 61, 162}: "Intel Corporate",
- [3]byte{24, 63, 71}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 64, 164}: "Shenzhen Trylong Smart Science and Technology Co., Ltd.",
- [3]byte{24, 66, 29}: "Private",
- [3]byte{24, 66, 47}: "Alcatel Lucent",
- [3]byte{24, 68, 98}: "Riava Networks, Inc.",
- [3]byte{24, 68, 230}: "zte corporation",
- [3]byte{24, 70, 23}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 72, 216}: "Fastback Networks",
- [3]byte{24, 74, 111}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{24, 78, 148}: "MESSOA TECHNOLOGIES INC.",
- [3]byte{24, 79, 50}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{24, 82, 7}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{24, 82, 83}: "Pixord Corporation",
- [3]byte{24, 82, 130}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{24, 83, 224}: "Hanyang Digitech Co.Ltd",
- [3]byte{24, 85, 15}: "Cisco SPVTG",
- [3]byte{24, 89, 51}: "Cisco SPVTG",
- [3]byte{24, 89, 54}: "Xiaomi Communications Co Ltd",
- [3]byte{24, 90, 232}: "Zenotech.Co.,Ltd",
- [3]byte{24, 93, 154}: "BobjGear LLC",
- [3]byte{24, 94, 15}: "Intel Corporate",
- [3]byte{24, 96, 36}: "Hewlett Packard",
- [3]byte{24, 97, 199}: "lemonbeat GmbH",
- [3]byte{24, 98, 44}: "Sagemcom Broadband SAS",
- [3]byte{24, 100, 114}: "Aruba Networks",
- [3]byte{24, 101, 113}: "Top Victory Electronics (Taiwan) Co., Ltd.",
- [3]byte{24, 101, 144}: "Apple, Inc.",
- [3]byte{24, 102, 218}: "Dell Inc.",
- [3]byte{24, 102, 227}: "Veros Systems, Inc.",
- [3]byte{24, 103, 63}: "Hanover Displays Limited",
- [3]byte{24, 103, 81}: "KOMEG Industrielle Messtechnik GmbH",
- [3]byte{24, 103, 176}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 104, 106}: "zte corporation",
- [3]byte{24, 104, 130}: "Beward R&D Co., Ltd.",
- [3]byte{24, 104, 203}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
- [3]byte{24, 109, 153}: "Adanis Inc.",
- [3]byte{24, 113, 23}: "eta plus electronic gmbh",
- [3]byte{24, 116, 46}: "Amazon Technologies Inc.",
- [3]byte{24, 117, 50}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{24, 121, 162}: "GMJ ELECTRIC LIMITED",
- [3]byte{24, 122, 147}: "AMICCOM Electronics Corporation",
- [3]byte{24, 124, 129}: "Valeo Vision Systems",
- [3]byte{24, 126, 213}: "shenzhen kaism technology Co. Ltd",
- [3]byte{24, 128, 144}: "Cisco Systems, Inc",
- [3]byte{24, 128, 206}: "Barberry Solutions Ltd",
- [3]byte{24, 128, 245}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{24, 130, 25}: "Alibaba Cloud Computing Ltd.",
- [3]byte{24, 131, 49}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 131, 191}: "Arcadyan Technology Corporation",
- [3]byte{24, 132, 16}: "CoreTrust Inc.",
- [3]byte{24, 134, 58}: "DIGITAL ART SYSTEM",
- [3]byte{24, 134, 172}: "Nokia Danmark A/S",
- [3]byte{24, 135, 150}: "HTC Corporation",
- [3]byte{24, 136, 87}: "Beijing Jinhong Xi-Dian Information Technology Corp.",
- [3]byte{24, 137, 91}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 137, 223}: "CerebrEX Inc.",
- [3]byte{24, 139, 21}: "ShenZhen ZhongRuiJing Technology co.,LTD",
- [3]byte{24, 139, 69}: "Cisco Systems, Inc",
- [3]byte{24, 139, 157}: "Cisco Systems, Inc",
- [3]byte{24, 142, 213}: "TP Vision Belgium N.V. - innovation site Brugge",
- [3]byte{24, 142, 249}: "G2C Co. Ltd.",
- [3]byte{24, 144, 216}: "Sagemcom Broadband SAS",
- [3]byte{24, 146, 44}: "Virtual Instruments",
- [3]byte{24, 147, 215}: "Texas Instruments",
- [3]byte{24, 151, 255}: "TechFaith Wireless Technology Limited",
- [3]byte{24, 153, 245}: "Sichuan Changhong Electric Ltd.",
- [3]byte{24, 154, 103}: "CSE-Servelec Limited",
- [3]byte{24, 155, 165}: "IEEE Registration Authority",
- [3]byte{24, 156, 93}: "Cisco Systems, Inc",
- [3]byte{24, 158, 252}: "Apple, Inc.",
- [3]byte{24, 163, 232}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{24, 166, 247}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{24, 169, 5}: "Hewlett Packard",
- [3]byte{24, 169, 88}: "PROVISION THAI CO., LTD.",
- [3]byte{24, 169, 155}: "Dell Inc.",
- [3]byte{24, 170, 69}: "Fon Technology",
- [3]byte{24, 171, 245}: "Ultra Electronics Electrics",
- [3]byte{24, 173, 77}: "Polostar Technology Corporation",
- [3]byte{24, 174, 187}: "Siemens Convergence Creators GmbH&Co.KG",
- [3]byte{24, 175, 97}: "Apple, Inc.",
- [3]byte{24, 175, 143}: "Apple, Inc.",
- [3]byte{24, 175, 159}: "DIGITRONIC Automationsanlagen GmbH",
- [3]byte{24, 177, 105}: "Sonicwall",
- [3]byte{24, 178, 9}: "Torrey Pines Logic, Inc",
- [3]byte{24, 179, 186}: "Netlogic AB",
- [3]byte{24, 180, 48}: "Nest Labs Inc.",
- [3]byte{24, 181, 145}: "I-Storm",
- [3]byte{24, 183, 158}: "Invoxia",
- [3]byte{24, 184, 31}: "ARRIS Group, Inc.",
- [3]byte{24, 188, 90}: "Zhejiang Tmall Technology Co., Ltd.",
- [3]byte{24, 189, 173}: "L-TECH CORPORATION",
- [3]byte{24, 192, 134}: "Broadcom",
- [3]byte{24, 193, 157}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{24, 196, 81}: "Tucson Embedded Systems",
- [3]byte{24, 197, 1}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{24, 197, 138}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{24, 200, 231}: "Shenzhen Hualistone Technology Co.,Ltd",
- [3]byte{24, 204, 35}: "Philio Technology Corporation",
- [3]byte{24, 204, 136}: "Hitachi Johnson Controls Air",
- [3]byte{24, 207, 94}: "Liteon Technology Corporation",
- [3]byte{24, 208, 113}: "DASAN CO., LTD.",
- [3]byte{24, 210, 37}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{24, 210, 118}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{24, 213, 182}: "SMG Holdings LLC",
- [3]byte{24, 214, 106}: "Inmarsat",
- [3]byte{24, 214, 199}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{24, 214, 207}: "Kurth Electronic GmbH",
- [3]byte{24, 217, 73}: "Qvis Labs, LLC",
- [3]byte{24, 219, 242}: "Dell Inc.",
- [3]byte{24, 220, 86}: "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
- [3]byte{24, 222, 215}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{24, 226, 136}: "STT Condigi",
- [3]byte{24, 226, 159}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{24, 226, 194}: "Samsung Electronics Co.,Ltd",
- [3]byte{24, 227, 188}: "TCT mobile ltd",
- [3]byte{24, 231, 40}: "Cisco Systems, Inc",
- [3]byte{24, 231, 244}: "Apple, Inc.",
- [3]byte{24, 232, 15}: "Viking Electronics Inc.",
- [3]byte{24, 232, 221}: "MODULETEK",
- [3]byte{24, 238, 105}: "Apple, Inc.",
- [3]byte{24, 239, 99}: "Cisco Systems, Inc",
- [3]byte{24, 240, 228}: "Xiaomi Communications Co Ltd",
- [3]byte{24, 241, 69}: "NetComm Wireless Limited",
- [3]byte{24, 242, 146}: "Shannon Systems",
- [3]byte{24, 244, 106}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{24, 246, 67}: "Apple, Inc.",
- [3]byte{24, 246, 80}: "Multimedia Pacific Limited",
- [3]byte{24, 247, 107}: "Zhejiang Winsight Technology CO.,LTD",
- [3]byte{24, 248, 122}: "i3 International Inc.",
- [3]byte{24, 250, 111}: "ISC applied systems corp",
- [3]byte{24, 251, 123}: "Dell Inc.",
- [3]byte{24, 252, 159}: "Changhe Electronics Co., Ltd.",
- [3]byte{24, 254, 52}: "Espressif Inc.",
- [3]byte{24, 255, 15}: "Intel Corporate",
- [3]byte{24, 255, 46}: "Shenzhen Rui Ying Da Technology Co., Ltd",
- [3]byte{28, 6, 86}: "IDY Corporation",
- [3]byte{28, 8, 193}: "Lg Innotek",
- [3]byte{28, 11, 82}: "EPICOM S.A",
- [3]byte{28, 15, 175}: "Lucid Vision Labs",
- [3]byte{28, 15, 207}: "Sypro Optics GmbH",
- [3]byte{28, 17, 225}: "Wartsila Finland Oy",
- [3]byte{28, 18, 157}: "IEEE PES PSRC/SUB",
- [3]byte{28, 20, 72}: "ARRIS Group, Inc.",
- [3]byte{28, 20, 179}: "Airwire Technologies",
- [3]byte{28, 21, 31}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{28, 23, 211}: "Cisco Systems, Inc",
- [3]byte{28, 24, 74}: "ShenZhen RicherLink Technologies Co.,LTD",
- [3]byte{28, 25, 222}: "eyevis GmbH",
- [3]byte{28, 26, 192}: "Apple, Inc.",
- [3]byte{28, 27, 13}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{28, 27, 104}: "ARRIS Group, Inc.",
- [3]byte{28, 28, 253}: "Dalian Hi-Think Computer Technology, Corp",
- [3]byte{28, 29, 103}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{28, 29, 134}: "Cisco Systems, Inc",
- [3]byte{28, 30, 227}: "Hui Zhou Gaoshengda Technology Co.,LTD",
- [3]byte{28, 31, 212}: "LifeBEAM Technologies LTD",
- [3]byte{28, 33, 209}: "IEEE Registration Authority",
- [3]byte{28, 35, 44}: "Samsung Electronics Co.,Ltd",
- [3]byte{28, 35, 79}: "EDMI Europe Ltd",
- [3]byte{28, 37, 225}: "China Mobile IOT Company Limited",
- [3]byte{28, 39, 221}: "Datang Gohighsec(zhejiang)Information Technology Co.,Ltd.",
- [3]byte{28, 51, 14}: "PernixData",
- [3]byte{28, 51, 77}: "ITS Telecom",
- [3]byte{28, 52, 119}: "Innovation Wireless",
- [3]byte{28, 53, 241}: "NEW Lift Neue Elektronische Wege Steuerungsbau GmbH",
- [3]byte{28, 54, 187}: "Apple, Inc.",
- [3]byte{28, 55, 191}: "Cloudium Systems Ltd.",
- [3]byte{28, 57, 71}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{28, 57, 138}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{28, 58, 79}: "AccuSpec Electronics, LLC",
- [3]byte{28, 58, 222}: "Samsung Electronics Co.,Ltd",
- [3]byte{28, 61, 231}: "Sigma Koki Co.,Ltd.",
- [3]byte{28, 62, 132}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{28, 64, 36}: "Dell Inc.",
- [3]byte{28, 64, 232}: "SHENZHEN PROGRESS&WIN TECHNOLOGY CO.,LTD",
- [3]byte{28, 65, 88}: "Gemalto M2M GmbH",
- [3]byte{28, 67, 236}: "JAPAN CIRCUIT CO.,LTD",
- [3]byte{28, 68, 25}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{28, 69, 147}: "Texas Instruments",
- [3]byte{28, 72, 64}: "IMS Messsysteme GmbH",
- [3]byte{28, 72, 206}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{28, 72, 249}: "GN Netcom A/S",
- [3]byte{28, 73, 123}: "Gemtek Technology Co., Ltd.",
- [3]byte{28, 74, 247}: "AMON INC",
- [3]byte{28, 75, 185}: "SMG ENTERPRISE, LLC",
- [3]byte{28, 75, 214}: "AzureWave Technology Inc.",
- [3]byte{28, 77, 112}: "Intel Corporate",
- [3]byte{28, 81, 181}: "Techaya LTD",
- [3]byte{28, 82, 22}: "DONGGUAN HELE ELECTRONICS CO., LTD",
- [3]byte{28, 82, 214}: "FLAT DISPLAY TECHNOLOGY CORPORATION",
- [3]byte{28, 85, 58}: "QianGua Corp.",
- [3]byte{28, 86, 254}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{28, 87, 216}: "Kraftway Corporation PLC",
- [3]byte{28, 90, 11}: "Tegile Systems",
- [3]byte{28, 90, 62}: "Samsung Electronics Co.,Ltd",
- [3]byte{28, 90, 107}: "Philips Electronics Nederland BV",
- [3]byte{28, 92, 85}: "PRIMA Cinema, Inc",
- [3]byte{28, 92, 96}: "Shenzhen Belzon Technology Co.,LTD.",
- [3]byte{28, 92, 242}: "Apple, Inc.",
- [3]byte{28, 95, 43}: "D-Link International",
- [3]byte{28, 95, 255}: "Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch",
- [3]byte{28, 96, 222}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{28, 98, 184}: "Samsung Electronics Co.,Ltd",
- [3]byte{28, 99, 183}: "OpenProducts 237 AB",
- [3]byte{28, 101, 157}: "Liteon Technology Corporation",
- [3]byte{28, 102, 109}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{28, 102, 170}: "Samsung Electronics Co.,Ltd",
- [3]byte{28, 103, 88}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{28, 105, 165}: "BlackBerry RTS",
- [3]byte{28, 106, 122}: "Cisco Systems, Inc",
- [3]byte{28, 107, 202}: "Mitsunami Co., Ltd.",
- [3]byte{28, 110, 76}: "Logistic Service & Engineering Co.,Ltd",
- [3]byte{28, 110, 118}: "Quarion Technology Inc",
- [3]byte{28, 111, 101}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{28, 112, 34}: "Murata Manufacturing Co., Ltd.",
- [3]byte{28, 115, 40}: "Connected Home",
- [3]byte{28, 115, 112}: "Neotech",
- [3]byte{28, 116, 13}: "Zyxel Communications Corporation",
- [3]byte{28, 117, 8}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{28, 118, 202}: "Terasic Technologies Inc.",
- [3]byte{28, 119, 246}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{28, 120, 57}: "Shenzhen Tencent Computer System Co., Ltd.",
- [3]byte{28, 123, 33}: "Sony Mobile Communications AB",
- [3]byte{28, 123, 35}: "Qingdao Hisense Communications Co.,Ltd.",
- [3]byte{28, 124, 17}: "EID",
- [3]byte{28, 124, 69}: "Vitek Industrial Video Products, Inc.",
- [3]byte{28, 124, 199}: "Coriant GmbH",
- [3]byte{28, 125, 34}: "Fuji Xerox Co., Ltd.",
- [3]byte{28, 126, 81}: "3bumen.com",
- [3]byte{28, 126, 229}: "D-Link International",
- [3]byte{28, 131, 65}: "Hefei Bitland Information Technology Co.Ltd",
- [3]byte{28, 131, 176}: "Linked IP GmbH",
- [3]byte{28, 132, 100}: "FORMOSA WIRELESS COMMUNICATION CORP.",
- [3]byte{28, 134, 173}: "MCT CO., LTD.",
- [3]byte{28, 135, 44}: "ASUSTek COMPUTER INC.",
- [3]byte{28, 142, 92}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{28, 142, 142}: "DB Communication & Systems Co., ltd.",
- [3]byte{28, 143, 138}: "Phase Motion Control SpA",
- [3]byte{28, 145, 72}: "Apple, Inc.",
- [3]byte{28, 145, 121}: "Integrated System Technologies Ltd",
- [3]byte{28, 148, 146}: "RUAG Schweiz AG",
- [3]byte{28, 149, 93}: "I-LAX ELECTRONICS INC.",
- [3]byte{28, 149, 159}: "Veethree Electronics And Marine LLC",
- [3]byte{28, 150, 90}: "Weifang GoerTek Technology Co.,Ltd.",
- [3]byte{28, 151, 61}: "PRICOM Design",
- [3]byte{28, 152, 236}: "Hewlett Packard Enterprise",
- [3]byte{28, 153, 76}: "Murata Manufacturing Co., Ltd.",
- [3]byte{28, 156, 38}: "Zoovel Technologies",
- [3]byte{28, 157, 62}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{28, 158, 70}: "Apple, Inc.",
- [3]byte{28, 158, 203}: "Beijing Nari Smartchip Microelectronics Company Limited",
- [3]byte{28, 160, 211}: "IEEE Registration Authority",
- [3]byte{28, 162, 177}: "ruwido austria gmbh",
- [3]byte{28, 165, 50}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{28, 167, 112}: "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
- [3]byte{28, 170, 7}: "Cisco Systems, Inc",
- [3]byte{28, 171, 1}: "Innovolt",
- [3]byte{28, 171, 52}: "New H3C Technologies Co., Ltd",
- [3]byte{28, 171, 167}: "Apple, Inc.",
- [3]byte{28, 171, 192}: "Hitron Technologies. Inc",
- [3]byte{28, 173, 209}: "Bosung Electronics Co., Ltd.",
- [3]byte{28, 175, 5}: "Samsung Electronics Co.,Ltd",
- [3]byte{28, 175, 247}: "D-Link International",
- [3]byte{28, 176, 148}: "HTC Corporation",
- [3]byte{28, 177, 127}: "NEC Platforms, Ltd.",
- [3]byte{28, 178, 67}: "TDC A/S",
- [3]byte{28, 183, 44}: "ASUSTek COMPUTER INC.",
- [3]byte{28, 184, 87}: "Becon Technologies Co,.Ltd.",
- [3]byte{28, 185, 196}: "Ruckus Wireless",
- [3]byte{28, 186, 140}: "Texas Instruments",
- [3]byte{28, 187, 168}: "OJSC Ufimskiy Zavod Promsvyaz",
- [3]byte{28, 189, 14}: "Amplified Engineering Pty Ltd",
- [3]byte{28, 189, 185}: "D-Link International",
- [3]byte{28, 192, 53}: "PLANEX COMMUNICATIONS INC.",
- [3]byte{28, 192, 225}: "IEEE Registration Authority",
- [3]byte{28, 193, 26}: "Wavetronix",
- [3]byte{28, 193, 222}: "Hewlett Packard",
- [3]byte{28, 195, 22}: "MileSight Technology Co., Ltd.",
- [3]byte{28, 197, 134}: "Absolute Acoustics",
- [3]byte{28, 198, 60}: "Arcadyan Technology Corporation",
- [3]byte{28, 199, 45}: "Shenzhen Huapu Digital CO.,Ltd",
- [3]byte{28, 202, 227}: "IEEE Registration Authority",
- [3]byte{28, 203, 153}: "TCT mobile ltd",
- [3]byte{28, 205, 229}: "Shanghai Wind Technologies Co.,Ltd",
- [3]byte{28, 212, 12}: "Kriwan Industrie-Elektronik GmbH",
- [3]byte{28, 214, 189}: "LEEDARSON LIGHTING CO., LTD.",
- [3]byte{28, 218, 39}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{28, 221, 234}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{28, 222, 167}: "Cisco Systems, Inc",
- [3]byte{28, 223, 15}: "Cisco Systems, Inc",
- [3]byte{28, 223, 82}: "Texas Instruments",
- [3]byte{28, 225, 101}: "Marshal Corporation",
- [3]byte{28, 225, 146}: "Qisda Corporation",
- [3]byte{28, 226, 204}: "Texas Instruments",
- [3]byte{28, 230, 43}: "Apple, Inc.",
- [3]byte{28, 230, 199}: "Cisco Systems, Inc",
- [3]byte{28, 232, 93}: "Cisco Systems, Inc",
- [3]byte{28, 234, 27}: "Nokia",
- [3]byte{28, 238, 201}: "Elo touch solutions",
- [3]byte{28, 238, 232}: "Ilshin Elecom",
- [3]byte{28, 239, 206}: "bebro electronic GmbH",
- [3]byte{28, 240, 62}: "Wearhaus Inc.",
- [3]byte{28, 240, 97}: "SCAPS GmbH",
- [3]byte{28, 244, 202}: "Private",
- [3]byte{28, 245, 231}: "Turtle Industry Co., Ltd.",
- [3]byte{28, 250, 104}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{28, 252, 187}: "Realfiction ApS",
- [3]byte{28, 254, 167}: "IDentytech Solutins Ltd.",
- [3]byte{32, 1, 79}: "Linea Research Ltd",
- [3]byte{32, 2, 175}: "Murata Manufacturing Co., Ltd.",
- [3]byte{32, 4, 15}: "Dell Inc.",
- [3]byte{32, 5, 5}: "RADMAX COMMUNICATION PRIVATE LIMITED",
- [3]byte{32, 5, 232}: "OOO InProMedia",
- [3]byte{32, 8, 237}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{32, 10, 94}: "Xiangshan Giant Eagle Technology Developing Co., Ltd.",
- [3]byte{32, 11, 199}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{32, 12, 200}: "NETGEAR",
- [3]byte{32, 14, 149}: "IEC – TC9 WG43",
- [3]byte{32, 16, 122}: "Gemtek Technology Co., Ltd.",
- [3]byte{32, 18, 87}: "Most Lucky Trading Ltd",
- [3]byte{32, 18, 213}: "Scientech Materials Corporation",
- [3]byte{32, 19, 224}: "Samsung Electronics Co.,Ltd",
- [3]byte{32, 22, 216}: "Liteon Technology Corporation",
- [3]byte{32, 24, 14}: "Shenzhen Sunchip Technology Co., Ltd",
- [3]byte{32, 26, 6}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{32, 29, 3}: "Elatec GmbH",
- [3]byte{32, 33, 165}: "LG Electronics (Mobile Communications)",
- [3]byte{32, 37, 100}: "PEGATRON CORPORATION",
- [3]byte{32, 37, 152}: "Teleview",
- [3]byte{32, 40, 188}: "Visionscape Co,. Ltd.",
- [3]byte{32, 43, 193}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{32, 44, 183}: "Kong Yue Electronics & Information Industry (Xinhui) Ltd.",
- [3]byte{32, 45, 7}: "Samsung Electronics Co.,Ltd",
- [3]byte{32, 45, 248}: "Digital Media Cartridge Ltd.",
- [3]byte{32, 49, 235}: "HDSN",
- [3]byte{32, 55, 6}: "Cisco Systems, Inc",
- [3]byte{32, 55, 188}: "Kuipers Electronic Engineering BV",
- [3]byte{32, 58, 7}: "Cisco Systems, Inc",
- [3]byte{32, 58, 239}: "Sivantos GmbH",
- [3]byte{32, 60, 174}: "Apple, Inc.",
- [3]byte{32, 61, 102}: "ARRIS Group, Inc.",
- [3]byte{32, 61, 178}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{32, 64, 5}: "feno GmbH",
- [3]byte{32, 65, 90}: "Smarteh d.o.o.",
- [3]byte{32, 68, 58}: "Schneider Electric Asia Pacific Ltd",
- [3]byte{32, 70, 161}: "VECOW Co., Ltd",
- [3]byte{32, 70, 249}: "Advanced Network Devices (dba:AND)",
- [3]byte{32, 71, 71}: "Dell Inc.",
- [3]byte{32, 71, 237}: "BSkyB Ltd",
- [3]byte{32, 74, 170}: "Hanscan Spain S.A.",
- [3]byte{32, 76, 3}: "Aruba Networks",
- [3]byte{32, 76, 109}: "Hugo Brennenstuhl Gmbh & Co. KG.",
- [3]byte{32, 76, 158}: "Cisco Systems, Inc",
- [3]byte{32, 78, 107}: "Axxana(israel) ltd",
- [3]byte{32, 78, 113}: "Juniper Networks",
- [3]byte{32, 78, 127}: "NETGEAR",
- [3]byte{32, 83, 202}: "Risk Technology Ltd",
- [3]byte{32, 84, 118}: "Sony Mobile Communications AB",
- [3]byte{32, 84, 250}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{32, 85, 49}: "Samsung Electronics Co.,Ltd",
- [3]byte{32, 85, 50}: "Gotech International Technology Limited",
- [3]byte{32, 87, 33}: "Salix Technology CO., Ltd.",
- [3]byte{32, 87, 175}: "Shenzhen FH-NET OPTOELECTRONICS CO.,LTD",
- [3]byte{32, 89, 160}: "Paragon Technologies Inc.",
- [3]byte{32, 90, 0}: "Coval",
- [3]byte{32, 91, 42}: "Private",
- [3]byte{32, 91, 94}: "Shenzhen Wonhe Technology Co., Ltd",
- [3]byte{32, 92, 250}: "Yangzhou ChangLian Network Technology Co,ltd.",
- [3]byte{32, 93, 71}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{32, 94, 247}: "Samsung Electronics Co.,Ltd",
- [3]byte{32, 98, 116}: "Microsoft Corporation",
- [3]byte{32, 99, 95}: "Abeeway",
- [3]byte{32, 100, 50}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{32, 103, 177}: "Pluto inc.",
- [3]byte{32, 104, 157}: "Liteon Technology Corporation",
- [3]byte{32, 106, 138}: "Wistron Infocomm (Zhongshan) Corporation",
- [3]byte{32, 106, 255}: "Atlas Elektronik UK Limited",
- [3]byte{32, 107, 231}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{32, 108, 138}: "Aerohive Networks Inc.",
- [3]byte{32, 110, 156}: "Samsung Electronics Co.,Ltd",
- [3]byte{32, 111, 236}: "Braemac CA LLC",
- [3]byte{32, 113, 158}: "SF Technology Co.,Ltd",
- [3]byte{32, 115, 85}: "ARRIS Group, Inc.",
- [3]byte{32, 116, 207}: "Shenzhen Voxtech Co.,Ltd",
- [3]byte{32, 118, 0}: "Actiontec Electronics, Inc",
- [3]byte{32, 118, 143}: "Apple, Inc.",
- [3]byte{32, 118, 147}: "Lenovo (Beijing) Limited.",
- [3]byte{32, 120, 11}: "Delta Faucet Company",
- [3]byte{32, 120, 82}: "Nokia",
- [3]byte{32, 120, 240}: "Apple, Inc.",
- [3]byte{32, 124, 143}: "Quanta Microsystems,Inc.",
- [3]byte{32, 125, 116}: "Apple, Inc.",
- [3]byte{32, 130, 192}: "Xiaomi Communications Co Ltd",
- [3]byte{32, 133, 140}: "Assa",
- [3]byte{32, 135, 86}: "SIEMENS AG",
- [3]byte{32, 135, 172}: "AES motomation",
- [3]byte{32, 137, 111}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{32, 137, 132}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{32, 137, 134}: "zte corporation",
- [3]byte{32, 139, 55}: "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
- [3]byte{32, 144, 111}: "Shenzhen Tencent Computer System Co., Ltd.",
- [3]byte{32, 145, 72}: "Texas Instruments",
- [3]byte{32, 145, 138}: "PROFALUX",
- [3]byte{32, 145, 217}: "I'M SPA",
- [3]byte{32, 147, 77}: "FUJIAN STAR-NET COMMUNICATION CO.,LTD",
- [3]byte{32, 154, 233}: "Volacomm Co., Ltd",
- [3]byte{32, 155, 165}: "JIAXING GLEAD Electronics Co.,Ltd",
- [3]byte{32, 155, 205}: "Apple, Inc.",
- [3]byte{32, 162, 228}: "Apple, Inc.",
- [3]byte{32, 162, 231}: "Lee-Dickens Ltd",
- [3]byte{32, 166, 128}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{32, 166, 205}: "Hewlett Packard Enterprise",
- [3]byte{32, 167, 131}: "miControl GmbH",
- [3]byte{32, 167, 135}: "Bointec Taiwan Corporation Limited",
- [3]byte{32, 168, 185}: "Siemens",
- [3]byte{32, 169, 14}: "TCT mobile ltd",
- [3]byte{32, 169, 155}: "Microsoft Corporation",
- [3]byte{32, 170, 37}: "IP-NET LLC",
- [3]byte{32, 170, 75}: "Cisco-Linksys, LLC",
- [3]byte{32, 171, 55}: "Apple, Inc.",
- [3]byte{32, 176, 247}: "Enclustra GmbH",
- [3]byte{32, 179, 153}: "Enterasys",
- [3]byte{32, 181, 198}: "Mimosa Networks",
- [3]byte{32, 183, 192}: "OMICRON electronics GmbH",
- [3]byte{32, 187, 118}: "COL GIOVANNI PAOLO SpA",
- [3]byte{32, 187, 192}: "Cisco Systems, Inc",
- [3]byte{32, 187, 198}: "Jabil Circuit Hungary Ltd.",
- [3]byte{32, 191, 219}: "DVL",
- [3]byte{32, 192, 71}: "Verizon",
- [3]byte{32, 192, 109}: "SHENZHEN SPACETEK TECHNOLOGY CO.,LTD",
- [3]byte{32, 193, 175}: "i Wit Digital Co., Limited",
- [3]byte{32, 195, 143}: "Texas Instruments",
- [3]byte{32, 195, 164}: "RetailNext",
- [3]byte{32, 198, 13}: "Shanghai annijie Information technology Co.,LTD",
- [3]byte{32, 198, 235}: "Panasonic Corporation AVC Networks Company",
- [3]byte{32, 200, 179}: "SHENZHEN BUL-TECH CO.,LTD.",
- [3]byte{32, 201, 208}: "Apple, Inc.",
- [3]byte{32, 205, 57}: "Texas Instruments",
- [3]byte{32, 206, 196}: "Peraso Technologies",
- [3]byte{32, 207, 48}: "ASUSTek COMPUTER INC.",
- [3]byte{32, 209, 96}: "Private",
- [3]byte{32, 210, 31}: "Wincal Technology Corp.",
- [3]byte{32, 210, 95}: "SmartCap Technologies",
- [3]byte{32, 211, 144}: "Samsung Electronics Co.,Ltd",
- [3]byte{32, 213, 171}: "Korea Infocom Co.,Ltd.",
- [3]byte{32, 213, 191}: "Samsung Electronics Co.,Ltd",
- [3]byte{32, 214, 7}: "Nokia Corporation",
- [3]byte{32, 215, 90}: "Posh Mobile Limited",
- [3]byte{32, 217, 6}: "Iota, Inc.",
- [3]byte{32, 219, 171}: "Samsung Electronics Co., Ltd.",
- [3]byte{32, 220, 147}: "Cheetah Hi-Tech, Inc.",
- [3]byte{32, 220, 230}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{32, 223, 63}: "Nanjing SAC Power Grid Automation Co., Ltd.",
- [3]byte{32, 223, 185}: "Google, Inc.",
- [3]byte{32, 224, 156}: "Nokia",
- [3]byte{32, 228, 7}: "Spark srl",
- [3]byte{32, 229, 42}: "NETGEAR",
- [3]byte{32, 229, 100}: "ARRIS Group, Inc.",
- [3]byte{32, 231, 145}: "Siemens Healthcare Diagnostics, Inc",
- [3]byte{32, 234, 199}: "SHENZHEN RIOPINE ELECTRONICS CO., LTD",
- [3]byte{32, 237, 116}: "Ability enterprise co.,Ltd.",
- [3]byte{32, 238, 40}: "Apple, Inc.",
- [3]byte{32, 238, 198}: "Elefirst Science & Tech Co ., ltd",
- [3]byte{32, 240, 2}: "MTData Developments Pty. Ltd.",
- [3]byte{32, 241, 124}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{32, 241, 158}: "ARRIS Group, Inc.",
- [3]byte{32, 243, 163}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{32, 244, 27}: "Shenzhen Bilian electronic CO.,LTD",
- [3]byte{32, 244, 82}: "Shanghai IUV Software Development Co. Ltd",
- [3]byte{32, 245, 16}: "Codex Digital Limited",
- [3]byte{32, 245, 67}: "Hui Zhou Gaoshengda Technology Co.,LTD",
- [3]byte{32, 248, 94}: "Delta Electronics",
- [3]byte{32, 250, 187}: "Cambridge Executive Limited",
- [3]byte{32, 253, 241}: "3COM EUROPE LTD",
- [3]byte{32, 254, 205}: "System In Frontier Inc.",
- [3]byte{32, 254, 219}: "M2M Solution S.A.S.",
- [3]byte{36, 0, 186}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 1, 199}: "Cisco Systems, Inc",
- [3]byte{36, 5, 15}: "MTN Electronic Co. Ltd",
- [3]byte{36, 5, 245}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{36, 9, 23}: "Devlin Electronics Limited",
- [3]byte{36, 9, 149}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 10, 17}: "TCT mobile ltd",
- [3]byte{36, 10, 100}: "AzureWave Technology Inc.",
- [3]byte{36, 10, 196}: "Espressif Inc.",
- [3]byte{36, 11, 10}: "Palo Alto Networks",
- [3]byte{36, 11, 42}: "Viettel Group",
- [3]byte{36, 11, 177}: "KOSTAL Industrie Elektrik GmbH",
- [3]byte{36, 13, 101}: "Shenzhen Vsun Communication Technology Co., Ltd.",
- [3]byte{36, 13, 108}: "SMND",
- [3]byte{36, 13, 194}: "TCT mobile ltd",
- [3]byte{36, 16, 100}: "Shenzhen Ecsino Tecnical Co. Ltd",
- [3]byte{36, 17, 37}: "Hutek Co., Ltd.",
- [3]byte{36, 17, 72}: "Entropix, LLC",
- [3]byte{36, 17, 208}: "Chongqing Ehs Science and Technology Development Co.,Ltd.",
- [3]byte{36, 26, 140}: "Squarehead Technology AS",
- [3]byte{36, 27, 19}: "Shanghai Nutshell Electronic Co., Ltd.",
- [3]byte{36, 27, 68}: "Hangzhou Tuners Electronics Co., Ltd",
- [3]byte{36, 28, 4}: "SHENZHEN JEHE TECHNOLOGY DEVELOPMENT CO., LTD.",
- [3]byte{36, 30, 235}: "Apple, Inc.",
- [3]byte{36, 31, 44}: "Calsys, Inc.",
- [3]byte{36, 31, 160}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 32, 199}: "Sagemcom Broadband SAS",
- [3]byte{36, 33, 171}: "Sony Mobile Communications AB",
- [3]byte{36, 36, 14}: "Apple, Inc.",
- [3]byte{36, 38, 66}: "SHARP Corporation.",
- [3]byte{36, 47, 250}: "Toshiba Global Commerce Solutions",
- [3]byte{36, 49, 132}: "SHARP Corporation",
- [3]byte{36, 51, 108}: "Private",
- [3]byte{36, 53, 204}: "Zhongshan Scinan Internet of Things Co.,Ltd.",
- [3]byte{36, 55, 76}: "Cisco SPVTG",
- [3]byte{36, 55, 239}: "EMC Electronic Media Communication SA",
- [3]byte{36, 60, 32}: "Dynamode Group",
- [3]byte{36, 66, 188}: "Alinco,incorporated",
- [3]byte{36, 68, 39}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 69, 151}: "GEMUE Gebr. Mueller Apparatebau",
- [3]byte{36, 71, 14}: "PentronicAB",
- [3]byte{36, 73, 123}: "Innovative Converged Devices Inc",
- [3]byte{36, 75, 3}: "Samsung Electronics Co.,Ltd",
- [3]byte{36, 75, 129}: "Samsung Electronics Co.,Ltd",
- [3]byte{36, 76, 7}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 78, 123}: "IEEE Registration Authority",
- [3]byte{36, 79, 29}: "iRule LLC",
- [3]byte{36, 88, 128}: "VIZEO",
- [3]byte{36, 89, 11}: "White Sky Inc. Limited",
- [3]byte{36, 91, 167}: "Apple, Inc.",
- [3]byte{36, 91, 240}: "Liteon, Inc.",
- [3]byte{36, 92, 191}: "NCSE",
- [3]byte{36, 92, 203}: "AXIe Consortium, Inc.",
- [3]byte{36, 94, 190}: "QNAP Systems, Inc.",
- [3]byte{36, 95, 223}: "KYOCERA CORPORATION",
- [3]byte{36, 96, 129}: "razberi technologies",
- [3]byte{36, 97, 90}: "China Mobile Group Device Co.,Ltd.",
- [3]byte{36, 98, 120}: "sysmocom - systems for mobile communications GmbH",
- [3]byte{36, 100, 239}: "CYG SUNRI CO.,LTD.",
- [3]byte{36, 101, 17}: "AVM GmbH",
- [3]byte{36, 104, 128}: "Braveridge.co.,ltd.",
- [3]byte{36, 105, 62}: "innodisk Corporation",
- [3]byte{36, 105, 74}: "Jasmine Systems Inc.",
- [3]byte{36, 105, 104}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{36, 105, 165}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 106, 171}: "IT-IS International",
- [3]byte{36, 108, 138}: "YUKAI Engineering",
- [3]byte{36, 110, 150}: "Dell Inc.",
- [3]byte{36, 113, 137}: "Texas Instruments",
- [3]byte{36, 114, 96}: "IOTTECH Corp",
- [3]byte{36, 118, 86}: "Shanghai Net Miles Fiber Optics Technology Co., LTD.",
- [3]byte{36, 118, 125}: "Cisco SPVTG",
- [3]byte{36, 119, 3}: "Intel Corporate",
- [3]byte{36, 121, 42}: "Ruckus Wireless",
- [3]byte{36, 124, 76}: "Herman Miller",
- [3]byte{36, 127, 32}: "Sagemcom Broadband SAS",
- [3]byte{36, 127, 60}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 128, 0}: "Westcontrol AS",
- [3]byte{36, 129, 170}: "KSH International Co., Ltd.",
- [3]byte{36, 130, 138}: "Prowave Technologies Ltd.",
- [3]byte{36, 134, 244}: "Ctek, Inc.",
- [3]byte{36, 135, 7}: "SEnergy Corporation",
- [3]byte{36, 136, 148}: "shenzhen lensun Communication Technology LTD",
- [3]byte{36, 138, 7}: "Mellanox Technologies, Inc.",
- [3]byte{36, 139, 224}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{36, 146, 14}: "Samsung Electronics Co.,Ltd",
- [3]byte{36, 147, 202}: "Voxtronic Technology Computer-Systeme GmbH",
- [3]byte{36, 148, 66}: "OPEN ROAD SOLUTIONS , INC.",
- [3]byte{36, 149, 4}: "SFR",
- [3]byte{36, 151, 237}: "Techvision Intelligent Technology Limited",
- [3]byte{36, 158, 171}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 160, 116}: "Apple, Inc.",
- [3]byte{36, 162, 225}: "Apple, Inc.",
- [3]byte{36, 164, 44}: "KOUKAAM a.s.",
- [3]byte{36, 164, 60}: "Ubiquiti Networks Inc.",
- [3]byte{36, 164, 149}: "Thales Canada Inc.",
- [3]byte{36, 165, 52}: "SynTrust Tech International Ltd.",
- [3]byte{36, 167, 220}: "BSkyB Ltd",
- [3]byte{36, 168, 125}: "Panasonic Automotive Systems Asia Pacific(Thailand)Co.,Ltd.",
- [3]byte{36, 169, 55}: "PURE Storage",
- [3]byte{36, 171, 129}: "Apple, Inc.",
- [3]byte{36, 175, 74}: "Alcatel-Lucent IPD",
- [3]byte{36, 175, 84}: "NEXGEN Mediatech Inc.",
- [3]byte{36, 176, 169}: "Shanghai Mobiletek Communication Ltd.",
- [3]byte{36, 178, 9}: "Avaya Inc",
- [3]byte{36, 178, 222}: "Espressif Inc.",
- [3]byte{36, 182, 87}: "Cisco Systems, Inc",
- [3]byte{36, 182, 184}: "FRIEM SPA",
- [3]byte{36, 182, 253}: "Dell Inc.",
- [3]byte{36, 184, 140}: "Crenus Co.,Ltd.",
- [3]byte{36, 184, 210}: "Opzoon Technology Co.,Ltd.",
- [3]byte{36, 186, 19}: "RISO KAGAKU CORPORATION",
- [3]byte{36, 186, 48}: "Technical Consumer Products, Inc.",
- [3]byte{36, 187, 193}: "Absolute Analysis",
- [3]byte{36, 188, 130}: "Dali Wireless, Inc.",
- [3]byte{36, 188, 248}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 190, 5}: "Hewlett Packard",
- [3]byte{36, 191, 116}: "Private",
- [3]byte{36, 192, 179}: "RSF",
- [3]byte{36, 193, 189}: "CRRC DALIAN R&D CO.,LTD.",
- [3]byte{36, 195, 249}: "Securitas Direct AB",
- [3]byte{36, 196, 47}: "Philips Lifeline",
- [3]byte{36, 196, 74}: "zte corporation",
- [3]byte{36, 198, 150}: "Samsung Electronics Co.,Ltd",
- [3]byte{36, 200, 72}: "mywerk system GmbH",
- [3]byte{36, 200, 110}: "Chaney Instrument Co.",
- [3]byte{36, 201, 161}: "Ruckus Wireless",
- [3]byte{36, 201, 222}: "Genoray",
- [3]byte{36, 203, 231}: "MYK, Inc.",
- [3]byte{36, 207, 33}: "Shenzhen State Micro Technology Co., Ltd",
- [3]byte{36, 209, 63}: "MEXUS CO.,LTD",
- [3]byte{36, 210, 204}: "SmartDrive Systems Inc.",
- [3]byte{36, 213, 28}: "Zhongtian broadband technology co., LTD",
- [3]byte{36, 217, 33}: "Avaya Inc",
- [3]byte{36, 218, 17}: "NO NDA Inc",
- [3]byte{36, 218, 155}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{36, 218, 182}: "Sistemas de Gestión Energética S.A. de C.V",
- [3]byte{36, 219, 172}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 219, 173}: "ShopperTrak RCT Corporation",
- [3]byte{36, 219, 237}: "Samsung Electronics Co.,Ltd",
- [3]byte{36, 222, 198}: "Aruba Networks",
- [3]byte{36, 223, 106}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{36, 225, 36}: "Xiamen Ursaconn Technology Co. , Ltd.",
- [3]byte{36, 226, 113}: "Qingdao Hisense Communications Co.,Ltd.",
- [3]byte{36, 227, 20}: "Apple, Inc.",
- [3]byte{36, 228, 63}: "Wenzhou Kunmei Communication Technology Co.,Ltd.",
- [3]byte{36, 229, 170}: "Philips Oral Healthcare, Inc.",
- [3]byte{36, 230, 186}: "JSC Zavod im. Kozitsky",
- [3]byte{36, 233, 179}: "Cisco Systems, Inc",
- [3]byte{36, 234, 64}: "Helmholz GmbH & Co. KG",
- [3]byte{36, 235, 101}: "SAET I.S. S.r.l.",
- [3]byte{36, 236, 153}: "ASKEY COMPUTER CORP",
- [3]byte{36, 236, 214}: "CSG Science & Technology Co.,Ltd.Hefei",
- [3]byte{36, 238, 58}: "Chengdu Yingji Electronic Hi-tech Co Ltd",
- [3]byte{36, 240, 148}: "Apple, Inc.",
- [3]byte{36, 240, 255}: "GHT Co., Ltd.",
- [3]byte{36, 242, 127}: "Hewlett Packard Enterprise",
- [3]byte{36, 242, 221}: "Radiant Zemax LLC",
- [3]byte{36, 245, 126}: "HWH CO., LTD.",
- [3]byte{36, 245, 162}: "Belkin International Inc.",
- [3]byte{36, 245, 170}: "Samsung Electronics Co.,Ltd",
- [3]byte{36, 246, 119}: "Apple, Inc.",
- [3]byte{36, 253, 82}: "Liteon Technology Corporation",
- [3]byte{36, 253, 91}: "SmartThings, Inc.",
- [3]byte{40, 4, 224}: "FERMAX ELECTRONICA S.A.U.",
- [3]byte{40, 6, 30}: "NINGBO GLOBAL USEFUL ELECTRIC CO.,LTD",
- [3]byte{40, 6, 141}: "ITL, LLC",
- [3]byte{40, 7, 13}: "GUANGZHOU WINSOUND INFORMATION TECHNOLOGY CO.,LTD.",
- [3]byte{40, 11, 92}: "Apple, Inc.",
- [3]byte{40, 12, 40}: "Unigen DataStorage Corporation",
- [3]byte{40, 12, 184}: "Mikrosay Yazilim ve Elektronik A.S.",
- [3]byte{40, 13, 252}: "Sony Interactive Entertainment Inc.",
- [3]byte{40, 14, 139}: "Beijing Spirit Technology Development Co., Ltd.",
- [3]byte{40, 16, 27}: "MagnaCom",
- [3]byte{40, 16, 123}: "D-Link International",
- [3]byte{40, 20, 113}: "Lantis co., LTD.",
- [3]byte{40, 22, 46}: "2Wire Inc",
- [3]byte{40, 22, 173}: "Intel Corporate",
- [3]byte{40, 23, 206}: "Omnisense Ltd",
- [3]byte{40, 24, 120}: "Microsoft Corporation",
- [3]byte{40, 24, 253}: "Aditya Infotech Ltd.",
- [3]byte{40, 34, 70}: "Beijing Sinoix Communication Co., LTD",
- [3]byte{40, 35, 115}: "Digita",
- [3]byte{40, 36, 255}: "Wistron Neweb Corporation",
- [3]byte{40, 37, 54}: "SHENZHEN HOLATEK CO.,LTD",
- [3]byte{40, 38, 166}: "PBR electronics GmbH",
- [3]byte{40, 39, 191}: "Samsung Electronics Co.,Ltd",
- [3]byte{40, 40, 93}: "Zyxel Communications Corporation",
- [3]byte{40, 41, 134}: "APC by Schneider Electric",
- [3]byte{40, 41, 204}: "Corsa Technology Incorporated",
- [3]byte{40, 41, 217}: "GlobalBeiMing technology (Beijing)Co. Ltd",
- [3]byte{40, 44, 178}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{40, 47, 194}: "Automotive Data Solutions",
- [3]byte{40, 48, 172}: "Frontiir Co. Ltd.",
- [3]byte{40, 49, 82}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{40, 50, 197}: "HUMAX Co., Ltd.",
- [3]byte{40, 52, 16}: "Enigma Diagnostics Limited",
- [3]byte{40, 52, 162}: "Cisco Systems, Inc",
- [3]byte{40, 53, 69}: "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
- [3]byte{40, 54, 56}: "IEEE Registration Authority",
- [3]byte{40, 55, 19}: "Shenzhen 3Nod Digital Technology Co., Ltd.",
- [3]byte{40, 55, 55}: "Apple, Inc.",
- [3]byte{40, 56, 207}: "Gen2wave",
- [3]byte{40, 57, 94}: "Samsung Electronics Co.,Ltd",
- [3]byte{40, 57, 231}: "Preceno Technology Pte.Ltd.",
- [3]byte{40, 59, 150}: "Cool Control LTD",
- [3]byte{40, 60, 228}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{40, 63, 105}: "Sony Mobile Communications AB",
- [3]byte{40, 64, 26}: "C8 MediSensors, Inc.",
- [3]byte{40, 65, 33}: "OptiSense Network, LLC",
- [3]byte{40, 68, 48}: "GenesisTechnical Systems (UK) Ltd",
- [3]byte{40, 71, 170}: "Nokia Corporation",
- [3]byte{40, 72, 70}: "GridCentric Inc.",
- [3]byte{40, 76, 83}: "Intune Networks",
- [3]byte{40, 77, 146}: "Luminator",
- [3]byte{40, 78, 215}: "OutSmart Power Systems, Inc.",
- [3]byte{40, 79, 206}: "Liaoning Wontel Science and Technology Development Co.,Ltd.",
- [3]byte{40, 81, 50}: "Shenzhen Prayfly Technology Co.,Ltd",
- [3]byte{40, 82, 97}: "Cisco Systems, Inc",
- [3]byte{40, 82, 224}: "Layon international Electronic & Telecom Co.,Ltd",
- [3]byte{40, 86, 90}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{40, 86, 193}: "Harman International",
- [3]byte{40, 87, 103}: "Echostar Technologies Corp",
- [3]byte{40, 87, 190}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
- [3]byte{40, 90, 235}: "Apple, Inc.",
- [3]byte{40, 95, 47}: "RNware Co.,Ltd.",
- [3]byte{40, 95, 219}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{40, 96, 70}: "Lantech Communications Global, Inc.",
- [3]byte{40, 96, 148}: "CAPELEC",
- [3]byte{40, 99, 54}: "Siemens AG - Industrial Automation - EWA",
- [3]byte{40, 101, 107}: "Keystone Microtech Corporation",
- [3]byte{40, 106, 184}: "Apple, Inc.",
- [3]byte{40, 106, 186}: "Apple, Inc.",
- [3]byte{40, 108, 7}: "XIAOMI Electronics,CO.,LTD",
- [3]byte{40, 109, 151}: "SAMJIN Co., Ltd.",
- [3]byte{40, 110, 212}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{40, 111, 127}: "Cisco Systems, Inc",
- [3]byte{40, 113, 132}: "Spire Payments",
- [3]byte{40, 114, 197}: "Smartmatic Corp",
- [3]byte{40, 114, 240}: "ATHENA",
- [3]byte{40, 118, 16}: "IgniteNet",
- [3]byte{40, 118, 205}: "Funshion Online Technologies Co.,Ltd",
- [3]byte{40, 121, 148}: "Realplay Digital Technology(Shenzhen) Co.,Ltd",
- [3]byte{40, 122, 238}: "ARRIS Group, Inc.",
- [3]byte{40, 123, 9}: "zte corporation",
- [3]byte{40, 124, 219}: "Hefei Toycloud Technology Co.,ltd",
- [3]byte{40, 128, 35}: "Hewlett Packard",
- [3]byte{40, 128, 162}: "Novatel Wireless Solutions, Inc.",
- [3]byte{40, 131, 53}: "Samsung Electronics Co.,Ltd",
- [3]byte{40, 132, 14}: "silicon valley immigration service",
- [3]byte{40, 132, 250}: "SHARP Corporation",
- [3]byte{40, 133, 45}: "Touch Networks",
- [3]byte{40, 137, 21}: "CashGuard Sverige AB",
- [3]byte{40, 138, 28}: "Juniper Networks",
- [3]byte{40, 140, 184}: "zte corporation",
- [3]byte{40, 145, 208}: "Stage Tec Entwicklungsgesellschaft für professionelle Audiotechnik mbH",
- [3]byte{40, 146, 74}: "Hewlett Packard",
- [3]byte{40, 147, 254}: "Cisco Systems, Inc",
- [3]byte{40, 148, 15}: "Cisco Systems, Inc",
- [3]byte{40, 148, 175}: "Samhwa Telecom",
- [3]byte{40, 152, 123}: "Samsung Electronics Co.,Ltd",
- [3]byte{40, 153, 58}: "Arista Networks",
- [3]byte{40, 154, 75}: "SteelSeries ApS",
- [3]byte{40, 154, 250}: "TCT mobile ltd",
- [3]byte{40, 158, 223}: "Danfoss Turbocor Compressors, Inc",
- [3]byte{40, 160, 43}: "Apple, Inc.",
- [3]byte{40, 161, 131}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{40, 161, 134}: "enblink",
- [3]byte{40, 161, 146}: "GERP Solution",
- [3]byte{40, 161, 235}: "ETEK TECHNOLOGY (SHENZHEN) CO.,LTD",
- [3]byte{40, 162, 65}: "exlar corp",
- [3]byte{40, 162, 75}: "Juniper Networks",
- [3]byte{40, 165, 116}: "Miller Electric Mfg. Co.",
- [3]byte{40, 165, 238}: "Shenzhen SDGI CATV Co., Ltd",
- [3]byte{40, 166, 172}: "seca gmbh & co. kg",
- [3]byte{40, 166, 219}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{40, 172, 103}: "Mach Power, Rappresentanze Internazionali s.r.l.",
- [3]byte{40, 173, 62}: "Shenzhen TONG BO WEI Technology CO.,LTD",
- [3]byte{40, 175, 10}: "Sirius XM Radio Inc",
- [3]byte{40, 176, 204}: "Xenya d.o.o.",
- [3]byte{40, 178, 189}: "Intel Corporate",
- [3]byte{40, 179, 171}: "Genmark Automation",
- [3]byte{40, 180, 72}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{40, 185, 217}: "Radisys Corporation",
- [3]byte{40, 186, 24}: "NextNav, LLC",
- [3]byte{40, 186, 181}: "Samsung Electronics Co.,Ltd",
- [3]byte{40, 187, 89}: "RNET Technologies, Inc.",
- [3]byte{40, 188, 24}: "SourcingOverseas Co. Ltd",
- [3]byte{40, 188, 86}: "EMAC, Inc.",
- [3]byte{40, 190, 3}: "TCT mobile ltd",
- [3]byte{40, 190, 155}: "Technicolor CH USA Inc.",
- [3]byte{40, 191, 137}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{40, 192, 218}: "Juniper Networks",
- [3]byte{40, 193, 60}: "Hon Hai Precision Ind. Co., Ltd.",
- [3]byte{40, 194, 221}: "AzureWave Technology Inc.",
- [3]byte{40, 198, 63}: "Intel Corporate",
- [3]byte{40, 198, 113}: "Yota Devices OY",
- [3]byte{40, 198, 142}: "NETGEAR",
- [3]byte{40, 199, 24}: "Altierre",
- [3]byte{40, 199, 206}: "Cisco Systems, Inc",
- [3]byte{40, 200, 37}: "DellKing Industrial Co., Ltd",
- [3]byte{40, 200, 122}: "ARRIS Group, Inc.",
- [3]byte{40, 201, 20}: "Taimag Corporation",
- [3]byte{40, 202, 9}: "ThyssenKrupp Elevators (Shanghai) Co.,Ltd",
- [3]byte{40, 203, 235}: "One",
- [3]byte{40, 204, 1}: "Samsung Electronics Co.,Ltd",
- [3]byte{40, 204, 255}: "Corporacion Empresarial Altra SL",
- [3]byte{40, 205, 28}: "Espotel Oy",
- [3]byte{40, 205, 76}: "Individual Computers GmbH",
- [3]byte{40, 205, 156}: "Shenzhen Dynamax Software Development Co.,Ltd.",
- [3]byte{40, 207, 8}: "ESSYS",
- [3]byte{40, 207, 218}: "Apple, Inc.",
- [3]byte{40, 207, 233}: "Apple, Inc.",
- [3]byte{40, 209, 175}: "Nokia Corporation",
- [3]byte{40, 210, 68}: "LCFC(HeFei) Electronics Technology Co., Ltd.",
- [3]byte{40, 212, 54}: "Jiangsu dewosi electric co., LTD",
- [3]byte{40, 213, 118}: "Premier Wireless, Inc.",
- [3]byte{40, 217, 62}: "Telecor Inc.",
- [3]byte{40, 217, 138}: "Hangzhou Konke Technology Co.,Ltd.",
- [3]byte{40, 217, 151}: "Yuduan Mobile Co., Ltd.",
- [3]byte{40, 219, 129}: "Shanghai Guao Electronic Technology Co., Ltd",
- [3]byte{40, 222, 246}: "bioMerieux Inc.",
- [3]byte{40, 224, 44}: "Apple, Inc.",
- [3]byte{40, 225, 76}: "Apple, Inc.",
- [3]byte{40, 226, 151}: "Shanghai InfoTM Microelectronics Co.,Ltd.",
- [3]byte{40, 227, 31}: "Xiaomi Communications Co Ltd",
- [3]byte{40, 227, 71}: "Liteon Technology Corporation",
- [3]byte{40, 228, 118}: "Pi-Coral",
- [3]byte{40, 230, 8}: "Tokheim",
- [3]byte{40, 230, 233}: "SIS Sat Internet Services GmbH",
- [3]byte{40, 231, 148}: "Microtime Computer Inc.",
- [3]byte{40, 231, 207}: "Apple, Inc.",
- [3]byte{40, 237, 88}: "JAG Jakob AG",
- [3]byte{40, 237, 106}: "Apple, Inc.",
- [3]byte{40, 238, 44}: "Frontline Test Equipment",
- [3]byte{40, 238, 82}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{40, 238, 211}: "Shenzhen Super D Technology Co., Ltd",
- [3]byte{40, 239, 1}: "Private",
- [3]byte{40, 240, 118}: "Apple, Inc.",
- [3]byte{40, 241, 14}: "Dell Inc.",
- [3]byte{40, 243, 88}: "2C - Trifonov & Co",
- [3]byte{40, 243, 102}: "Shenzhen Bilian electronic CO.,LTD",
- [3]byte{40, 245, 50}: "ADD-Engineering BV",
- [3]byte{40, 245, 55}: "IEEE Registration Authority",
- [3]byte{40, 246, 6}: "Syes srl",
- [3]byte{40, 250, 160}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{40, 251, 211}: "Ragentek Technology Group",
- [3]byte{40, 252, 81}: "The Electric Controller and Manufacturing Co., LLC",
- [3]byte{40, 252, 246}: "Shenzhen Xin KingBrand enterprises Co.,Ltd",
- [3]byte{40, 253, 128}: "IEEE Registration Authority",
- [3]byte{40, 254, 205}: "Lemobile Information Technology (Beijing) Co., Ltd.",
- [3]byte{40, 255, 62}: "zte corporation",
- [3]byte{44, 0, 44}: "UNOWHY",
- [3]byte{44, 0, 51}: "EControls, LLC",
- [3]byte{44, 0, 247}: "XOS",
- [3]byte{44, 1, 11}: "NASCENT Technology, LLC - RemKon",
- [3]byte{44, 2, 159}: "3ALogics",
- [3]byte{44, 6, 35}: "Win Leader Inc.",
- [3]byte{44, 7, 60}: "DEVLINE LIMITED",
- [3]byte{44, 8, 28}: "OVH",
- [3]byte{44, 8, 140}: "HUMAX Co., Ltd.",
- [3]byte{44, 9, 77}: "Raptor Engineering, LLC",
- [3]byte{44, 9, 203}: "COBS AB",
- [3]byte{44, 11, 233}: "Cisco Systems, Inc",
- [3]byte{44, 14, 61}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{44, 16, 193}: "Nintendo Co., Ltd.",
- [3]byte{44, 24, 174}: "Trend Electronics Co., Ltd.",
- [3]byte{44, 25, 132}: "IDN Telecom, Inc.",
- [3]byte{44, 26, 49}: "Electronics Company Limited",
- [3]byte{44, 27, 200}: "Hunan Topview Network System CO.,LTD",
- [3]byte{44, 29, 184}: "ARRIS Group, Inc.",
- [3]byte{44, 30, 234}: "AERODEV",
- [3]byte{44, 31, 35}: "Apple, Inc.",
- [3]byte{44, 32, 11}: "Apple, Inc.",
- [3]byte{44, 33, 49}: "Juniper Networks",
- [3]byte{44, 33, 114}: "Juniper Networks",
- [3]byte{44, 33, 215}: "IMAX Corporation",
- [3]byte{44, 34, 139}: "CTR SRL",
- [3]byte{44, 35, 58}: "Hewlett Packard",
- [3]byte{44, 36, 95}: "Babolat VS",
- [3]byte{44, 38, 23}: "Oculus VR, LLC",
- [3]byte{44, 38, 95}: "IEEE Registration Authority",
- [3]byte{44, 38, 197}: "zte corporation",
- [3]byte{44, 39, 158}: "IEEE Registration Authority",
- [3]byte{44, 39, 215}: "Hewlett Packard",
- [3]byte{44, 40, 45}: "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
- [3]byte{44, 41, 151}: "Microsoft Corporation",
- [3]byte{44, 45, 72}: "bct electronic GesmbH",
- [3]byte{44, 48, 51}: "NETGEAR",
- [3]byte{44, 48, 104}: "Pantech Co.,Ltd",
- [3]byte{44, 49, 36}: "Cisco Systems, Inc",
- [3]byte{44, 51, 17}: "Cisco Systems, Inc",
- [3]byte{44, 51, 97}: "Apple, Inc.",
- [3]byte{44, 51, 122}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{44, 52, 39}: "ERCO & GENER",
- [3]byte{44, 53, 87}: "ELLIY Power CO..Ltd",
- [3]byte{44, 54, 160}: "Capisco Limited",
- [3]byte{44, 54, 248}: "Cisco Systems, Inc",
- [3]byte{44, 55, 49}: "SHENZHEN YIFANG DIGITAL TECHNOLOGY CO.,LTD.",
- [3]byte{44, 55, 150}: "CYBO CO.,LTD.",
- [3]byte{44, 55, 197}: "Qingdao Haier Intelligent Home Appliance Technology Co.,Ltd",
- [3]byte{44, 57, 150}: "Sagemcom Broadband SAS",
- [3]byte{44, 57, 193}: "Ciena Corporation",
- [3]byte{44, 58, 40}: "Fagor Electrónica",
- [3]byte{44, 58, 232}: "Espressif Inc.",
- [3]byte{44, 59, 253}: "Netstor Technology Co., Ltd.",
- [3]byte{44, 62, 207}: "Cisco Systems, Inc",
- [3]byte{44, 63, 56}: "Cisco Systems, Inc",
- [3]byte{44, 63, 62}: "Alge-Timing GmbH",
- [3]byte{44, 64, 43}: "Smart iBlue Technology Limited",
- [3]byte{44, 64, 83}: "Samsung Electronics Co.,Ltd",
- [3]byte{44, 65, 56}: "Hewlett Packard",
- [3]byte{44, 65, 161}: "Bose Corporation",
- [3]byte{44, 66, 5}: "Lytx",
- [3]byte{44, 67, 26}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{44, 68, 1}: "Samsung Electronics Co.,Ltd",
- [3]byte{44, 68, 27}: "Spectrum Medical Limited",
- [3]byte{44, 68, 253}: "Hewlett Packard",
- [3]byte{44, 77, 84}: "ASUSTek COMPUTER INC.",
- [3]byte{44, 77, 121}: "Weifang GoerTek Technology Co.,Ltd.",
- [3]byte{44, 80, 137}: "Shenzhen Kaixuan Visual Technology Co.,Limited",
- [3]byte{44, 83, 74}: "Shenzhen Winyao Electronic Limited",
- [3]byte{44, 84, 45}: "Cisco Systems, Inc",
- [3]byte{44, 84, 145}: "Microsoft Corporation",
- [3]byte{44, 84, 207}: "LG Electronics (Mobile Communications)",
- [3]byte{44, 85, 60}: "Gainspeed, Inc.",
- [3]byte{44, 85, 211}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{44, 86, 220}: "ASUSTek COMPUTER INC.",
- [3]byte{44, 87, 49}: "Wingtech Group (HongKong)Limited",
- [3]byte{44, 89, 138}: "LG Electronics (Mobile Communications)",
- [3]byte{44, 89, 229}: "Hewlett Packard",
- [3]byte{44, 90, 5}: "Nokia Corporation",
- [3]byte{44, 90, 15}: "Cisco Systems, Inc",
- [3]byte{44, 90, 141}: "SYSTRONIK Elektronik u. Systemtechnik GmbH",
- [3]byte{44, 90, 163}: "PROMATE ELECTRONIC CO.LTD",
- [3]byte{44, 91, 184}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{44, 91, 225}: "Centripetal Networks, Inc",
- [3]byte{44, 93, 147}: "Ruckus Wireless",
- [3]byte{44, 95, 243}: "Pertronic Industries",
- [3]byte{44, 96, 12}: "QUANTA COMPUTER INC.",
- [3]byte{44, 98, 90}: "Finest Security Systems Co., Ltd",
- [3]byte{44, 98, 137}: "Regenersis (Glenrothes) Ltd",
- [3]byte{44, 99, 115}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{44, 103, 152}: "InTalTech Ltd.",
- [3]byte{44, 103, 251}: "ShenZhen Zhengjili Electronics Co., LTD",
- [3]byte{44, 105, 186}: "RF Controls, LLC",
- [3]byte{44, 106, 111}: "IEEE Registration Authority",
- [3]byte{44, 107, 125}: "Texas Instruments",
- [3]byte{44, 107, 245}: "Juniper Networks",
- [3]byte{44, 110, 133}: "Intel Corporate",
- [3]byte{44, 111, 201}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{44, 113, 85}: "HiveMotion",
- [3]byte{44, 114, 195}: "Soundmatters",
- [3]byte{44, 115, 96}: "Earda Technologies co Ltd",
- [3]byte{44, 117, 15}: "Shanghai Dongzhou-Lawton Communication Technology Co. Ltd.",
- [3]byte{44, 118, 138}: "Hewlett Packard",
- [3]byte{44, 123, 90}: "Milper Ltd",
- [3]byte{44, 123, 132}: "OOO Petr Telegin",
- [3]byte{44, 126, 129}: "ARRIS Group, Inc.",
- [3]byte{44, 126, 207}: "Onzo Ltd",
- [3]byte{44, 128, 101}: "HARTING Inc. of North America",
- [3]byte{44, 129, 88}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{44, 134, 210}: "Cisco Systems, Inc",
- [3]byte{44, 138, 114}: "HTC Corporation",
- [3]byte{44, 139, 242}: "Hitachi Metals America Ltd",
- [3]byte{44, 145, 39}: "Eintechno Corporation",
- [3]byte{44, 146, 44}: "Kishu Giken Kogyou Company Ltd,.",
- [3]byte{44, 148, 100}: "Cincoze Co., Ltd.",
- [3]byte{44, 149, 127}: "zte corporation",
- [3]byte{44, 150, 98}: "Invenit BV",
- [3]byte{44, 151, 23}: "I.C.Y. B.V.",
- [3]byte{44, 153, 36}: "ARRIS Group, Inc.",
- [3]byte{44, 154, 164}: "Eolo SpA",
- [3]byte{44, 157, 30}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{44, 158, 95}: "ARRIS Group, Inc.",
- [3]byte{44, 158, 236}: "Jabil Circuit Penang",
- [3]byte{44, 158, 252}: "CANON INC.",
- [3]byte{44, 161, 87}: "acromate, Inc.",
- [3]byte{44, 161, 125}: "ARRIS Group, Inc.",
- [3]byte{44, 162, 180}: "Fortify Technologies, LLC",
- [3]byte{44, 163, 14}: "POWER DRAGON DEVELOPMENT LIMITED",
- [3]byte{44, 165, 57}: "Parallel Wireless, Inc",
- [3]byte{44, 167, 128}: "True Technologies Inc.",
- [3]byte{44, 168, 53}: "RIM",
- [3]byte{44, 171, 0}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{44, 171, 37}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{44, 171, 164}: "Cisco SPVTG",
- [3]byte{44, 171, 235}: "Cisco Systems, Inc",
- [3]byte{44, 172, 68}: "CONEXTOP",
- [3]byte{44, 173, 19}: "SHENZHEN ZHILU TECHNOLOGY CO.,LTD",
- [3]byte{44, 174, 43}: "Samsung Electronics Co.,Ltd",
- [3]byte{44, 176, 93}: "NETGEAR",
- [3]byte{44, 176, 223}: "Soliton Technologies Pvt Ltd",
- [3]byte{44, 177, 21}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{44, 178, 26}: "Phicomm (Shanghai) Co., Ltd.",
- [3]byte{44, 180, 58}: "Apple, Inc.",
- [3]byte{44, 182, 147}: "Radware",
- [3]byte{44, 182, 157}: "RED Digital Cinema",
- [3]byte{44, 186, 186}: "Samsung Electronics Co.,Ltd",
- [3]byte{44, 190, 8}: "Apple, Inc.",
- [3]byte{44, 190, 151}: "Ingenieurbuero Bickele und Buehler GmbH",
- [3]byte{44, 194, 96}: "Oracle Corporation",
- [3]byte{44, 197, 72}: "IAdea Corporation",
- [3]byte{44, 197, 211}: "Ruckus Wireless",
- [3]byte{44, 204, 21}: "Nokia Corporation",
- [3]byte{44, 205, 39}: "Precor Inc",
- [3]byte{44, 205, 67}: "Summit Technology Group",
- [3]byte{44, 205, 105}: "Aqavi.com",
- [3]byte{44, 207, 88}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{44, 208, 45}: "Cisco Systems, Inc",
- [3]byte{44, 208, 90}: "Liteon Technology Corporation",
- [3]byte{44, 209, 65}: "IEEE Registration Authority",
- [3]byte{44, 209, 218}: "Sanjole, Inc.",
- [3]byte{44, 210, 231}: "Nokia Corporation",
- [3]byte{44, 212, 68}: "FUJITSU LIMITED",
- [3]byte{44, 220, 173}: "Wistron Neweb Corporation",
- [3]byte{44, 221, 12}: "Discovergy GmbH",
- [3]byte{44, 221, 149}: "Taicang T&W Electronics",
- [3]byte{44, 221, 163}: "Point Grey Research Inc.",
- [3]byte{44, 226, 168}: "DeviceDesign",
- [3]byte{44, 228, 18}: "Sagemcom Broadband SAS",
- [3]byte{44, 230, 204}: "Ruckus Wireless",
- [3]byte{44, 232, 113}: "Alert Metalguard ApS",
- [3]byte{44, 237, 235}: "Alpheus Digital Company Limited",
- [3]byte{44, 238, 38}: "Petroleum Geo-Services",
- [3]byte{44, 240, 162}: "Apple, Inc.",
- [3]byte{44, 240, 238}: "Apple, Inc.",
- [3]byte{44, 242, 3}: "EMKO ELEKTRONIK SAN VE TIC AS",
- [3]byte{44, 244, 197}: "Avaya Inc",
- [3]byte{44, 247, 241}: "Seeed Technology Inc.",
- [3]byte{44, 250, 162}: "Alcatel-Lucent Enterprise",
- [3]byte{44, 252, 228}: "CTEK Sweden AB",
- [3]byte{44, 253, 55}: "Blue Calypso, Inc.",
- [3]byte{44, 253, 161}: "ASUSTek COMPUTER INC.",
- [3]byte{44, 253, 171}: "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
- [3]byte{44, 255, 101}: "Oki Electric Industry Co., Ltd.",
- [3]byte{48, 5, 63}: "JTI Co.,Ltd.",
- [3]byte{48, 5, 92}: "Brother industries, LTD.",
- [3]byte{48, 7, 77}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{48, 11, 156}: "Delta Mobile Systems, Inc.",
- [3]byte{48, 12, 35}: "zte corporation",
- [3]byte{48, 13, 42}: "Zhejiang Wellcom Technology Co.,Ltd.",
- [3]byte{48, 13, 67}: "Microsoft Mobile Oy",
- [3]byte{48, 14, 213}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{48, 14, 227}: "Aquantia Corporation",
- [3]byte{48, 16, 179}: "Liteon Technology Corporation",
- [3]byte{48, 16, 228}: "Apple, Inc.",
- [3]byte{48, 20, 45}: "Piciorgros GmbH",
- [3]byte{48, 20, 74}: "Wistron Neweb Corporation",
- [3]byte{48, 21, 24}: "Ubiquitous Communication Co. ltd.",
- [3]byte{48, 22, 141}: "ProLon",
- [3]byte{48, 23, 200}: "Sony Mobile Communications AB",
- [3]byte{48, 24, 207}: "DEOS control systems GmbH",
- [3]byte{48, 25, 102}: "Samsung Electronics Co.,Ltd",
- [3]byte{48, 26, 40}: "Mako Networks Ltd",
- [3]byte{48, 33, 91}: "Shenzhen Ostar Display Electronic Co.,Ltd",
- [3]byte{48, 41, 190}: "Shanghai MRDcom Co.,Ltd",
- [3]byte{48, 45, 232}: "JDA, LLC (JDA Systems)",
- [3]byte{48, 50, 148}: "W-IE-NE-R Plein & Baus GmbH",
- [3]byte{48, 50, 212}: "Hanilstm Co., Ltd.",
- [3]byte{48, 51, 53}: "Boosty",
- [3]byte{48, 52, 210}: "Availink, Inc.",
- [3]byte{48, 53, 173}: "Apple, Inc.",
- [3]byte{48, 55, 166}: "Cisco Systems, Inc",
- [3]byte{48, 56, 85}: "Nokia Corporation",
- [3]byte{48, 57, 38}: "Sony Mobile Communications AB",
- [3]byte{48, 57, 85}: "Shenzhen Jinhengjia Electronic Co., Ltd.",
- [3]byte{48, 57, 242}: "ADB Broadband Italia",
- [3]byte{48, 58, 100}: "Intel Corporate",
- [3]byte{48, 61, 8}: "GLINTT TES S.A.",
- [3]byte{48, 62, 173}: "Sonavox Canada Inc",
- [3]byte{48, 65, 116}: "ALTEC LANSING LLC",
- [3]byte{48, 66, 37}: "BURG-WÄCHTER KG",
- [3]byte{48, 68, 73}: "PLATH GmbH",
- [3]byte{48, 68, 135}: "Hefei Radio Communication Technology Co., Ltd",
- [3]byte{48, 68, 161}: "Shanghai Nanchao Information Technology",
- [3]byte{48, 70, 154}: "NETGEAR",
- [3]byte{48, 73, 59}: "Nanjing Z-Com Wireless Co.,Ltd",
- [3]byte{48, 76, 126}: "Panasonic Electric Works Automation Controls Techno Co.,Ltd.",
- [3]byte{48, 78, 195}: "Tianjin Techua Technology Co., Ltd.",
- [3]byte{48, 81, 248}: "BYK-Gardner GmbH",
- [3]byte{48, 82, 90}: "NST Co., LTD",
- [3]byte{48, 82, 203}: "Liteon Technology Corporation",
- [3]byte{48, 85, 237}: "Trex Network LLC",
- [3]byte{48, 87, 172}: "IRLAB LTD.",
- [3]byte{48, 88, 144}: "Frontier Silicon Ltd",
- [3]byte{48, 89, 91}: "streamnow AG",
- [3]byte{48, 89, 183}: "Microsoft",
- [3]byte{48, 90, 58}: "ASUSTek COMPUTER INC.",
- [3]byte{48, 93, 56}: "Beissbarth",
- [3]byte{48, 96, 35}: "ARRIS Group, Inc.",
- [3]byte{48, 97, 18}: "PAV GmbH",
- [3]byte{48, 97, 24}: "Paradom Inc.",
- [3]byte{48, 99, 107}: "Apple, Inc.",
- [3]byte{48, 101, 236}: "Wistron (ChongQing)",
- [3]byte{48, 104, 140}: "Reach Technology Inc.",
- [3]byte{48, 105, 75}: "RIM",
- [3]byte{48, 108, 190}: "Skymotion Technology (HK) Limited",
- [3]byte{48, 110, 92}: "Validus Technologies",
- [3]byte{48, 113, 178}: "Hangzhou Prevail Optoelectronic Equipment Co.,LTD.",
- [3]byte{48, 115, 80}: "Inpeco SA",
- [3]byte{48, 116, 150}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{48, 117, 18}: "Sony Mobile Communications AB",
- [3]byte{48, 118, 111}: "LG Electronics (Mobile Communications)",
- [3]byte{48, 119, 203}: "Maike Industry(Shenzhen)CO.,LTD",
- [3]byte{48, 120, 92}: "Partow Tamas Novin (Parman)",
- [3]byte{48, 120, 107}: "TIANJIN Golden Pentagon Electronics Co., Ltd.",
- [3]byte{48, 120, 194}: "Innowireless, Co. Ltd.",
- [3]byte{48, 124, 48}: "RIM",
- [3]byte{48, 124, 94}: "Juniper Networks",
- [3]byte{48, 124, 178}: "ANOV FRANCE",
- [3]byte{48, 126, 203}: "SFR",
- [3]byte{48, 132, 84}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{48, 133, 169}: "ASUSTek COMPUTER INC.",
- [3]byte{48, 135, 48}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{48, 135, 217}: "Ruckus Wireless",
- [3]byte{48, 137, 118}: "DALIAN LAMBA TECHNOLOGY CO.,LTD",
- [3]byte{48, 137, 153}: "Guangdong East Power Co.,",
- [3]byte{48, 137, 211}: "HONGKONG UCLOUDLINK NETWORK TECHNOLOGY LIMITED",
- [3]byte{48, 140, 251}: "Dropcam",
- [3]byte{48, 141, 153}: "Hewlett Packard",
- [3]byte{48, 144, 171}: "Apple, Inc.",
- [3]byte{48, 145, 143}: "Technicolor",
- [3]byte{48, 146, 246}: "SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD",
- [3]byte{48, 149, 227}: "SHANGHAI SIMCOM LIMITED",
- [3]byte{48, 150, 251}: "Samsung Electronics Co.,Ltd",
- [3]byte{48, 153, 53}: "zte corporation",
- [3]byte{48, 155, 173}: "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
- [3]byte{48, 156, 35}: "Micro-Star INTL CO., LTD.",
- [3]byte{48, 159, 251}: "Ardomus Networks Corporation",
- [3]byte{48, 162, 32}: "ARG Telecom",
- [3]byte{48, 162, 67}: "Shenzhen Prifox Innovation Technology Co., Ltd.",
- [3]byte{48, 168, 219}: "Sony Mobile Communications AB",
- [3]byte{48, 169, 222}: "LG Innotek",
- [3]byte{48, 170, 189}: "Shanghai Reallytek Information Technology Co.,Ltd",
- [3]byte{48, 174, 123}: "Deqing Dusun Electron CO., LTD",
- [3]byte{48, 174, 164}: "Espressif Inc.",
- [3]byte{48, 174, 246}: "Radio Mobile Access",
- [3]byte{48, 177, 100}: "Power Electronics International Inc.",
- [3]byte{48, 178, 22}: "Hytec Geraetebau GmbH",
- [3]byte{48, 179, 162}: "Shenzhen Heguang Measurement & Control Technology Co.,Ltd",
- [3]byte{48, 180, 158}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{48, 180, 184}: "LG Electronics",
- [3]byte{48, 181, 194}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{48, 181, 241}: "Aitexin Technology Co., Ltd",
- [3]byte{48, 182, 45}: "Mojo Networks, Inc.",
- [3]byte{48, 182, 79}: "Juniper Networks",
- [3]byte{48, 192, 27}: "Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd",
- [3]byte{48, 195, 217}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{48, 197, 7}: "ECI Telecom Ltd.",
- [3]byte{48, 199, 80}: "MIC Technology Group",
- [3]byte{48, 199, 174}: "Samsung Electronics Co.,Ltd",
- [3]byte{48, 200, 42}: "WI-BIZ srl",
- [3]byte{48, 203, 248}: "Samsung Electronics Co.,Ltd",
- [3]byte{48, 205, 167}: "Samsung Electronics Co.,Ltd",
- [3]byte{48, 209, 126}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{48, 211, 45}: "devolo AG",
- [3]byte{48, 211, 87}: "Logosol, Inc.",
- [3]byte{48, 211, 134}: "zte corporation",
- [3]byte{48, 212, 106}: "Autosales Incorporated",
- [3]byte{48, 213, 135}: "Samsung Electronics Co.,Ltd",
- [3]byte{48, 214, 201}: "Samsung Electronics Co.,Ltd",
- [3]byte{48, 222, 134}: "Cedac Software S.r.l.",
- [3]byte{48, 224, 144}: "Linctronix Ltd,",
- [3]byte{48, 225, 113}: "Hewlett Packard",
- [3]byte{48, 227, 122}: "Intel Corporate",
- [3]byte{48, 228, 142}: "Vodafone UK",
- [3]byte{48, 228, 219}: "Cisco Systems, Inc",
- [3]byte{48, 235, 31}: "Skylab M&C Technology Co.,Ltd",
- [3]byte{48, 235, 37}: "INTEK DIGITAL",
- [3]byte{48, 239, 209}: "Alstom Strongwish (Shenzhen) Co., Ltd.",
- [3]byte{48, 243, 29}: "zte corporation",
- [3]byte{48, 243, 53}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{48, 243, 58}: "+plugg srl",
- [3]byte{48, 244, 47}: "ESP",
- [3]byte{48, 246, 185}: "Ecocentric Energy",
- [3]byte{48, 247, 13}: "Cisco Systems, Inc",
- [3]byte{48, 247, 114}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{48, 247, 127}: "S Mobile Devices Limited",
- [3]byte{48, 247, 197}: "Apple, Inc.",
- [3]byte{48, 247, 215}: "Thread Technology Co., Ltd",
- [3]byte{48, 249, 237}: "Sony Corporation",
- [3]byte{48, 250, 183}: "Tunai Creative",
- [3]byte{48, 251, 148}: "Shanghai Fangzhiwei Information Technology CO.,Ltd.",
- [3]byte{48, 252, 104}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{48, 253, 17}: "MACROTECH (USA) INC.",
- [3]byte{48, 254, 49}: "Nokia",
- [3]byte{48, 255, 246}: "HangZhou KuoHeng Technology Co.,ltd",
- [3]byte{52, 0, 138}: "IEEE Registration Authority",
- [3]byte{52, 0, 163}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{52, 2, 134}: "Intel Corporate",
- [3]byte{52, 2, 155}: "CloudBerry Technologies Private Limited",
- [3]byte{52, 4, 158}: "IEEE Registration Authority",
- [3]byte{52, 7, 79}: "AccelStor, Inc.",
- [3]byte{52, 7, 251}: "Ericsson AB",
- [3]byte{52, 8, 4}: "D-Link Corporation",
- [3]byte{52, 8, 188}: "Apple, Inc.",
- [3]byte{52, 10, 34}: "TOP-ACCESS ELECTRONICS CO LTD",
- [3]byte{52, 10, 255}: "Qingdao Hisense Communications Co.,Ltd.",
- [3]byte{52, 11, 64}: "MIOS ELETTRONICA SRL",
- [3]byte{52, 12, 237}: "Moduel AB",
- [3]byte{52, 18, 144}: "Treeview Co.,Ltd.",
- [3]byte{52, 18, 152}: "Apple, Inc.",
- [3]byte{52, 19, 168}: "Mediplan Limited",
- [3]byte{52, 19, 232}: "Intel Corporate",
- [3]byte{52, 20, 95}: "Samsung Electronics Co.,Ltd",
- [3]byte{52, 21, 19}: "Texas Instruments",
- [3]byte{52, 21, 158}: "Apple, Inc.",
- [3]byte{52, 23, 235}: "Dell Inc.",
- [3]byte{52, 26, 53}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{52, 26, 76}: "SHENZHEN WEIBU ELECTRONICS CO.,LTD.",
- [3]byte{52, 27, 34}: "Grandbeing Technology Co., Ltd",
- [3]byte{52, 30, 107}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{52, 31, 228}: "ARRIS Group, Inc.",
- [3]byte{52, 33, 9}: "Jensen Scandinavia AS",
- [3]byte{52, 35, 135}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{52, 35, 186}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{52, 37, 93}: "Shenzhen Loadcom Technology Co.,Ltd",
- [3]byte{52, 38, 6}: "CarePredict, Inc.",
- [3]byte{52, 40, 240}: "ATN International Limited",
- [3]byte{52, 41, 143}: "IEEE Registration Authority",
- [3]byte{52, 41, 234}: "MCD ELECTRONICS SP. Z O.O.",
- [3]byte{52, 42, 241}: "Texas Instruments",
- [3]byte{52, 45, 13}: "Samsung Electronics Co.,Ltd",
- [3]byte{52, 47, 110}: "Anywire corporation",
- [3]byte{52, 49, 17}: "Samsung Electronics Co.,Ltd",
- [3]byte{52, 49, 196}: "AVM GmbH",
- [3]byte{52, 50, 230}: "Panasonic Industrial Devices Europe GmbH",
- [3]byte{52, 54, 59}: "Apple, Inc.",
- [3]byte{52, 55, 89}: "zte corporation",
- [3]byte{52, 56, 175}: "Inlab Software GmbH",
- [3]byte{52, 56, 183}: "HUMAX Co., Ltd.",
- [3]byte{52, 61, 152}: "JinQianMao Technology Co.,Ltd.",
- [3]byte{52, 61, 196}: "BUFFALO.INC",
- [3]byte{52, 64, 181}: "IBM",
- [3]byte{52, 65, 93}: "Intel Corporate",
- [3]byte{52, 70, 111}: "HiTEM Engineering",
- [3]byte{52, 75, 61}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{52, 75, 80}: "zte corporation",
- [3]byte{52, 76, 164}: "amazipoint technology Ltd.",
- [3]byte{52, 76, 200}: "Echodyne Corp",
- [3]byte{52, 77, 234}: "zte corporation",
- [3]byte{52, 77, 247}: "LG Electronics (Mobile Communications)",
- [3]byte{52, 79, 63}: "IO-Power Technology Co., Ltd.",
- [3]byte{52, 79, 92}: "R&amp;M AG",
- [3]byte{52, 79, 105}: "EKINOPS SAS",
- [3]byte{52, 81, 170}: "JID GLOBAL",
- [3]byte{52, 81, 201}: "Apple, Inc.",
- [3]byte{52, 84, 60}: "TAKAOKA TOKO CO.,LTD.",
- [3]byte{52, 86, 254}: "Cisco Meraki",
- [3]byte{52, 87, 96}: "MitraStar Technology Corp.",
- [3]byte{52, 91, 17}: "EVI HEAT AB",
- [3]byte{52, 91, 187}: "GD Midea Air-Conditioning Equipment Co.,Ltd.",
- [3]byte{52, 92, 64}: "Cargt Holdings LLC",
- [3]byte{52, 93, 16}: "Wytek",
- [3]byte{52, 97, 120}: "The Boeing Company",
- [3]byte{52, 98, 136}: "Cisco Systems, Inc",
- [3]byte{52, 100, 169}: "Hewlett Packard",
- [3]byte{52, 104, 74}: "Teraworks Co., Ltd.",
- [3]byte{52, 104, 149}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{52, 105, 135}: "zte corporation",
- [3]byte{52, 106, 194}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{52, 107, 211}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{52, 108, 15}: "Pramod Telecom Pvt. Ltd",
- [3]byte{52, 110, 138}: "Ecosense",
- [3]byte{52, 110, 157}: "Ericsson AB",
- [3]byte{52, 111, 144}: "Cisco Systems, Inc",
- [3]byte{52, 111, 146}: "White Rodgers Division",
- [3]byte{52, 111, 237}: "Enovation Controls",
- [3]byte{52, 117, 199}: "Avaya Inc",
- [3]byte{52, 118, 197}: "I-O DATA DEVICE, INC.",
- [3]byte{52, 120, 119}: "O-Net Communications (Shenzhen) Limited",
- [3]byte{52, 120, 215}: "Gionee Communication Equipment Co.,Ltd.",
- [3]byte{52, 122, 96}: "ARRIS Group, Inc.",
- [3]byte{52, 126, 57}: "Nokia Danmark A/S",
- [3]byte{52, 128, 179}: "Xiaomi Communications Co Ltd",
- [3]byte{52, 129, 55}: "UNICARD SA",
- [3]byte{52, 129, 196}: "AVM GmbH",
- [3]byte{52, 129, 244}: "SST Taiwan Ltd.",
- [3]byte{52, 130, 222}: "Kiio Inc",
- [3]byte{52, 131, 2}: "iFORCOM Co., Ltd",
- [3]byte{52, 132, 70}: "Ericsson AB",
- [3]byte{52, 133, 132}: "Aerohive Networks Inc.",
- [3]byte{52, 134, 42}: "Heinz Lackmann GmbH & Co KG",
- [3]byte{52, 135, 61}: "Quectel Wireless Solution Co.,Ltd.",
- [3]byte{52, 136, 93}: "Logitech Far East",
- [3]byte{52, 138, 123}: "Samsung Electronics Co.,Ltd",
- [3]byte{52, 138, 174}: "Sagemcom Broadband SAS",
- [3]byte{52, 143, 39}: "Ruckus Wireless",
- [3]byte{52, 149, 219}: "Logitec Corporation",
- [3]byte{52, 150, 114}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{52, 151, 246}: "ASUSTek COMPUTER INC.",
- [3]byte{52, 151, 251}: "ADVANCED RF TECHNOLOGIES INC",
- [3]byte{52, 153, 111}: "VPI Engineering",
- [3]byte{52, 153, 113}: "Quanta Storage Inc.",
- [3]byte{52, 153, 215}: "Universal Flow Monitors, Inc.",
- [3]byte{52, 154, 13}: "ZBD Displays Ltd",
- [3]byte{52, 155, 91}: "Maquet GmbH",
- [3]byte{52, 157, 144}: "Heinzmann GmbH & CO. KG",
- [3]byte{52, 158, 52}: "Evervictory Electronic Co.Ltd",
- [3]byte{52, 161, 131}: "AWare, Inc",
- [3]byte{52, 162, 162}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{52, 163, 149}: "Apple, Inc.",
- [3]byte{52, 163, 191}: "Terewave. Inc.",
- [3]byte{52, 165, 93}: "TECHNOSOFT INTERNATIONAL SRL",
- [3]byte{52, 165, 225}: "Sensorist ApS",
- [3]byte{52, 166, 140}: "Shine Profit Development Limited",
- [3]byte{52, 167, 9}: "Trevil srl",
- [3]byte{52, 167, 186}: "Fischer International Systems Corporation",
- [3]byte{52, 168, 67}: "KYOCERA Display Corporation",
- [3]byte{52, 168, 78}: "Cisco Systems, Inc",
- [3]byte{52, 170, 139}: "Samsung Electronics Co.,Ltd",
- [3]byte{52, 170, 153}: "Nokia",
- [3]byte{52, 170, 238}: "Mikrovisatos Servisas UAB",
- [3]byte{52, 171, 55}: "Apple, Inc.",
- [3]byte{52, 173, 228}: "Shanghai Chint Power Systems Co., Ltd.",
- [3]byte{52, 175, 44}: "Nintendo Co., Ltd.",
- [3]byte{52, 177, 247}: "Texas Instruments",
- [3]byte{52, 179, 84}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{52, 181, 113}: "PLDS",
- [3]byte{52, 183, 253}: "Guangzhou Younghead Electronic Technology Co.,Ltd",
- [3]byte{52, 186, 56}: "PAL MOHAN ELECTRONICS PVT LTD",
- [3]byte{52, 186, 81}: "Se-Kure Controls, Inc.",
- [3]byte{52, 186, 117}: "Tembo Systems, Inc.",
- [3]byte{52, 186, 154}: "Asiatelco Technologies Co.",
- [3]byte{52, 187, 31}: "BlackBerry RTS",
- [3]byte{52, 187, 38}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{52, 188, 166}: "Beijing Ding Qing Technology, Ltd.",
- [3]byte{52, 189, 200}: "Cisco Systems, Inc",
- [3]byte{52, 189, 249}: "Shanghai WDK Industrial Co.,Ltd.",
- [3]byte{52, 189, 250}: "Cisco SPVTG",
- [3]byte{52, 190, 0}: "Samsung Electronics Co.,Ltd",
- [3]byte{52, 191, 144}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{52, 192, 89}: "Apple, Inc.",
- [3]byte{52, 192, 249}: "Rockwell Automation",
- [3]byte{52, 195, 172}: "Samsung Electronics Co.,Ltd",
- [3]byte{52, 195, 210}: "FN-LINK TECHNOLOGY LIMITED",
- [3]byte{52, 197, 208}: "Hagleitner Hygiene International GmbH",
- [3]byte{52, 198, 154}: "Enecsys Ltd",
- [3]byte{52, 199, 49}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{52, 200, 3}: "Nokia Corporation",
- [3]byte{52, 201, 157}: "EIDOLON COMMUNICATIONS TECHNOLOGY CO. LTD.",
- [3]byte{52, 201, 240}: "LM Technologies Ltd",
- [3]byte{52, 204, 40}: "Nexpring Co. LTD.,",
- [3]byte{52, 205, 109}: "CommSky Technologies",
- [3]byte{52, 205, 190}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{52, 206, 0}: "XIAOMI Electronics,CO.,LTD",
- [3]byte{52, 206, 148}: "Parsec (Pty) Ltd",
- [3]byte{52, 208, 155}: "MobilMAX Technology Inc.",
- [3]byte{52, 208, 184}: "IEEE Registration Authority",
- [3]byte{52, 210, 112}: "Amazon Technologies Inc.",
- [3]byte{52, 210, 196}: "RENA GmbH Print Systeme",
- [3]byte{52, 215, 180}: "Tributary Systems, Inc.",
- [3]byte{52, 217, 84}: "WiBotic Inc.",
- [3]byte{52, 219, 253}: "Cisco Systems, Inc",
- [3]byte{52, 222, 26}: "Intel Corporate",
- [3]byte{52, 222, 52}: "zte corporation",
- [3]byte{52, 223, 42}: "Fujikon Industrial Co.,Limited",
- [3]byte{52, 224, 207}: "zte corporation",
- [3]byte{52, 224, 215}: "DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD",
- [3]byte{52, 226, 253}: "Apple, Inc.",
- [3]byte{52, 227, 128}: "Genexis B.V.",
- [3]byte{52, 228, 42}: "Automatic Bar Controls Inc.",
- [3]byte{52, 230, 173}: "Intel Corporate",
- [3]byte{52, 230, 215}: "Dell Inc.",
- [3]byte{52, 231, 11}: "HAN Networks Co., Ltd",
- [3]byte{52, 231, 28}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{52, 233, 17}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{52, 234, 52}: "HangZhou Gubei Electronics Technology Co.,Ltd",
- [3]byte{52, 237, 11}: "Shanghai XZ-COM.CO.,Ltd.",
- [3]byte{52, 239, 68}: "2Wire Inc",
- [3]byte{52, 239, 139}: "NTT Communications Corporation",
- [3]byte{52, 240, 202}: "Shenzhen Linghangyuan Digital Technology Co.,Ltd.",
- [3]byte{52, 243, 154}: "Intel Corporate",
- [3]byte{52, 243, 155}: "WizLAN Ltd.",
- [3]byte{52, 246, 45}: "SHARP Corporation",
- [3]byte{52, 246, 75}: "Intel Corporate",
- [3]byte{52, 246, 210}: "Panasonic Taiwan Co.,Ltd.",
- [3]byte{52, 249, 104}: "ATEK Products, LLC",
- [3]byte{52, 250, 64}: "Guangzhou Robustel Technologies Co., Limited",
- [3]byte{52, 250, 159}: "Ruckus Wireless",
- [3]byte{52, 252, 111}: "ALCEA",
- [3]byte{52, 252, 185}: "Hewlett Packard Enterprise",
- [3]byte{52, 252, 239}: "LG Electronics (Mobile Communications)",
- [3]byte{56, 1, 149}: "Samsung Electronics Co.,Ltd",
- [3]byte{56, 1, 151}: "TSST Global,Inc",
- [3]byte{56, 1, 159}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{56, 5, 70}: "Foctek Photonics, Inc.",
- [3]byte{56, 5, 172}: "Piller Group GmbH",
- [3]byte{56, 6, 180}: "A.D.C. GmbH",
- [3]byte{56, 7, 212}: "Zeppelin Systems GmbH",
- [3]byte{56, 8, 253}: "Silca Spa",
- [3]byte{56, 9, 164}: "Firefly Integrations",
- [3]byte{56, 10, 10}: "Sky-City Communication and Electronics Limited Company",
- [3]byte{56, 10, 148}: "Samsung Electronics Co.,Ltd",
- [3]byte{56, 10, 171}: "Formlabs",
- [3]byte{56, 11, 64}: "Samsung Electronics Co.,Ltd",
- [3]byte{56, 13, 212}: "Primax Electronics Ltd.",
- [3]byte{56, 14, 77}: "Cisco Systems, Inc",
- [3]byte{56, 14, 123}: "V.P.S. Thai Co., Ltd",
- [3]byte{56, 15, 74}: "Apple, Inc.",
- [3]byte{56, 15, 228}: "Dedicated Network Partners Oy",
- [3]byte{56, 16, 213}: "AVM Audiovisuelles Marketing und Computersysteme GmbH",
- [3]byte{56, 22, 209}: "Samsung Electronics Co.,Ltd",
- [3]byte{56, 23, 102}: "PROMZAKAZ LTD.",
- [3]byte{56, 23, 195}: "Hewlett Packard Enterprise",
- [3]byte{56, 23, 225}: "Technicolor CH USA Inc.",
- [3]byte{56, 25, 47}: "Nokia Corporation",
- [3]byte{56, 28, 26}: "Cisco Systems, Inc",
- [3]byte{56, 28, 35}: "Hilan Technology CO.,LTD",
- [3]byte{56, 28, 74}: "SIMCom Wireless Solutions Co.,Ltd.",
- [3]byte{56, 29, 217}: "FN-LINK TECHNOLOGY LIMITED",
- [3]byte{56, 32, 86}: "Cisco Systems, Inc",
- [3]byte{56, 32, 168}: "ColorTokens, Inc.",
- [3]byte{56, 33, 135}: "Midea Group Co., Ltd.",
- [3]byte{56, 34, 157}: "ADB Broadband Italia",
- [3]byte{56, 34, 214}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{56, 37, 107}: "Microsoft Mobile Oy",
- [3]byte{56, 38, 43}: "UTran Technology",
- [3]byte{56, 38, 205}: "ANDTEK",
- [3]byte{56, 40, 234}: "Fujian Netcom Technology Co., LTD",
- [3]byte{56, 41, 90}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{56, 41, 221}: "ONvocal Inc",
- [3]byte{56, 43, 120}: "ECO PLUGS ENTERPRISE CO., LTD",
- [3]byte{56, 44, 74}: "ASUSTek COMPUTER INC.",
- [3]byte{56, 45, 209}: "Samsung Electronics Co.,Ltd",
- [3]byte{56, 45, 232}: "Samsung Electronics Co.,Ltd",
- [3]byte{56, 49, 172}: "WEG",
- [3]byte{56, 55, 139}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{56, 58, 33}: "IEEE Registration Authority",
- [3]byte{56, 59, 200}: "2Wire Inc",
- [3]byte{56, 63, 16}: "DBL Technology Ltd.",
- [3]byte{56, 66, 51}: "Wildeboer Bauteile GmbH",
- [3]byte{56, 66, 166}: "Ingenieurbuero Stahlkopf",
- [3]byte{56, 67, 105}: "Patrol Products Consortium LLC",
- [3]byte{56, 67, 125}: "Compal Broadband Networks, Inc.",
- [3]byte{56, 69, 76}: "Light Labs, Inc.",
- [3]byte{56, 69, 140}: "MyCloud Technology corporation",
- [3]byte{56, 70, 8}: "zte corporation",
- [3]byte{56, 72, 76}: "Apple, Inc.",
- [3]byte{56, 75, 118}: "AIRTAME ApS",
- [3]byte{56, 76, 79}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{56, 76, 144}: "ARRIS Group, Inc.",
- [3]byte{56, 79, 73}: "Juniper Networks",
- [3]byte{56, 79, 240}: "AzureWave Technology Inc.",
- [3]byte{56, 82, 26}: "Nokia",
- [3]byte{56, 86, 16}: "CANDY HOUSE, Inc.",
- [3]byte{56, 88, 12}: "Panaccess Systems GmbH",
- [3]byte{56, 89, 248}: "MindMade Sp. z o.o.",
- [3]byte{56, 89, 249}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{56, 90, 168}: "Beijing Zhongdun Security Technology Development Co.",
- [3]byte{56, 95, 102}: "Cisco SPVTG",
- [3]byte{56, 95, 195}: "Yu Jeong System, Co.Ltd",
- [3]byte{56, 96, 119}: "PEGATRON CORPORATION",
- [3]byte{56, 99, 187}: "Hewlett Packard",
- [3]byte{56, 99, 246}: "3NOD MULTIMEDIA(SHENZHEN)CO.,LTD",
- [3]byte{56, 102, 69}: "OOSIC Technology CO.,Ltd",
- [3]byte{56, 102, 240}: "Apple, Inc.",
- [3]byte{56, 103, 147}: "Asia Optical Co., Inc.",
- [3]byte{56, 107, 28}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{56, 107, 187}: "ARRIS Group, Inc.",
- [3]byte{56, 108, 155}: "Ivy Biomedical",
- [3]byte{56, 110, 33}: "Wasion Group Ltd.",
- [3]byte{56, 110, 162}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{56, 112, 12}: "ARRIS Group, Inc.",
- [3]byte{56, 113, 222}: "Apple, Inc.",
- [3]byte{56, 114, 192}: "Comtrend Corporation",
- [3]byte{56, 115, 234}: "IEEE Registration Authority",
- [3]byte{56, 118, 202}: "Shenzhen Smart Intelligent Technology Co.Ltd",
- [3]byte{56, 118, 209}: "Euronda SpA",
- [3]byte{56, 123, 71}: "AKELA, Inc.",
- [3]byte{56, 131, 69}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{56, 134, 2}: "Flexoptix GmbH",
- [3]byte{56, 137, 220}: "Opticon Sensors Europe B.V.",
- [3]byte{56, 138, 183}: "ITC Networks",
- [3]byte{56, 140, 80}: "LG Electronics",
- [3]byte{56, 142, 231}: "Fanhattan LLC",
- [3]byte{56, 144, 165}: "Cisco Systems, Inc",
- [3]byte{56, 145, 213}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{56, 145, 251}: "Xenox Holding BV",
- [3]byte{56, 148, 150}: "Samsung Electronics Co.,Ltd",
- [3]byte{56, 148, 224}: "Syrotech Networks. Ltd.",
- [3]byte{56, 149, 146}: "Beijing Tendyron Corporation",
- [3]byte{56, 151, 214}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{56, 152, 216}: "MERITECH CO.,LTD",
- [3]byte{56, 154, 246}: "Samsung Electronics Co.,Ltd",
- [3]byte{56, 157, 146}: "Seiko Epson Corporation",
- [3]byte{56, 159, 90}: "C-Kur TV Inc.",
- [3]byte{56, 159, 131}: "OTN Systems N.V.",
- [3]byte{56, 162, 140}: "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
- [3]byte{56, 164, 237}: "Xiaomi Communications Co Ltd",
- [3]byte{56, 165, 60}: "COMECER Netherlands",
- [3]byte{56, 165, 182}: "SHENZHEN MEGMEET ELECTRICAL CO.,LTD",
- [3]byte{56, 166, 206}: "BSkyB Ltd",
- [3]byte{56, 168, 81}: "Moog, Ing",
- [3]byte{56, 168, 107}: "Orga BV",
- [3]byte{56, 169, 95}: "Actifio Inc",
- [3]byte{56, 170, 60}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{56, 172, 61}: "Nephos Inc",
- [3]byte{56, 173, 142}: "New H3C Technologies Co., Ltd",
- [3]byte{56, 173, 190}: "New H3C Technologies Co., Ltd",
- [3]byte{56, 175, 215}: "FUJITSU LIMITED",
- [3]byte{56, 177, 45}: "Sonotronic Nagel GmbH",
- [3]byte{56, 177, 219}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{56, 181, 77}: "Apple, Inc.",
- [3]byte{56, 181, 189}: "E.G.O. Elektro-Ger",
- [3]byte{56, 183, 37}: "Wistron Infocomm (Zhongshan) Corporation",
- [3]byte{56, 183, 77}: "Fijowave Limited",
- [3]byte{56, 184, 235}: "IEEE Registration Authority",
- [3]byte{56, 187, 35}: "OzVision America LLC",
- [3]byte{56, 187, 60}: "Avaya Inc",
- [3]byte{56, 188, 1}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{56, 188, 26}: "MEIZU Technology Co., Ltd.",
- [3]byte{56, 191, 47}: "Espec Corp.",
- [3]byte{56, 191, 51}: "NEC CASIO Mobile Communications",
- [3]byte{56, 192, 150}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{56, 199, 10}: "WiFiSong",
- [3]byte{56, 199, 186}: "CS Services Co.,Ltd.",
- [3]byte{56, 200, 92}: "Cisco SPVTG",
- [3]byte{56, 201, 134}: "Apple, Inc.",
- [3]byte{56, 201, 169}: "SMART High Reliability Solutions, Inc.",
- [3]byte{56, 202, 151}: "Contour Design LLC",
- [3]byte{56, 202, 218}: "Apple, Inc.",
- [3]byte{56, 205, 7}: "Beijing FaceCam Technology Co., Ltd.",
- [3]byte{56, 209, 53}: "EasyIO Corporation Sdn. Bhd.",
- [3]byte{56, 210, 105}: "Texas Instruments",
- [3]byte{56, 212, 11}: "Samsung Electronics Co.,Ltd",
- [3]byte{56, 213, 71}: "ASUSTek COMPUTER INC.",
- [3]byte{56, 214, 32}: "Limidea Concept Pte. Ltd.",
- [3]byte{56, 215, 202}: "7HUGS LABS",
- [3]byte{56, 216, 47}: "zte corporation",
- [3]byte{56, 219, 187}: "Sunbow Telecom Co., Ltd.",
- [3]byte{56, 222, 96}: "Mohlenhoff GmbH",
- [3]byte{56, 224, 142}: "Mitsubishi Electric Corporation",
- [3]byte{56, 226, 221}: "zte corporation",
- [3]byte{56, 227, 197}: "Taicang T&W Electronics",
- [3]byte{56, 229, 149}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{56, 231, 216}: "HTC Corporation",
- [3]byte{56, 232, 223}: "b gmbh medien + datenbanken",
- [3]byte{56, 233, 140}: "Reco S.p.A.",
- [3]byte{56, 234, 167}: "Hewlett Packard",
- [3]byte{56, 236, 17}: "Novatek Microelectronics Corp.",
- [3]byte{56, 236, 228}: "Samsung Electronics Co.,Ltd",
- [3]byte{56, 237, 24}: "Cisco Systems, Inc",
- [3]byte{56, 238, 157}: "Anedo Ltd.",
- [3]byte{56, 240, 152}: "Vapor Stone Rail Systems",
- [3]byte{56, 240, 200}: "Livestream",
- [3]byte{56, 241, 53}: "SensorTec-Canada",
- [3]byte{56, 242, 62}: "Microsoft Mobile Oy",
- [3]byte{56, 243, 63}: "TATSUNO CORPORATION",
- [3]byte{56, 245, 87}: "JOLATA, INC.",
- [3]byte{56, 245, 151}: "home2net GmbH",
- [3]byte{56, 247, 8}: "National Resource Management, Inc.",
- [3]byte{56, 247, 61}: "Amazon Technologies Inc.",
- [3]byte{56, 247, 178}: "SEOJUN ELECTRIC",
- [3]byte{56, 248, 137}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{56, 248, 183}: "V2COM PARTICIPACOES S.A.",
- [3]byte{56, 248, 202}: "OWIN Inc.",
- [3]byte{56, 250, 202}: "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
- [3]byte{56, 253, 254}: "IEEE Registration Authority",
- [3]byte{56, 254, 197}: "Ellips B.V.",
- [3]byte{56, 255, 54}: "Ruckus Wireless",
- [3]byte{60, 2, 177}: "Creation Technologies LP",
- [3]byte{60, 4, 191}: "PRAVIS SYSTEMS Co.Ltd.,",
- [3]byte{60, 5, 24}: "Samsung Electronics Co.,Ltd",
- [3]byte{60, 5, 171}: "Product Creation Studio",
- [3]byte{60, 7, 84}: "Apple, Inc.",
- [3]byte{60, 7, 113}: "Sony Corporation",
- [3]byte{60, 8, 30}: "Beijing Yupont Electric Power Technology Co.,Ltd",
- [3]byte{60, 8, 246}: "Cisco Systems, Inc",
- [3]byte{60, 9, 109}: "Powerhouse Dynamics",
- [3]byte{60, 12, 72}: "Servergy, Inc.",
- [3]byte{60, 12, 219}: "UNIONMAN TECHNOLOGY CO.,LTD",
- [3]byte{60, 14, 35}: "Cisco Systems, Inc",
- [3]byte{60, 15, 193}: "KBC Networks",
- [3]byte{60, 16, 64}: "daesung network",
- [3]byte{60, 16, 111}: "ALBAHITH TECHNOLOGIES",
- [3]byte{60, 16, 230}: "PHAZR Inc.",
- [3]byte{60, 17, 178}: "Fraunhofer FIT",
- [3]byte{60, 21, 194}: "Apple, Inc.",
- [3]byte{60, 21, 234}: "TESCOM CO., LTD.",
- [3]byte{60, 24, 159}: "Nokia Corporation",
- [3]byte{60, 24, 160}: "Luxshare Precision Industry Company Limited",
- [3]byte{60, 25, 21}: "GFI Chrono Time",
- [3]byte{60, 25, 125}: "Ericsson AB",
- [3]byte{60, 26, 15}: "ClearSky Data",
- [3]byte{60, 26, 87}: "Cardiopulmonary Corp",
- [3]byte{60, 26, 121}: "Huayuan Technology CO.,LTD",
- [3]byte{60, 28, 190}: "JADAK LLC",
- [3]byte{60, 30, 4}: "D-Link International",
- [3]byte{60, 30, 19}: "HANGZHOU SUNRISE TECHNOLOGY CO., LTD",
- [3]byte{60, 37, 215}: "Nokia Corporation",
- [3]byte{60, 38, 213}: "Sotera Wireless",
- [3]byte{60, 39, 99}: "SLE quality engineering GmbH & Co. KG",
- [3]byte{60, 42, 244}: "Brother Industries, LTD.",
- [3]byte{60, 44, 148}: "杭州德澜科技有限公司(HangZhou Delan Technology Co.,Ltd)",
- [3]byte{60, 44, 153}: "Edgecore Networks Corporation",
- [3]byte{60, 45, 183}: "Texas Instruments",
- [3]byte{60, 46, 249}: "Apple, Inc.",
- [3]byte{60, 46, 255}: "Apple, Inc.",
- [3]byte{60, 47, 58}: "SFORZATO Corp.",
- [3]byte{60, 48, 12}: "Dewar Electronics Pty Ltd",
- [3]byte{60, 49, 120}: "Qolsys Inc.",
- [3]byte{60, 51, 0}: "Shenzhen Bilian electronic CO.,LTD",
- [3]byte{60, 53, 86}: "Cognitec Systems GmbH",
- [3]byte{60, 54, 61}: "Nokia Corporation",
- [3]byte{60, 54, 228}: "ARRIS Group, Inc.",
- [3]byte{60, 56, 136}: "ConnectQuest, llc",
- [3]byte{60, 57, 195}: "JW Electronics Co., Ltd.",
- [3]byte{60, 57, 231}: "IEEE Registration Authority",
- [3]byte{60, 58, 115}: "Avaya Inc",
- [3]byte{60, 63, 81}: "2CRSI",
- [3]byte{60, 64, 79}: "GUANGDONG PISEN ELECTRONICS CO.,LTD",
- [3]byte{60, 67, 142}: "ARRIS Group, Inc.",
- [3]byte{60, 70, 216}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{60, 71, 17}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{60, 73, 55}: "ASSMANN Electronic GmbH",
- [3]byte{60, 74, 146}: "Hewlett Packard",
- [3]byte{60, 76, 105}: "Infinity System S.L.",
- [3]byte{60, 76, 208}: "CERAGON NETWORKS",
- [3]byte{60, 78, 71}: "Etronic A/S",
- [3]byte{60, 82, 130}: "Hewlett Packard",
- [3]byte{60, 87, 189}: "Kessler Crane Inc.",
- [3]byte{60, 87, 213}: "FiveCo",
- [3]byte{60, 89, 30}: "TCL King Electrical Appliances (Huizhou) Co., Ltd",
- [3]byte{60, 90, 55}: "Samsung Electronics Co.,Ltd",
- [3]byte{60, 90, 180}: "Google, Inc.",
- [3]byte{60, 92, 195}: "Shenzhen First Blue Chip Technology Ltd",
- [3]byte{60, 94, 195}: "Cisco Systems, Inc",
- [3]byte{60, 95, 1}: "Synerchip Co., Ltd.",
- [3]byte{60, 97, 4}: "Juniper Networks",
- [3]byte{60, 98, 0}: "Samsung Electronics Co.,Ltd",
- [3]byte{60, 98, 120}: "SHENZHEN JETNET TECHNOLOGY CO.,LTD.",
- [3]byte{60, 103, 22}: "Lily Robotics",
- [3]byte{60, 103, 44}: "Sciovid Inc.",
- [3]byte{60, 103, 140}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{60, 104, 22}: "VXi Corporation",
- [3]byte{60, 106, 125}: "Niigata Power Systems Co., Ltd.",
- [3]byte{60, 106, 157}: "Dexatek Technology LTD.",
- [3]byte{60, 110, 99}: "Mitron OY",
- [3]byte{60, 111, 69}: "Fiberpro Inc.",
- [3]byte{60, 111, 234}: "Panasonic India Pvt. Ltd.",
- [3]byte{60, 111, 247}: "EnTek Systems, Inc.",
- [3]byte{60, 112, 89}: "MakerBot Industries",
- [3]byte{60, 116, 55}: "RIM",
- [3]byte{60, 117, 74}: "ARRIS Group, Inc.",
- [3]byte{60, 119, 230}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{60, 120, 67}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{60, 120, 115}: "Airsonics",
- [3]byte{60, 122, 138}: "ARRIS Group, Inc.",
- [3]byte{60, 125, 177}: "Texas Instruments",
- [3]byte{60, 127, 111}: "Telechips, Inc.",
- [3]byte{60, 128, 170}: "Ransnet Singapore Pte Ltd",
- [3]byte{60, 129, 216}: "Sagemcom Broadband SAS",
- [3]byte{60, 131, 30}: "CKD Corporation",
- [3]byte{60, 131, 117}: "Microsoft Corporation",
- [3]byte{60, 131, 181}: "Advance Vision Electronics Co. Ltd.",
- [3]byte{60, 134, 168}: "Sangshin elecom .co,, LTD",
- [3]byte{60, 137, 112}: "Neosfar",
- [3]byte{60, 137, 166}: "KAPELSE",
- [3]byte{60, 138, 176}: "Juniper Networks",
- [3]byte{60, 138, 229}: "Tensun Information Technology(Hangzhou) Co.,LTD",
- [3]byte{60, 139, 205}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{60, 139, 254}: "Samsung Electronics Co.,Ltd",
- [3]byte{60, 140, 64}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{60, 140, 248}: "TRENDnet, Inc.",
- [3]byte{60, 144, 102}: "SmartRG, Inc.",
- [3]byte{60, 145, 43}: "Vexata Inc",
- [3]byte{60, 145, 87}: "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
- [3]byte{60, 145, 116}: "ALONG COMMUNICATION TECHNOLOGY",
- [3]byte{60, 146, 220}: "Octopod Technology Co. Ltd.",
- [3]byte{60, 148, 213}: "Juniper Networks",
- [3]byte{60, 149, 9}: "Liteon Technology Corporation",
- [3]byte{60, 151, 14}: "Wistron InfoComm(Kunshan)Co.,Ltd.",
- [3]byte{60, 151, 126}: "IPS Technology Limited",
- [3]byte{60, 152, 191}: "Quest Controls, Inc.",
- [3]byte{60, 153, 247}: "Lansentechnology AB",
- [3]byte{60, 154, 119}: "Technicolor CH USA Inc.",
- [3]byte{60, 159, 129}: "Shenzhen CATIC Bit Communications Technology Co.,Ltd",
- [3]byte{60, 160, 103}: "Liteon Technology Corporation",
- [3]byte{60, 161, 13}: "Samsung Electronics Co.,Ltd",
- [3]byte{60, 163, 8}: "Texas Instruments",
- [3]byte{60, 163, 21}: "Bless Information & Communications Co., Ltd",
- [3]byte{60, 163, 26}: "Oilfind International LLC",
- [3]byte{60, 163, 72}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{60, 165, 129}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{60, 166, 22}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{60, 167, 43}: "MRV Communications (Networks) LTD",
- [3]byte{60, 168, 42}: "Hewlett Packard",
- [3]byte{60, 169, 244}: "Intel Corporate",
- [3]byte{60, 170, 63}: "iKey, Ltd.",
- [3]byte{60, 171, 142}: "Apple, Inc.",
- [3]byte{60, 174, 105}: "ESA Elektroschaltanlagen Grimma GmbH",
- [3]byte{60, 177, 91}: "Avaya Inc",
- [3]byte{60, 177, 127}: "Wattwatchers Pty Ld",
- [3]byte{60, 182, 183}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{60, 183, 43}: "PLUMgrid Inc",
- [3]byte{60, 183, 146}: "Hitachi Maxell, Ltd., Optronics Division",
- [3]byte{60, 184, 122}: "Private",
- [3]byte{60, 185, 166}: "Belden Deutschland GmbH",
- [3]byte{60, 187, 115}: "Shenzhen Xinguodu Technology Co., Ltd.",
- [3]byte{60, 187, 253}: "Samsung Electronics Co.,Ltd",
- [3]byte{60, 189, 62}: "Beijing Xiaomi Electronics Co., Ltd.",
- [3]byte{60, 189, 216}: "LG ELECTRONICS INC",
- [3]byte{60, 190, 225}: "NIKON CORPORATION",
- [3]byte{60, 192, 121}: "Shenzhen One-Nine Intelligent Electronic Science and Technology Co., Ltd",
- [3]byte{60, 192, 198}: "d&b audiotechnik GmbH",
- [3]byte{60, 193, 44}: "AES Corporation",
- [3]byte{60, 193, 246}: "Melange Systems Pvt. Ltd.",
- [3]byte{60, 194, 67}: "Nokia Corporation",
- [3]byte{60, 194, 225}: "XINHUA CONTROL ENGINEERING CO.,LTD",
- [3]byte{60, 201, 158}: "Huiyang Technology Co., Ltd",
- [3]byte{60, 202, 135}: "Iders Incorporated",
- [3]byte{60, 203, 124}: "TCT mobile ltd",
- [3]byte{60, 205, 90}: "Technische Alternative GmbH",
- [3]byte{60, 205, 147}: "LG ELECTRONICS INC",
- [3]byte{60, 206, 21}: "Mercedes-Benz USA, LLC",
- [3]byte{60, 206, 115}: "Cisco Systems, Inc",
- [3]byte{60, 207, 91}: "ICOMM HK LIMITED",
- [3]byte{60, 208, 248}: "Apple, Inc.",
- [3]byte{60, 209, 110}: "Telepower Communication Co., Ltd",
- [3]byte{60, 212, 214}: "WirelessWERX, Inc",
- [3]byte{60, 215, 218}: "SK Mtek microelectronics(shenzhen)limited",
- [3]byte{60, 217, 43}: "Hewlett Packard",
- [3]byte{60, 217, 206}: "Eclipse WiFi",
- [3]byte{60, 218, 42}: "zte corporation",
- [3]byte{60, 221, 137}: "SOMO HOLDINGS & TECH. CO.,LTD.",
- [3]byte{60, 223, 30}: "Cisco Systems, Inc",
- [3]byte{60, 223, 169}: "ARRIS Group, Inc.",
- [3]byte{60, 223, 189}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{60, 224, 114}: "Apple, Inc.",
- [3]byte{60, 229, 166}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{60, 229, 180}: "KIDASEN INDUSTRIA E COMERCIO DE ANTENAS LTDA",
- [3]byte{60, 230, 36}: "LG Display",
- [3]byte{60, 234, 79}: "2Wire Inc",
- [3]byte{60, 234, 251}: "NSE AG",
- [3]byte{60, 239, 140}: "Zhejiang Dahua Technology Co., Ltd.",
- [3]byte{60, 243, 146}: "Virtualtek. Co. Ltd",
- [3]byte{60, 245, 44}: "DSPECIALISTS GmbH",
- [3]byte{60, 245, 145}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{60, 247, 42}: "Nokia Corporation",
- [3]byte{60, 247, 72}: "Shenzhen Linsn Technology Development Co.,Ltd",
- [3]byte{60, 247, 164}: "Samsung Electronics Co.,Ltd",
- [3]byte{60, 248, 8}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{60, 248, 98}: "Intel Corporate",
- [3]byte{60, 250, 67}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{60, 251, 150}: "Emcraft Systems LLC",
- [3]byte{60, 253, 254}: "Intel Corporate",
- [3]byte{64, 0, 224}: "Derek(Shaoguan)Limited",
- [3]byte{64, 1, 7}: "Arista Corp",
- [3]byte{64, 1, 122}: "Cisco Systems, Inc",
- [3]byte{64, 1, 198}: "3COM EUROPE LTD",
- [3]byte{64, 4, 12}: "A&T",
- [3]byte{64, 7, 192}: "Railtec Systems GmbH",
- [3]byte{64, 13, 16}: "ARRIS Group, Inc.",
- [3]byte{64, 14, 103}: "Tremol Ltd.",
- [3]byte{64, 14, 133}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{64, 17, 220}: "Sonance",
- [3]byte{64, 18, 228}: "Compass-EOS",
- [3]byte{64, 19, 217}: "Global ES",
- [3]byte{64, 21, 151}: "Protect America, Inc.",
- [3]byte{64, 22, 59}: "Samsung Electronics Co.,Ltd",
- [3]byte{64, 22, 126}: "ASUSTek COMPUTER INC.",
- [3]byte{64, 22, 159}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{64, 22, 250}: "EKM Metering",
- [3]byte{64, 24, 177}: "Aerohive Networks Inc.",
- [3]byte{64, 24, 215}: "Smartronix, Inc.",
- [3]byte{64, 27, 95}: "Weifang GoerTek Technology Co.,Ltd.",
- [3]byte{64, 29, 89}: "Biometric Associates, LP",
- [3]byte{64, 34, 237}: "Digital Projection Ltd",
- [3]byte{64, 37, 194}: "Intel Corporate",
- [3]byte{64, 39, 11}: "Mobileeco Co., Ltd",
- [3]byte{64, 40, 20}: "RFI Engineering",
- [3]byte{64, 43, 161}: "Sony Mobile Communications AB",
- [3]byte{64, 44, 244}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{64, 46, 40}: "MiXTelematics",
- [3]byte{64, 48, 4}: "Apple, Inc.",
- [3]byte{64, 48, 103}: "Conlog (Pty) Ltd",
- [3]byte{64, 51, 26}: "Apple, Inc.",
- [3]byte{64, 51, 108}: "Godrej & Boyce Mfg. co. ltd",
- [3]byte{64, 55, 173}: "Macro Image Technology, Inc.",
- [3]byte{64, 60, 252}: "Apple, Inc.",
- [3]byte{64, 61, 236}: "HUMAX Co., Ltd.",
- [3]byte{64, 63, 140}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{64, 64, 34}: "ZIV",
- [3]byte{64, 64, 107}: "Icomera",
- [3]byte{64, 64, 167}: "Sony Mobile Communications AB",
- [3]byte{64, 66, 41}: "Layer3TV, Inc",
- [3]byte{64, 69, 218}: "Spreadtrum Communications (Shanghai) Co., Ltd.",
- [3]byte{64, 71, 106}: "AG Acquisition Corp. d.b.a. ASTRO Gaming",
- [3]byte{64, 72, 253}: "IEEE Registration Authority",
- [3]byte{64, 73, 15}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{64, 73, 138}: "Synapticon GmbH",
- [3]byte{64, 74, 3}: "Zyxel Communications Corporation",
- [3]byte{64, 74, 24}: "Addrek Smart Solutions",
- [3]byte{64, 74, 212}: "Widex A/S",
- [3]byte{64, 77, 127}: "Apple, Inc.",
- [3]byte{64, 77, 142}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{64, 78, 54}: "HTC Corporation",
- [3]byte{64, 78, 235}: "Higher Way Electronic Co., Ltd.",
- [3]byte{64, 80, 224}: "Milton Security Group LLC",
- [3]byte{64, 81, 108}: "Grandex International Corporation",
- [3]byte{64, 82, 13}: "Pico Technology",
- [3]byte{64, 84, 228}: "Wearsafe Labs Inc",
- [3]byte{64, 85, 57}: "Cisco Systems, Inc",
- [3]byte{64, 86, 12}: "In Home Displays Ltd",
- [3]byte{64, 86, 45}: "Smartron India Pvt ltd",
- [3]byte{64, 90, 155}: "ANOVO",
- [3]byte{64, 92, 253}: "Dell Inc.",
- [3]byte{64, 93, 130}: "NETGEAR",
- [3]byte{64, 94, 225}: "Shenzhen H&T Intelligent Control Co.,Ltd.",
- [3]byte{64, 95, 190}: "RIM",
- [3]byte{64, 95, 194}: "Texas Instruments",
- [3]byte{64, 96, 90}: "Hawkeye Tech Co. Ltd",
- [3]byte{64, 97, 134}: "MICRO-STAR INT'L CO.,LTD",
- [3]byte{64, 97, 142}: "Stella-Green Co",
- [3]byte{64, 98, 182}: "Tele system communication",
- [3]byte{64, 101, 163}: "Sagemcom Broadband SAS",
- [3]byte{64, 102, 122}: "mediola - connected living AG",
- [3]byte{64, 104, 38}: "Thales UK Limited",
- [3]byte{64, 106, 142}: "Hangzhou Puwell OE Tech Ltd.",
- [3]byte{64, 106, 171}: "RIM",
- [3]byte{64, 108, 143}: "Apple, Inc.",
- [3]byte{64, 111, 42}: "BlackBerry RTS",
- [3]byte{64, 112, 9}: "ARRIS Group, Inc.",
- [3]byte{64, 112, 74}: "Power Idea Technology Limited",
- [3]byte{64, 112, 116}: "Life Technology (China) Co., Ltd",
- [3]byte{64, 113, 131}: "Juniper Networks",
- [3]byte{64, 116, 150}: "aFUN TECHNOLOGY INC.",
- [3]byte{64, 120, 106}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{64, 120, 117}: "IMBEL - Industria de Material Belico do Brasil",
- [3]byte{64, 122, 128}: "Nokia Corporation",
- [3]byte{64, 123, 27}: "Mettle Networks Inc.",
- [3]byte{64, 124, 125}: "Nokia",
- [3]byte{64, 125, 15}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{64, 127, 224}: "Glory Star Technics (ShenZhen) Limited",
- [3]byte{64, 130, 86}: "Continental Automotive GmbH",
- [3]byte{64, 131, 222}: "Zebra Technologies Inc",
- [3]byte{64, 132, 147}: "Clavister AB",
- [3]byte{64, 134, 46}: "JDM MOBILE INTERNET SOLUTION CO., LTD.",
- [3]byte{64, 136, 5}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{64, 136, 224}: "Beijing Ereneben Information Technology Limited Shenzhen Branch",
- [3]byte{64, 138, 154}: "TITENG CO., Ltd.",
- [3]byte{64, 139, 7}: "Actiontec Electronics, Inc",
- [3]byte{64, 139, 246}: "Shenzhen TCL New Technology Co., Ltd",
- [3]byte{64, 141, 92}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{64, 149, 88}: "Aisino Corporation",
- [3]byte{64, 149, 189}: "NTmore.Co.,Ltd",
- [3]byte{64, 151, 209}: "BK Electronics cc",
- [3]byte{64, 152, 76}: "Casacom Solutions AG",
- [3]byte{64, 152, 78}: "Texas Instruments",
- [3]byte{64, 152, 123}: "Aisino Corporation",
- [3]byte{64, 153, 34}: "AzureWave Technology Inc.",
- [3]byte{64, 155, 13}: "Shenzhen Yourf Kwan Industrial Co., Ltd",
- [3]byte{64, 155, 205}: "D-Link International",
- [3]byte{64, 156, 40}: "Apple, Inc.",
- [3]byte{64, 159, 56}: "AzureWave Technology Inc.",
- [3]byte{64, 159, 135}: "Jide Technology (Hong Kong) Limited",
- [3]byte{64, 159, 199}: "BAEKCHUN I&C Co., Ltd.",
- [3]byte{64, 163, 204}: "Intel Corporate",
- [3]byte{64, 165, 239}: "Shenzhen Four Seas Global Link Network Technology Co., Ltd.",
- [3]byte{64, 166, 119}: "Juniper Networks",
- [3]byte{64, 166, 164}: "PassivSystems Ltd",
- [3]byte{64, 166, 217}: "Apple, Inc.",
- [3]byte{64, 166, 232}: "Cisco Systems, Inc",
- [3]byte{64, 168, 240}: "Hewlett Packard",
- [3]byte{64, 169, 63}: "Private",
- [3]byte{64, 172, 141}: "Data Management, Inc.",
- [3]byte{64, 176, 52}: "Hewlett Packard",
- [3]byte{64, 176, 250}: "LG Electronics (Mobile Communications)",
- [3]byte{64, 178, 200}: "Nortel Networks",
- [3]byte{64, 179, 149}: "Apple, Inc.",
- [3]byte{64, 179, 205}: "Chiyoda Electronics Co.,Ltd.",
- [3]byte{64, 179, 252}: "Logital Co. Limited",
- [3]byte{64, 180, 205}: "Amazon Technologies Inc.",
- [3]byte{64, 180, 240}: "Juniper Networks",
- [3]byte{64, 182, 136}: "LEGIC Identsystems AG",
- [3]byte{64, 182, 177}: "SUNGSAM CO,.Ltd",
- [3]byte{64, 183, 243}: "ARRIS Group, Inc.",
- [3]byte{64, 184, 55}: "Sony Mobile Communications AB",
- [3]byte{64, 184, 154}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{64, 185, 60}: "Hewlett Packard Enterprise",
- [3]byte{64, 186, 97}: "ARIMA Communications Corp.",
- [3]byte{64, 188, 115}: "Cronoplast S.L.",
- [3]byte{64, 188, 139}: "itelio GmbH",
- [3]byte{64, 189, 158}: "Physio-Control, Inc",
- [3]byte{64, 191, 23}: "Digistar Telecom. SA",
- [3]byte{64, 194, 69}: "Shenzhen Hexicom Technology Co., Ltd.",
- [3]byte{64, 196, 214}: "ChongQing Camyu Technology Development Co.,Ltd.",
- [3]byte{64, 198, 42}: "Shanghai Jing Ren Electronic Technology Co., Ltd.",
- [3]byte{64, 199, 41}: "Sagemcom Broadband SAS",
- [3]byte{64, 199, 201}: "Naviit Inc.",
- [3]byte{64, 200, 203}: "AM Telecom co., Ltd.",
- [3]byte{64, 203, 168}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{64, 205, 58}: "Z3 Technology",
- [3]byte{64, 206, 36}: "Cisco Systems, Inc",
- [3]byte{64, 210, 138}: "Nintendo Co., Ltd.",
- [3]byte{64, 211, 45}: "Apple, Inc.",
- [3]byte{64, 211, 87}: "Ison Technology Co., Ltd.",
- [3]byte{64, 211, 174}: "Samsung Electronics Co.,Ltd",
- [3]byte{64, 212, 14}: "Biodata Ltd",
- [3]byte{64, 213, 89}: "MICRO S.E.R.I.",
- [3]byte{64, 214, 60}: "Equitech Industrial(DongGuan)Co.,Ltd",
- [3]byte{64, 216, 85}: "IEEE Registration Authority",
- [3]byte{64, 226, 48}: "AzureWave Technology Inc.",
- [3]byte{64, 227, 214}: "Aruba Networks",
- [3]byte{64, 231, 48}: "DEY Storage Systems, Inc.",
- [3]byte{64, 231, 147}: "Shenzhen Siviton Technology Co.,Ltd",
- [3]byte{64, 234, 206}: "FOUNDER BROADBAND NETWORK SERVICE CO.,LTD",
- [3]byte{64, 236, 248}: "Siemens AG",
- [3]byte{64, 237, 152}: "IEEE Registration Authority",
- [3]byte{64, 239, 76}: "Fihonest communication co.,Ltd",
- [3]byte{64, 240, 47}: "Liteon Technology Corporation",
- [3]byte{64, 241, 76}: "ISE Europe SPRL",
- [3]byte{64, 242, 1}: "Sagemcom Broadband SAS",
- [3]byte{64, 242, 233}: "IBM",
- [3]byte{64, 243, 8}: "Murata Manufacturing Co., Ltd.",
- [3]byte{64, 243, 133}: "IEEE Registration Authority",
- [3]byte{64, 244, 7}: "Nintendo Co., Ltd.",
- [3]byte{64, 244, 19}: "Rubezh",
- [3]byte{64, 244, 32}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{64, 244, 236}: "Cisco Systems, Inc",
- [3]byte{64, 245, 46}: "Leica Microsystems (Schweiz) AG",
- [3]byte{64, 250, 127}: "Preh Car Connect GmbH",
- [3]byte{64, 252, 137}: "ARRIS Group, Inc.",
- [3]byte{64, 254, 13}: "MAXIO",
- [3]byte{68, 0, 16}: "Apple, Inc.",
- [3]byte{68, 3, 44}: "Intel Corporate",
- [3]byte{68, 3, 167}: "Cisco Systems, Inc",
- [3]byte{68, 4, 68}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{68, 9, 184}: "Salcomp (Shenzhen) CO., LTD.",
- [3]byte{68, 12, 253}: "NetMan Co., Ltd.",
- [3]byte{68, 17, 2}: "EDMI Europe Ltd",
- [3]byte{68, 17, 194}: "Telegartner Karl Gartner GmbH",
- [3]byte{68, 19, 25}: "WKK TECHNOLOGY LTD.",
- [3]byte{68, 20, 65}: "AudioControl Inc.",
- [3]byte{68, 24, 79}: "Fitview",
- [3]byte{68, 25, 182}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
- [3]byte{68, 28, 168}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{68, 30, 145}: "ARVIDA Intelligent Electronics Technology Co.,Ltd.",
- [3]byte{68, 30, 161}: "Hewlett Packard",
- [3]byte{68, 35, 170}: "Farmage Co., Ltd.",
- [3]byte{68, 37, 187}: "Bamboo Entertainment Corporation",
- [3]byte{68, 41, 56}: "NietZsche enterprise Co.Ltd.",
- [3]byte{68, 42, 96}: "Apple, Inc.",
- [3]byte{68, 42, 255}: "E3 Technology, Inc.",
- [3]byte{68, 43, 3}: "Cisco Systems, Inc",
- [3]byte{68, 44, 5}: "AMPAK Technology, Inc.",
- [3]byte{68, 49, 146}: "Hewlett Packard",
- [3]byte{68, 50, 42}: "Avaya Inc",
- [3]byte{68, 50, 200}: "Technicolor CH USA Inc.",
- [3]byte{68, 51, 76}: "Shenzhen Bilian electronic CO.,LTD",
- [3]byte{68, 52, 143}: "MXT INDUSTRIAL LTDA",
- [3]byte{68, 53, 111}: "Neterix",
- [3]byte{68, 55, 8}: "MRV Comunications",
- [3]byte{68, 55, 25}: "2 Save Energy Ltd",
- [3]byte{68, 55, 111}: "Young Electric Sign Co",
- [3]byte{68, 55, 230}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{68, 56, 57}: "Cumulus Networks, inc",
- [3]byte{68, 57, 196}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{68, 60, 156}: "Pintsch Tiefenbach GmbH",
- [3]byte{68, 61, 33}: "Nuvolt",
- [3]byte{68, 62, 178}: "DEOTRON Co., LTD.",
- [3]byte{68, 68, 80}: "OttoQ",
- [3]byte{68, 72, 145}: "HDMI Licensing, LLC",
- [3]byte{68, 72, 193}: "Hewlett Packard Enterprise",
- [3]byte{68, 74, 101}: "Silverflare Ltd.",
- [3]byte{68, 74, 176}: "Zhejiang Moorgen Intelligence Technology Co., Ltd",
- [3]byte{68, 76, 12}: "Apple, Inc.",
- [3]byte{68, 76, 168}: "Arista Networks",
- [3]byte{68, 78, 26}: "Samsung Electronics Co.,Ltd",
- [3]byte{68, 78, 109}: "AVM Audiovisuelles Marketing und Computersysteme GmbH",
- [3]byte{68, 79, 94}: "Pan Studios Co.,Ltd.",
- [3]byte{68, 81, 219}: "Raytheon BBN Technologies",
- [3]byte{68, 84, 192}: "Thompson Aerospace",
- [3]byte{68, 85, 177}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{68, 86, 141}: "PNC Technologies Co., Ltd.",
- [3]byte{68, 86, 183}: "Spawn Labs, Inc",
- [3]byte{68, 88, 41}: "Cisco SPVTG",
- [3]byte{68, 89, 159}: "Criticare Systems, Inc",
- [3]byte{68, 94, 205}: "Razer Inc",
- [3]byte{68, 94, 243}: "Tonalite Holding B.V.",
- [3]byte{68, 95, 122}: "Shihlin Electric & Engineering Corp.",
- [3]byte{68, 95, 140}: "Intercel Group Limited",
- [3]byte{68, 97, 50}: "ecobee inc",
- [3]byte{68, 97, 156}: "FONsystem co. ltd.",
- [3]byte{68, 98, 70}: "Comat AG",
- [3]byte{68, 101, 13}: "Amazon Technologies Inc.",
- [3]byte{68, 101, 106}: "Mega Video Electronic(HK) Industry Co., Ltd",
- [3]byte{68, 102, 110}: "IP-LINE",
- [3]byte{68, 103, 85}: "Orbit Irrigation",
- [3]byte{68, 104, 171}: "JUIN COMPANY, LIMITED",
- [3]byte{68, 106, 46}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{68, 106, 183}: "ARRIS Group, Inc.",
- [3]byte{68, 108, 36}: "Reallin Electronic Co.,Ltd",
- [3]byte{68, 109, 87}: "Liteon Technology Corporation",
- [3]byte{68, 109, 108}: "Samsung Electronics Co.,Ltd",
- [3]byte{68, 110, 229}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{68, 112, 11}: "IFFU",
- [3]byte{68, 112, 152}: "MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED",
- [3]byte{68, 115, 214}: "Logitech",
- [3]byte{68, 116, 108}: "Sony Mobile Communications AB",
- [3]byte{68, 120, 62}: "Samsung Electronics Co.,Ltd",
- [3]byte{68, 123, 187}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{68, 123, 196}: "DualShine Technology(SZ)Co.,Ltd",
- [3]byte{68, 124, 127}: "Innolight Technology Corporation",
- [3]byte{68, 125, 165}: "VTION INFORMATION TECHNOLOGY (FUJIAN) CO.,LTD",
- [3]byte{68, 126, 118}: "Trek Technology (S) Pte Ltd",
- [3]byte{68, 126, 149}: "Alpha and Omega, Inc",
- [3]byte{68, 127, 119}: "Connected Home",
- [3]byte{68, 128, 235}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{68, 130, 229}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{68, 131, 18}: "Star-Net",
- [3]byte{68, 133, 0}: "Intel Corporate",
- [3]byte{68, 134, 193}: "Siemens Low Voltage & Products",
- [3]byte{68, 135, 35}: "HOYA SERVICE CORPORATION",
- [3]byte{68, 135, 252}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{68, 136, 203}: "Camco Technologies NV",
- [3]byte{68, 138, 91}: "Micro-Star INT'L CO., LTD.",
- [3]byte{68, 140, 82}: "KTIS CO., Ltd",
- [3]byte{68, 142, 18}: "DT Research, Inc.",
- [3]byte{68, 142, 129}: "VIG",
- [3]byte{68, 143, 23}: "Samsung Electronics Co., Ltd. ARTIK",
- [3]byte{68, 145, 96}: "Murata Manufacturing Co., Ltd.",
- [3]byte{68, 145, 219}: "Shanghai Huaqin Telecom Technology Co.,Ltd",
- [3]byte{68, 148, 252}: "NETGEAR",
- [3]byte{68, 149, 250}: "Qingdao Santong Digital Technology Co.Ltd",
- [3]byte{68, 150, 43}: "Aidon Oy",
- [3]byte{68, 151, 90}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{68, 155, 120}: "The Now Factory",
- [3]byte{68, 156, 181}: "Alcomp, Inc",
- [3]byte{68, 159, 127}: "DataCore Software Corporation",
- [3]byte{68, 164, 45}: "TCT mobile ltd",
- [3]byte{68, 166, 137}: "PROMAX ELECTRONICA SA",
- [3]byte{68, 166, 229}: "THINKING TECHNOLOGY CO.,LTD",
- [3]byte{68, 167, 207}: "Murata Manufacturing Co., Ltd.",
- [3]byte{68, 168, 66}: "Dell Inc.",
- [3]byte{68, 168, 194}: "SEWOO TECH CO., LTD",
- [3]byte{68, 170, 39}: "udworks Co., Ltd.",
- [3]byte{68, 170, 80}: "Juniper Networks",
- [3]byte{68, 170, 232}: "Nanotec Electronic GmbH & Co. KG",
- [3]byte{68, 170, 245}: "ARRIS Group, Inc.",
- [3]byte{68, 173, 25}: "XINGFEI (H.K)LIMITED",
- [3]byte{68, 173, 217}: "Cisco Systems, Inc",
- [3]byte{68, 179, 45}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{68, 179, 130}: "Kuang-chi Institute of Advanced Technology",
- [3]byte{68, 180, 18}: "SIUS AG",
- [3]byte{68, 186, 70}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{68, 191, 227}: "Shenzhen Longtech Electronics Co.,Ltd",
- [3]byte{68, 193, 92}: "Texas Instruments",
- [3]byte{68, 194, 51}: "Guangzhou Comet Technology Development Co.Ltd",
- [3]byte{68, 195, 6}: "SIFROM Inc.",
- [3]byte{68, 195, 70}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{68, 195, 155}: "OOO RUBEZH NPO",
- [3]byte{68, 196, 169}: "Opticom Communication, LLC",
- [3]byte{68, 197, 111}: "NGN Easy Satfinder (Tianjin) Electronic Co., Ltd",
- [3]byte{68, 198, 155}: "Wuhan Feng Tian Information Network CO.,LTD",
- [3]byte{68, 200, 116}: "China Mobile Group Device Co.,Ltd.",
- [3]byte{68, 201, 162}: "Greenwald Industries",
- [3]byte{68, 205, 14}: "FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD.",
- [3]byte{68, 206, 125}: "SFR",
- [3]byte{68, 209, 94}: "Shanghai Kingto Information Technology Ltd",
- [3]byte{68, 209, 250}: "Shenzhen Yunlink Technology Co., Ltd",
- [3]byte{68, 210, 68}: "Seiko Epson Corporation",
- [3]byte{68, 210, 202}: "Anvia TV Oy",
- [3]byte{68, 211, 202}: "Cisco Systems, Inc",
- [3]byte{68, 212, 55}: "Inteno Broadband Technology AB",
- [3]byte{68, 212, 224}: "Sony Mobile Communications AB",
- [3]byte{68, 213, 165}: "AddOn Computer",
- [3]byte{68, 214, 61}: "Talari Networks",
- [3]byte{68, 214, 225}: "Snuza International Pty. Ltd.",
- [3]byte{68, 216, 50}: "AzureWave Technology Inc.",
- [3]byte{68, 216, 132}: "Apple, Inc.",
- [3]byte{68, 217, 231}: "Ubiquiti Networks Inc.",
- [3]byte{68, 220, 145}: "PLANEX COMMUNICATIONS INC.",
- [3]byte{68, 220, 203}: "SEMINDIA SYSTEMS PVT LTD",
- [3]byte{68, 224, 142}: "Cisco SPVTG",
- [3]byte{68, 225, 55}: "ARRIS Group, Inc.",
- [3]byte{68, 228, 154}: "OMNITRONICS PTY LTD",
- [3]byte{68, 228, 217}: "Cisco Systems, Inc",
- [3]byte{68, 232, 165}: "Myreka Technologies Sdn. Bhd.",
- [3]byte{68, 233, 221}: "Sagemcom Broadband SAS",
- [3]byte{68, 234, 75}: "Actlas Inc.",
- [3]byte{68, 234, 216}: "Texas Instruments",
- [3]byte{68, 237, 87}: "Longicorn, inc.",
- [3]byte{68, 238, 2}: "MTI Ltd.",
- [3]byte{68, 238, 48}: "Budelmann Elektronik GmbH",
- [3]byte{68, 240, 52}: "Kaonmedia CO., LTD.",
- [3]byte{68, 244, 54}: "zte corporation",
- [3]byte{68, 244, 89}: "Samsung Electronics Co.,Ltd",
- [3]byte{68, 244, 119}: "Juniper Networks",
- [3]byte{68, 248, 73}: "Union Pacific Railroad",
- [3]byte{68, 251, 66}: "Apple, Inc.",
- [3]byte{68, 253, 163}: "Everysight LTD.",
- [3]byte{72, 0, 49}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 0, 51}: "Technicolor CH USA Inc.",
- [3]byte{72, 2, 42}: "B-Link Electronic Limited",
- [3]byte{72, 3, 98}: "DESAY ELECTRONICS(HUIZHOU)CO.,LTD",
- [3]byte{72, 6, 106}: "Tempered Networks, Inc.",
- [3]byte{72, 12, 73}: "NAKAYO Inc",
- [3]byte{72, 14, 236}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{72, 15, 207}: "Hewlett Packard",
- [3]byte{72, 16, 99}: "NTT Innovation Institute, Inc.",
- [3]byte{72, 18, 73}: "Luxcom Technologies Inc.",
- [3]byte{72, 19, 126}: "Samsung Electronics Co.,Ltd",
- [3]byte{72, 19, 243}: "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
- [3]byte{72, 23, 76}: "MicroPower technologies",
- [3]byte{72, 24, 66}: "Shanghai Winaas Co. Equipment Co. Ltd.",
- [3]byte{72, 26, 132}: "Pointer Telocation Ltd",
- [3]byte{72, 27, 210}: "Intron Scientific co., ltd.",
- [3]byte{72, 29, 112}: "Cisco SPVTG",
- [3]byte{72, 38, 232}: "Tek-Air Systems, Inc.",
- [3]byte{72, 39, 234}: "Samsung Electronics Co.,Ltd",
- [3]byte{72, 40, 47}: "zte corporation",
- [3]byte{72, 44, 234}: "Motorola Inc Business Light Radios",
- [3]byte{72, 51, 221}: "ZENNIO AVANCE Y TECNOLOGIA, S.L.",
- [3]byte{72, 52, 61}: "IEP GmbH",
- [3]byte{72, 54, 95}: "Wintecronics Ltd.",
- [3]byte{72, 57, 116}: "Proware Technologies Co., Ltd.",
- [3]byte{72, 59, 56}: "Apple, Inc.",
- [3]byte{72, 60, 12}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 61, 50}: "Syscor Controls &amp; Automation",
- [3]byte{72, 67, 90}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 67, 124}: "Apple, Inc.",
- [3]byte{72, 68, 135}: "Cisco SPVTG",
- [3]byte{72, 68, 247}: "Samsung Electronics Co.,Ltd",
- [3]byte{72, 69, 32}: "Intel Corporate",
- [3]byte{72, 70, 241}: "Uros Oy",
- [3]byte{72, 70, 251}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 73, 199}: "Samsung Electronics Co.,Ltd",
- [3]byte{72, 75, 170}: "Apple, Inc.",
- [3]byte{72, 77, 126}: "Dell Inc.",
- [3]byte{72, 80, 115}: "Microsoft Corporation",
- [3]byte{72, 81, 183}: "Intel Corporate",
- [3]byte{72, 82, 97}: "SOREEL",
- [3]byte{72, 84, 21}: "NET RULES TECNOLOGIA EIRELI",
- [3]byte{72, 85, 92}: "Wu Qi Technologies,Inc.",
- [3]byte{72, 85, 95}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{72, 87, 221}: "Facebook Inc",
- [3]byte{72, 89, 41}: "LG Electronics (Mobile Communications)",
- [3]byte{72, 89, 164}: "zte corporation",
- [3]byte{72, 90, 63}: "WISOL",
- [3]byte{72, 90, 182}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{72, 91, 57}: "ASUSTek COMPUTER INC.",
- [3]byte{72, 93, 54}: "Verizon",
- [3]byte{72, 93, 96}: "AzureWave Technology Inc.",
- [3]byte{72, 96, 188}: "Apple, Inc.",
- [3]byte{72, 97, 163}: "Concern Axion JSC",
- [3]byte{72, 98, 118}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 101, 238}: "IEEE Registration Authority",
- [3]byte{72, 107, 44}: "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
- [3]byte{72, 107, 145}: "Fleetwood Group Inc.",
- [3]byte{72, 109, 187}: "Vestel Elektronik San ve Tic. A.Ş.",
- [3]byte{72, 110, 115}: "Pica8, Inc.",
- [3]byte{72, 110, 251}: "Davit System Technology Co., Ltd.",
- [3]byte{72, 111, 210}: "StorSimple Inc",
- [3]byte{72, 113, 25}: "SGB GROUP LTD.",
- [3]byte{72, 116, 110}: "Apple, Inc.",
- [3]byte{72, 118, 4}: "Private",
- [3]byte{72, 122, 85}: "ALE International",
- [3]byte{72, 122, 218}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{72, 123, 107}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 125, 46}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{72, 130, 68}: "Life Fitness / Div. of Brunswick",
- [3]byte{72, 130, 242}: "Appel Elektronik GmbH",
- [3]byte{72, 131, 199}: "Sagemcom Broadband SAS",
- [3]byte{72, 134, 232}: "Microsoft Corporation",
- [3]byte{72, 136, 3}: "ManTechnology Inc.",
- [3]byte{72, 136, 202}: "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
- [3]byte{72, 138, 210}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{72, 141, 54}: "Arcadyan Corporation",
- [3]byte{72, 142, 66}: "DIGALOG GmbH",
- [3]byte{72, 142, 239}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 145, 83}: "Weinmann Geräte für Medizin GmbH + Co. KG",
- [3]byte{72, 145, 246}: "Shenzhen Reach software technology CO.,LTD",
- [3]byte{72, 154, 66}: "Technomate Ltd",
- [3]byte{72, 155, 226}: "SCI Innovations Ltd",
- [3]byte{72, 157, 24}: "Flashbay Limited",
- [3]byte{72, 157, 36}: "BlackBerry RTS",
- [3]byte{72, 161, 149}: "Apple, Inc.",
- [3]byte{72, 162, 45}: "Shenzhen Huaxuchang Telecom Technology Co.,Ltd",
- [3]byte{72, 162, 183}: "Kodofon JSC",
- [3]byte{72, 163, 128}: "Gionee Communication Equipment Co.,Ltd.",
- [3]byte{72, 166, 210}: "GJsun Optical Science and Tech Co.,Ltd.",
- [3]byte{72, 167, 78}: "zte corporation",
- [3]byte{72, 169, 210}: "Wistron Neweb Corporation",
- [3]byte{72, 170, 93}: "Store Electronic Systems",
- [3]byte{72, 173, 8}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 178, 83}: "Marketaxess Corporation",
- [3]byte{72, 181, 167}: "Glory Horse Industries Ltd.",
- [3]byte{72, 182, 32}: "ROLI Ltd.",
- [3]byte{72, 184, 222}: "HOMEWINS TECHNOLOGY CO.,LTD.",
- [3]byte{72, 185, 119}: "PulseOn Oy",
- [3]byte{72, 185, 194}: "Teletics Inc.",
- [3]byte{72, 186, 78}: "Hewlett Packard",
- [3]byte{72, 188, 166}: "\u200bASUNG TECHNO CO.,Ltd",
- [3]byte{72, 190, 45}: "Symanitron",
- [3]byte{72, 191, 107}: "Apple, Inc.",
- [3]byte{72, 191, 116}: "Baicells Technologies Co.,LTD",
- [3]byte{72, 192, 73}: "Broad Telecom SA",
- [3]byte{72, 192, 147}: "Xirrus, Inc.",
- [3]byte{72, 193, 172}: "PLANTRONICS, INC.",
- [3]byte{72, 197, 141}: "Lear Corporation GmbH",
- [3]byte{72, 198, 99}: "GTO Access Systems LLC",
- [3]byte{72, 200, 98}: "Simo Wireless,Inc.",
- [3]byte{72, 200, 182}: "SysTec GmbH",
- [3]byte{72, 203, 110}: "Cello Electronics (UK) Ltd",
- [3]byte{72, 208, 207}: "Universal Electronics, Inc.",
- [3]byte{72, 209, 142}: "Metis Communication Co.,Ltd",
- [3]byte{72, 210, 36}: "Liteon Technology Corporation",
- [3]byte{72, 211, 67}: "ARRIS Group, Inc.",
- [3]byte{72, 211, 93}: "Private",
- [3]byte{72, 213, 57}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 213, 76}: "Jeda Networks",
- [3]byte{72, 214, 213}: "Google, Inc.",
- [3]byte{72, 215, 5}: "Apple, Inc.",
- [3]byte{72, 215, 255}: "BLANKOM Antennentechnik GmbH",
- [3]byte{72, 216, 85}: "Telvent",
- [3]byte{72, 216, 254}: "ClarIDy Solutions, Inc.",
- [3]byte{72, 218, 150}: "Eddy Smart Home Solutions Inc.",
- [3]byte{72, 219, 80}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 220, 251}: "Nokia Corporation",
- [3]byte{72, 223, 28}: "Wuhan NEC Fibre Optic Communications industry Co. Ltd",
- [3]byte{72, 223, 55}: "Hewlett Packard Enterprise",
- [3]byte{72, 225, 175}: "Vity",
- [3]byte{72, 226, 68}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{72, 233, 241}: "Apple, Inc.",
- [3]byte{72, 234, 99}: "Zhejiang Uniview Technologies Co., Ltd.",
- [3]byte{72, 235, 48}: "ETERNA TECHNOLOGY, INC.",
- [3]byte{72, 236, 91}: "Nokia",
- [3]byte{72, 237, 128}: "daesung eltec",
- [3]byte{72, 238, 7}: "Silver Palm Technologies LLC",
- [3]byte{72, 238, 12}: "D-Link International",
- [3]byte{72, 238, 134}: "UTStarcom (China) Co.,Ltd",
- [3]byte{72, 240, 123}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{72, 242, 48}: "Ubizcore Co.,LTD",
- [3]byte{72, 243, 23}: "Private",
- [3]byte{72, 244, 125}: "TechVision Holding Internation Limited",
- [3]byte{72, 247, 192}: "Technicolor CH USA Inc.",
- [3]byte{72, 247, 241}: "Nokia",
- [3]byte{72, 248, 179}: "Cisco-Linksys, LLC",
- [3]byte{72, 248, 225}: "Nokia",
- [3]byte{72, 249, 37}: "Maestronic",
- [3]byte{72, 249, 124}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{72, 252, 182}: "LAVA INTERNATIONAL(H.K) LIMITED",
- [3]byte{72, 252, 184}: "Woodstream Corporation",
- [3]byte{72, 253, 142}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{72, 254, 234}: "HOMA B.V.",
- [3]byte{76, 0, 130}: "Cisco Systems, Inc",
- [3]byte{76, 2, 46}: "CMR KOREA CO., LTD",
- [3]byte{76, 2, 137}: "LEX COMPUTECH CO., LTD",
- [3]byte{76, 6, 138}: "Basler Electric Company",
- [3]byte{76, 7, 201}: "COMPUTER OFFICE Co.,Ltd.",
- [3]byte{76, 9, 180}: "zte corporation",
- [3]byte{76, 9, 212}: "Arcadyan Technology Corporation",
- [3]byte{76, 11, 58}: "TCT mobile ltd",
- [3]byte{76, 11, 190}: "Microsoft",
- [3]byte{76, 13, 238}: "JABIL CIRCUIT (SHANGHAI) LTD.",
- [3]byte{76, 15, 110}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{76, 15, 199}: "Earda Electronics Co.,Ltd",
- [3]byte{76, 17, 191}: "Zhejiang Dahua Technology Co., Ltd.",
- [3]byte{76, 19, 101}: "Emplus Technologies",
- [3]byte{76, 20, 128}: "NOREGON SYSTEMS, INC",
- [3]byte{76, 20, 163}: "TCL Technoly Electronics (Huizhou) Co., Ltd.",
- [3]byte{76, 22, 148}: "shenzhen sibituo Technology Co., Ltd",
- [3]byte{76, 22, 241}: "zte corporation",
- [3]byte{76, 22, 252}: "Juniper Networks",
- [3]byte{76, 23, 235}: "Sagemcom Broadband SAS",
- [3]byte{76, 24, 154}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{76, 26, 58}: "PRIMA Research And Production Enterprise Ltd.",
- [3]byte{76, 26, 61}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{76, 26, 149}: "Novakon Co., Ltd.",
- [3]byte{76, 31, 204}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{76, 33, 208}: "Sony Mobile Communications AB",
- [3]byte{76, 34, 88}: "cozybit, Inc.",
- [3]byte{76, 37, 120}: "Nokia Corporation",
- [3]byte{76, 38, 231}: "Welgate Co., Ltd.",
- [3]byte{76, 44, 128}: "Beijing Skyway Technologies Co.,Ltd",
- [3]byte{76, 44, 131}: "Zhejiang KaNong Network Technology Co.,Ltd.",
- [3]byte{76, 47, 157}: "ICM Controls",
- [3]byte{76, 48, 137}: "Thales Transportation Systems GmbH",
- [3]byte{76, 50, 45}: "TELEDATA NETWORKS",
- [3]byte{76, 50, 117}: "Apple, Inc.",
- [3]byte{76, 50, 217}: "M Rutty Holdings Pty. Ltd.",
- [3]byte{76, 51, 78}: "HIGHTECH",
- [3]byte{76, 52, 136}: "Intel Corporate",
- [3]byte{76, 56, 213}: "MITAC COMPUTING TECHNOLOGY CORPORATION",
- [3]byte{76, 56, 216}: "ARRIS Group, Inc.",
- [3]byte{76, 57, 9}: "HPL Electric & Power Private Limited",
- [3]byte{76, 57, 16}: "Newtek Electronics co., Ltd.",
- [3]byte{76, 59, 116}: "VOGTEC(H.K.) Co., Ltd",
- [3]byte{76, 60, 22}: "Samsung Electronics Co.,Ltd",
- [3]byte{76, 72, 218}: "Beijing Autelan Technology Co.,Ltd",
- [3]byte{76, 73, 227}: "Xiaomi Communications Co Ltd",
- [3]byte{76, 75, 104}: "Mobile Device, Inc.",
- [3]byte{76, 78, 3}: "TCT mobile ltd",
- [3]byte{76, 78, 53}: "Cisco Systems, Inc",
- [3]byte{76, 82, 98}: "Fujitsu Technology Solutions GmbH",
- [3]byte{76, 84, 39}: "Linepro Sp. z o.o.",
- [3]byte{76, 84, 153}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{76, 85, 133}: "Hamilton Systems",
- [3]byte{76, 85, 184}: "Turkcell Teknoloji",
- [3]byte{76, 85, 204}: "Zentri Pty Ltd",
- [3]byte{76, 87, 202}: "Apple, Inc.",
- [3]byte{76, 93, 205}: "Oy Finnish Electric Vehicle Technologies Ltd",
- [3]byte{76, 94, 12}: "Routerboard.com",
- [3]byte{76, 95, 210}: "Alcatel-Lucent",
- [3]byte{76, 96, 213}: "airPointe of New Hampshire",
- [3]byte{76, 96, 222}: "NETGEAR",
- [3]byte{76, 98, 85}: "SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V.",
- [3]byte{76, 99, 235}: "Application Solutions (Electronics and Vision) Ltd",
- [3]byte{76, 100, 217}: "Guangdong Leawin Group Co., Ltd",
- [3]byte{76, 101, 168}: "IEEE Registration Authority",
- [3]byte{76, 102, 65}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{76, 110, 110}: "Comnect Technology CO.,LTD",
- [3]byte{76, 114, 185}: "PEGATRON CORPORATION",
- [3]byte{76, 115, 103}: "Genius Bytes Software Solutions GmbH",
- [3]byte{76, 115, 165}: "KOVE",
- [3]byte{76, 116, 3}: "BQ",
- [3]byte{76, 116, 135}: "Leader Phone Communication Technology Co., Ltd.",
- [3]byte{76, 116, 191}: "Apple, Inc.",
- [3]byte{76, 118, 37}: "Dell Inc.",
- [3]byte{76, 119, 79}: "Embedded Wireless Labs",
- [3]byte{76, 120, 114}: "Cav. Uff. Giacomo Cimberio S.p.A.",
- [3]byte{76, 120, 151}: "Arrowhead Alarm Products Ltd",
- [3]byte{76, 121, 186}: "Intel Corporate",
- [3]byte{76, 124, 95}: "Apple, Inc.",
- [3]byte{76, 127, 98}: "Nokia Corporation",
- [3]byte{76, 128, 79}: "Armstrong Monitoring Corp",
- [3]byte{76, 128, 147}: "Intel Corporate",
- [3]byte{76, 129, 32}: "Taicang T&W Electronics",
- [3]byte{76, 130, 207}: "Echostar Technologies Corp",
- [3]byte{76, 131, 222}: "Cisco SPVTG",
- [3]byte{76, 139, 48}: "Actiontec Electronics, Inc",
- [3]byte{76, 139, 85}: "Grupo Digicon",
- [3]byte{76, 139, 239}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{76, 141, 121}: "Apple, Inc.",
- [3]byte{76, 142, 204}: "SILKAN SA",
- [3]byte{76, 143, 165}: "Jastec",
- [3]byte{76, 145, 12}: "Lanix Internacional, S.A. de C.V.",
- [3]byte{76, 150, 20}: "Juniper Networks",
- [3]byte{76, 152, 239}: "Zeo",
- [3]byte{76, 158, 128}: "KYOKKO ELECTRIC Co., Ltd.",
- [3]byte{76, 158, 228}: "Hanyang Navicom Co.,Ltd.",
- [3]byte{76, 158, 255}: "Zyxel Communications Corporation",
- [3]byte{76, 160, 3}: "T-21 Technologies LLC",
- [3]byte{76, 161, 97}: "Rain Bird Corporation",
- [3]byte{76, 165, 21}: "Baikal Electronics JSC",
- [3]byte{76, 165, 109}: "Samsung Electronics Co.,Ltd",
- [3]byte{76, 167, 75}: "Alcatel Lucent",
- [3]byte{76, 169, 40}: "Insensi",
- [3]byte{76, 170, 22}: "AzureWave Technologies (Shanghai) Inc.",
- [3]byte{76, 171, 51}: "KST technology",
- [3]byte{76, 172, 10}: "zte corporation",
- [3]byte{76, 174, 28}: "SaiNXT Technologies LLP",
- [3]byte{76, 174, 49}: "ShengHai Electronics (Shenzhen) Ltd",
- [3]byte{76, 176, 8}: "Shenzhen Gwelltimes Technology Co.,Ltd",
- [3]byte{76, 176, 232}: "Beijing RongZhi xinghua technology co., LTD",
- [3]byte{76, 177, 108}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{76, 177, 153}: "Apple, Inc.",
- [3]byte{76, 178, 28}: "Maxphotonics Co.,Ltd",
- [3]byte{76, 180, 74}: "NANOWAVE Technologies Inc.",
- [3]byte{76, 180, 234}: "HRD (S) PTE., LTD.",
- [3]byte{76, 183, 109}: "Novi Security",
- [3]byte{76, 184, 28}: "SAM Electronics GmbH",
- [3]byte{76, 184, 44}: "Cambridge Mobile Telematics, Inc.",
- [3]byte{76, 184, 181}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{76, 185, 200}: "CONET CO., LTD.",
- [3]byte{76, 186, 163}: "Bison Electronics Inc.",
- [3]byte{76, 187, 88}: "Chicony Electronics Co., Ltd.",
- [3]byte{76, 188, 66}: "Shenzhen Hangsheng Electronics Co.,Ltd.",
- [3]byte{76, 188, 165}: "Samsung Electronics Co.,Ltd",
- [3]byte{76, 189, 143}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
- [3]byte{76, 196, 82}: "Shang Hai Tyd. Electon Technology Ltd.",
- [3]byte{76, 198, 2}: "Radios, Inc.",
- [3]byte{76, 198, 129}: "Shenzhen Aisat Electronic Co., Ltd.",
- [3]byte{76, 201, 79}: "Nokia",
- [3]byte{76, 202, 83}: "Skyera, Inc.",
- [3]byte{76, 203, 245}: "zte corporation",
- [3]byte{76, 204, 52}: "Motorola Solutions Inc.",
- [3]byte{76, 204, 106}: "Micro-Star INTL CO., LTD.",
- [3]byte{76, 208, 138}: "HUMAX Co., Ltd.",
- [3]byte{76, 214, 55}: "Qsono Electronics Co., Ltd",
- [3]byte{76, 215, 182}: "Helmer Scientific",
- [3]byte{76, 217, 196}: "Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd",
- [3]byte{76, 223, 61}: "TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD",
- [3]byte{76, 225, 115}: "IEEE Registration Authority",
- [3]byte{76, 225, 187}: "Zhuhai HiFocus Technology Co., Ltd.",
- [3]byte{76, 226, 241}: "sclak srl",
- [3]byte{76, 230, 118}: "BUFFALO.INC",
- [3]byte{76, 233, 51}: "RailComm, LLC",
- [3]byte{76, 235, 66}: "Intel Corporate",
- [3]byte{76, 236, 239}: "Soraa, Inc.",
- [3]byte{76, 237, 222}: "ASKEY COMPUTER CORP",
- [3]byte{76, 238, 176}: "SHC Netzwerktechnik GmbH",
- [3]byte{76, 240, 46}: "Vifa Denmark A/S",
- [3]byte{76, 242, 191}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{76, 244, 91}: "Blue Clover Devices",
- [3]byte{76, 245, 160}: "Scalable Network Technologies Inc",
- [3]byte{76, 247, 55}: "SamJi Electronics Co., Ltd",
- [3]byte{76, 249, 93}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{76, 250, 202}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{76, 251, 69}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{76, 255, 18}: "Fuze Entertainment Co., ltd",
- [3]byte{80, 0, 140}: "Hong Kong Telecommunications (HKT) Limited",
- [3]byte{80, 1, 107}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{80, 1, 187}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 1, 217}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{80, 4, 184}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{80, 5, 61}: "CyWee Group Ltd",
- [3]byte{80, 6, 4}: "Cisco Systems, Inc",
- [3]byte{80, 6, 171}: "Cisco Systems, Inc",
- [3]byte{80, 9, 89}: "Technicolor CH USA Inc.",
- [3]byte{80, 11, 50}: "Foxda Technology Industrial(ShenZhen)Co.,LTD",
- [3]byte{80, 11, 145}: "IEEE Registration Authority",
- [3]byte{80, 14, 109}: "TrafficCast International",
- [3]byte{80, 15, 128}: "Cisco Systems, Inc",
- [3]byte{80, 15, 245}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{80, 17, 235}: "SilverNet Ltd",
- [3]byte{80, 20, 181}: "Richfit Information Technology Co., Ltd",
- [3]byte{80, 23, 255}: "Cisco Systems, Inc",
- [3]byte{80, 24, 76}: "Platina Systems Inc.",
- [3]byte{80, 26, 165}: "GN Netcom A/S",
- [3]byte{80, 26, 197}: "Microsoft",
- [3]byte{80, 28, 191}: "Cisco Systems, Inc",
- [3]byte{80, 30, 45}: "StreamUnlimited Engineering GmbH",
- [3]byte{80, 32, 107}: "Emerson Climate Technologies Transportation Solutions",
- [3]byte{80, 34, 103}: "PixeLINK",
- [3]byte{80, 37, 43}: "Nethra Imaging Incorporated",
- [3]byte{80, 38, 144}: "FUJITSU LIMITED",
- [3]byte{80, 39, 199}: "TECHNART Co.,Ltd",
- [3]byte{80, 41, 77}: "NANJING IOT SENSOR TECHNOLOGY CO,LTD",
- [3]byte{80, 42, 126}: "Smart electronic GmbH",
- [3]byte{80, 42, 139}: "Telekom Research and Development Sdn Bhd",
- [3]byte{80, 43, 115}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{80, 45, 29}: "Nokia Corporation",
- [3]byte{80, 45, 162}: "Intel Corporate",
- [3]byte{80, 45, 244}: "Phytec Messtechnik GmbH",
- [3]byte{80, 46, 92}: "HTC Corporation",
- [3]byte{80, 46, 206}: "Asahi Electronics Co.,Ltd",
- [3]byte{80, 49, 173}: "ABB Global Industries and Services Private Limited",
- [3]byte{80, 50, 55}: "Apple, Inc.",
- [3]byte{80, 50, 117}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 51, 139}: "Texas Instruments",
- [3]byte{80, 51, 240}: "YICHEN (SHENZHEN) TECHNOLOGY CO.LTD",
- [3]byte{80, 57, 85}: "Cisco SPVTG",
- [3]byte{80, 58, 125}: "AlphaTech PLC Int’l Co., Ltd.",
- [3]byte{80, 58, 160}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{80, 60, 196}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{80, 60, 234}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{80, 61, 161}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 61, 229}: "Cisco Systems, Inc",
- [3]byte{80, 62, 170}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{80, 63, 86}: "Syncmold Enterprise Corp",
- [3]byte{80, 63, 152}: "CMITECH",
- [3]byte{80, 64, 97}: "Nokia",
- [3]byte{80, 69, 247}: "Liuhe Intelligence Technology Ltd.",
- [3]byte{80, 70, 93}: "ASUSTek COMPUTER INC.",
- [3]byte{80, 72, 235}: "BEIJING HAIHEJINSHENG NETWORK TECHNOLOGY CO. LTD.",
- [3]byte{80, 74, 94}: "Masimo Corporation",
- [3]byte{80, 74, 110}: "NETGEAR",
- [3]byte{80, 75, 91}: "CONTROLtronic GmbH",
- [3]byte{80, 78, 220}: "Ping Communication",
- [3]byte{80, 79, 148}: "Loxone Electronics GmbH",
- [3]byte{80, 80, 42}: "Egardia",
- [3]byte{80, 80, 101}: "TAKT Corporation",
- [3]byte{80, 82, 210}: "Hangzhou Telin Technologies Co., Limited",
- [3]byte{80, 85, 39}: "LG Electronics (Mobile Communications)",
- [3]byte{80, 86, 99}: "Texas Instruments",
- [3]byte{80, 86, 168}: "Jolla Ltd",
- [3]byte{80, 86, 191}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 87, 168}: "Cisco Systems, Inc",
- [3]byte{80, 88, 0}: "WyTec International, Inc.",
- [3]byte{80, 88, 79}: "waytotec,Inc.",
- [3]byte{80, 90, 198}: "GUANGDONG SUPER TELECOM CO.,LTD.",
- [3]byte{80, 96, 40}: "Xirrus Inc.",
- [3]byte{80, 97, 132}: "Avaya Inc",
- [3]byte{80, 97, 214}: "Indu-Sol GmbH",
- [3]byte{80, 99, 19}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{80, 100, 43}: "XIAOMI Electronics,CO.,LTD",
- [3]byte{80, 100, 65}: "Greenlee",
- [3]byte{80, 101, 131}: "Texas Instruments",
- [3]byte{80, 101, 243}: "Hewlett Packard",
- [3]byte{80, 103, 135}: "Planet Networks",
- [3]byte{80, 103, 174}: "Cisco Systems, Inc",
- [3]byte{80, 103, 240}: "Zyxel Communications Corporation",
- [3]byte{80, 104, 10}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{80, 106, 3}: "NETGEAR",
- [3]byte{80, 107, 141}: "Nutanix",
- [3]byte{80, 110, 146}: "Innocent Technology Co., Ltd.",
- [3]byte{80, 111, 152}: "Sehaj Synergy Technologies Private Limited",
- [3]byte{80, 111, 154}: "Wi-Fi Alliance",
- [3]byte{80, 112, 229}: "He Shan World Fair Electronics Technology Limited",
- [3]byte{80, 114, 36}: "Texas Instruments",
- [3]byte{80, 114, 77}: "BEG Brueck Electronic GmbH",
- [3]byte{80, 118, 145}: "Tekpea, Inc.",
- [3]byte{80, 118, 166}: "Ecil Informatica Ind. Com. Ltda",
- [3]byte{80, 119, 5}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 121, 91}: "Interexport Telecomunicaciones S.A.",
- [3]byte{80, 122, 85}: "Apple, Inc.",
- [3]byte{80, 123, 157}: "LCFC(HeFei) Electronics Technology co., ltd",
- [3]byte{80, 125, 2}: "BIODIT",
- [3]byte{80, 126, 93}: "Arcadyan Technology Corporation",
- [3]byte{80, 130, 213}: "Apple, Inc.",
- [3]byte{80, 133, 105}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 135, 137}: "Cisco Systems, Inc",
- [3]byte{80, 135, 184}: "Nuvyyo Inc",
- [3]byte{80, 137, 101}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{80, 138, 15}: "SHENZHEN FISE TECHNOLOGY HOLDING CO.,LTD.",
- [3]byte{80, 138, 66}: "Uptmate Technology Co., LTD",
- [3]byte{80, 138, 203}: "SHENZHEN MAXMADE TECHNOLOGY CO., LTD.",
- [3]byte{80, 140, 119}: "DIRMEIER Schanktechnik GmbH &Co KG",
- [3]byte{80, 140, 177}: "Texas Instruments",
- [3]byte{80, 141, 111}: "CHAHOO Limited",
- [3]byte{80, 143, 76}: "Xiaomi Communications Co Ltd",
- [3]byte{80, 146, 185}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 147, 79}: "Gradual Tecnologia Ltda.",
- [3]byte{80, 151, 114}: "Westinghouse Digital",
- [3]byte{80, 152, 113}: "Inventum Technologies Private Limited",
- [3]byte{80, 152, 243}: "Rheem Australia Pty Ltd",
- [3]byte{80, 154, 76}: "Dell Inc.",
- [3]byte{80, 158, 167}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 159, 39}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{80, 159, 59}: "OI ELECTRIC CO.,LTD",
- [3]byte{80, 160, 84}: "Actineon",
- [3]byte{80, 160, 191}: "Alba Fiber Systems Inc.",
- [3]byte{80, 164, 200}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 164, 208}: "IEEE Registration Authority",
- [3]byte{80, 166, 227}: "David Clark Company",
- [3]byte{80, 167, 21}: "Aboundi, Inc.",
- [3]byte{80, 167, 43}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{80, 167, 51}: "Ruckus Wireless",
- [3]byte{80, 168, 58}: "S Mobile Devices Limited",
- [3]byte{80, 169, 222}: "Smartcom - Bulgaria AD",
- [3]byte{80, 171, 62}: "Qibixx AG",
- [3]byte{80, 171, 191}: "Hoseo Telecom",
- [3]byte{80, 173, 213}: "Dynalec Corporation",
- [3]byte{80, 175, 115}: "Shenzhen Bitland Information Technology Co., Ltd.",
- [3]byte{80, 179, 99}: "Digitron da Amazonia S/A",
- [3]byte{80, 182, 149}: "Micropoint Biotechnologies,Inc.",
- [3]byte{80, 183, 195}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 184, 136}: "wi2be Tecnologia S/A",
- [3]byte{80, 184, 162}: "ImTech Technologies LLC,",
- [3]byte{80, 189, 95}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{80, 192, 6}: "Carmanah Signs",
- [3]byte{80, 194, 113}: "SECURETECH INC",
- [3]byte{80, 197, 141}: "Juniper Networks",
- [3]byte{80, 199, 191}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{80, 200, 229}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 201, 113}: "GN Netcom A/S",
- [3]byte{80, 201, 160}: "SKIPPER AS",
- [3]byte{80, 204, 248}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{80, 205, 34}: "Avaya Inc",
- [3]byte{80, 205, 50}: "NanJing Chaoran Science & Technology Co.,Ltd.",
- [3]byte{80, 206, 117}: "Measy Electronics Co., Ltd.",
- [3]byte{80, 210, 19}: "CviLux Corporation",
- [3]byte{80, 210, 116}: "Steffes Corporation",
- [3]byte{80, 211, 127}: "Yu Fly Mikly Way Science and Technology Co., Ltd.",
- [3]byte{80, 213, 156}: "Thai Habel Industrial Co., Ltd.",
- [3]byte{80, 214, 215}: "Takahata Precision",
- [3]byte{80, 215, 83}: "CONELCOM GmbH",
- [3]byte{80, 218, 0}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{80, 221, 79}: "Automation Components, Inc",
- [3]byte{80, 223, 149}: "Lytx",
- [3]byte{80, 224, 199}: "TurControlSystme AG",
- [3]byte{80, 225, 74}: "Private",
- [3]byte{80, 229, 73}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{80, 230, 102}: "Shenzhen Techtion Electronics Co., Ltd.",
- [3]byte{80, 233, 113}: "Jibo, Inc.",
- [3]byte{80, 234, 214}: "Apple, Inc.",
- [3]byte{80, 235, 26}: "Brocade Communications Systems, Inc.",
- [3]byte{80, 237, 120}: "Changzhou Yongse Infotech Co.,Ltd",
- [3]byte{80, 237, 148}: "EGATEL SL",
- [3]byte{80, 240, 3}: "Open Stack, Inc.",
- [3]byte{80, 240, 211}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 241, 74}: "Texas Instruments",
- [3]byte{80, 244, 60}: "Leeo Inc",
- [3]byte{80, 245, 32}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 245, 218}: "Amazon Technologies Inc.",
- [3]byte{80, 246, 26}: "Kunshan JADE Technologies co., Ltd.",
- [3]byte{80, 247, 34}: "Cisco Systems, Inc",
- [3]byte{80, 250, 132}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{80, 250, 171}: "L-tek d.o.o.",
- [3]byte{80, 252, 48}: "Treehouse Labs",
- [3]byte{80, 252, 159}: "Samsung Electronics Co.,Ltd",
- [3]byte{80, 254, 242}: "Sify Technologies Ltd",
- [3]byte{80, 255, 32}: "Keenetic Limited",
- [3]byte{80, 255, 153}: "IEEE Registration Authority",
- [3]byte{84, 2, 55}: "Teltronic AG",
- [3]byte{84, 3, 132}: "Hangkong Nano IC Technologies Co., Ltd",
- [3]byte{84, 3, 245}: "EBN Technology Corp.",
- [3]byte{84, 4, 150}: "Gigawave LTD",
- [3]byte{84, 4, 166}: "ASUSTek COMPUTER INC.",
- [3]byte{84, 5, 54}: "Vivago Oy",
- [3]byte{84, 5, 95}: "Alcatel Lucent",
- [3]byte{84, 5, 147}: "WOORI ELEC Co.,Ltd",
- [3]byte{84, 9, 85}: "zte corporation",
- [3]byte{84, 9, 141}: "deister electronic GmbH",
- [3]byte{84, 16, 236}: "Microchip Technology Inc.",
- [3]byte{84, 17, 47}: "Sulzer Pump Solutions Finland Oy",
- [3]byte{84, 17, 95}: "Atamo Pty Ltd",
- [3]byte{84, 19, 121}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{84, 20, 115}: "Wingtech Group (HongKong)Limited",
- [3]byte{84, 20, 253}: "Orbbec 3D Technology International",
- [3]byte{84, 25, 200}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{84, 27, 93}: "Techno-Innov",
- [3]byte{84, 29, 251}: "Freestyle Energy Ltd",
- [3]byte{84, 30, 86}: "Juniper Networks",
- [3]byte{84, 31, 213}: "Advantage Electronics",
- [3]byte{84, 32, 24}: "Tely Labs",
- [3]byte{84, 33, 96}: "Resolution Products",
- [3]byte{84, 34, 248}: "zte corporation",
- [3]byte{84, 37, 234}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{84, 38, 150}: "Apple, Inc.",
- [3]byte{84, 39, 30}: "AzureWave Technology Inc.",
- [3]byte{84, 39, 88}: "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
- [3]byte{84, 39, 108}: "Jiangsu Houge Technology Corp.",
- [3]byte{84, 42, 156}: "LSY Defense, LLC.",
- [3]byte{84, 42, 162}: "Alpha Networks Inc.",
- [3]byte{84, 43, 87}: "Night Owl SP",
- [3]byte{84, 44, 234}: "PROTECTRON",
- [3]byte{84, 47, 137}: "Euclid Laboratories, Inc.",
- [3]byte{84, 47, 138}: "TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO",
- [3]byte{84, 49, 49}: "Raster Vision Ltd",
- [3]byte{84, 51, 203}: "Apple, Inc.",
- [3]byte{84, 53, 48}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{84, 53, 223}: "Symeo GmbH",
- [3]byte{84, 54, 155}: "1Verge Internet Technology (Beijing) Co., Ltd.",
- [3]byte{84, 57, 104}: "Edgewater Networks Inc",
- [3]byte{84, 57, 223}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{84, 59, 48}: "duagon AG",
- [3]byte{84, 61, 55}: "Ruckus Wireless",
- [3]byte{84, 64, 173}: "Samsung Electronics Co.,Ltd",
- [3]byte{84, 66, 73}: "Sony Corporation",
- [3]byte{84, 68, 8}: "Nokia Corporation",
- [3]byte{84, 70, 107}: "Shenzhen CZTIC Electronic Technology Co., Ltd",
- [3]byte{84, 72, 156}: "CDOUBLES ELECTRONICS CO. LTD.",
- [3]byte{84, 74, 0}: "Cisco Systems, Inc",
- [3]byte{84, 74, 5}: "wenglor sensoric gmbh",
- [3]byte{84, 74, 22}: "Texas Instruments",
- [3]byte{84, 75, 140}: "Juniper Networks",
- [3]byte{84, 78, 69}: "Private",
- [3]byte{84, 78, 144}: "Apple, Inc.",
- [3]byte{84, 81, 27}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{84, 81, 70}: "AMG Systems Ltd.",
- [3]byte{84, 83, 237}: "Sony Corporation",
- [3]byte{84, 84, 20}: "Digital RF Corea, Inc",
- [3]byte{84, 84, 207}: "PROBEDIGITAL CO.,LTD",
- [3]byte{84, 90, 166}: "Espressif Inc.",
- [3]byte{84, 94, 189}: "NL Technologies",
- [3]byte{84, 95, 169}: "Teracom Limited",
- [3]byte{84, 96, 9}: "Google, Inc.",
- [3]byte{84, 97, 114}: "ZODIAC AEROSPACE SAS",
- [3]byte{84, 97, 234}: "Zaplox AB",
- [3]byte{84, 100, 217}: "Sagemcom Broadband SAS",
- [3]byte{84, 101, 222}: "ARRIS Group, Inc.",
- [3]byte{84, 102, 108}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{84, 103, 81}: "Compal Broadband Networks, Inc.",
- [3]byte{84, 108, 14}: "Texas Instruments",
- [3]byte{84, 109, 82}: "TOPVIEW OPTRONICS CORP.",
- [3]byte{84, 114, 79}: "Apple, Inc.",
- [3]byte{84, 115, 152}: "Toyo Electronics Corporation",
- [3]byte{84, 116, 230}: "Webtech Wireless",
- [3]byte{84, 117, 149}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{84, 117, 208}: "Cisco Systems, Inc",
- [3]byte{84, 120, 26}: "Cisco Systems, Inc",
- [3]byte{84, 121, 117}: "Nokia Corporation",
- [3]byte{84, 122, 82}: "CTE International srl",
- [3]byte{84, 124, 105}: "Cisco Systems, Inc",
- [3]byte{84, 125, 205}: "Texas Instruments",
- [3]byte{84, 127, 84}: "INGENICO",
- [3]byte{84, 127, 168}: "TELCO systems, s.r.o.",
- [3]byte{84, 127, 238}: "Cisco Systems, Inc",
- [3]byte{84, 129, 173}: "Eagle Research Corporation",
- [3]byte{84, 132, 123}: "Digital Devices GmbH",
- [3]byte{84, 136, 14}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{84, 137, 34}: "Zelfy Inc",
- [3]byte{84, 137, 152}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{84, 140, 160}: "Liteon Technology Corporation",
- [3]byte{84, 146, 190}: "Samsung Electronics Co.,Ltd",
- [3]byte{84, 147, 89}: "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.",
- [3]byte{84, 148, 120}: "Silvershore Technology Partners",
- [3]byte{84, 154, 17}: "IEEE Registration Authority",
- [3]byte{84, 154, 22}: "Uzushio Electric Co.,Ltd.",
- [3]byte{84, 154, 76}: "GUANGDONG HOMECARE TECHNOLOGY CO.,LTD.",
- [3]byte{84, 155, 18}: "Samsung Electronics Co.,Ltd",
- [3]byte{84, 157, 133}: "EnerAccess inc",
- [3]byte{84, 159, 19}: "Apple, Inc.",
- [3]byte{84, 159, 53}: "Dell Inc.",
- [3]byte{84, 160, 79}: "t-mac Technologies Ltd",
- [3]byte{84, 160, 80}: "ASUSTek COMPUTER INC.",
- [3]byte{84, 162, 116}: "Cisco Systems, Inc",
- [3]byte{84, 163, 27}: "Shenzhen Linkworld Technology Co,.LTD",
- [3]byte{84, 163, 250}: "BQT Solutions (Australia)Pty Ltd",
- [3]byte{84, 165, 27}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{84, 165, 75}: "NSC Communications Siberia Ltd",
- [3]byte{84, 166, 25}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{84, 169, 212}: "Minibar Systems",
- [3]byte{84, 171, 58}: "QUANTA COMPUTER INC.",
- [3]byte{84, 174, 39}: "Apple, Inc.",
- [3]byte{84, 177, 33}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{84, 181, 108}: "Xi'an NovaStar Tech Co., Ltd",
- [3]byte{84, 182, 32}: "SUHDOL E&C Co.Ltd.",
- [3]byte{84, 183, 83}: "Hunan Fenghui Yinjia Science And Technology Co.,Ltd",
- [3]byte{84, 184, 10}: "D-Link International",
- [3]byte{84, 189, 121}: "Samsung Electronics Co.,Ltd",
- [3]byte{84, 190, 83}: "zte corporation",
- [3]byte{84, 190, 247}: "PEGATRON CORPORATION",
- [3]byte{84, 196, 21}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
- [3]byte{84, 197, 122}: "Sunnovo International Limited",
- [3]byte{84, 200, 15}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{84, 201, 223}: "FN-LINK TECHNOLOGY LIMITED",
- [3]byte{84, 205, 16}: "Panasonic Mobile Communications Co.,Ltd.",
- [3]byte{84, 205, 167}: "Fujian Shenzhou Electronic Co.,Ltd",
- [3]byte{84, 205, 238}: "ShenZhen Apexis Electronic Co.,Ltd",
- [3]byte{84, 208, 180}: "Xiamen Four-Faith Communication Technology Co.,Ltd",
- [3]byte{84, 208, 237}: "AXIM Communications",
- [3]byte{84, 209, 99}: "MAX-TECH,INC",
- [3]byte{84, 209, 176}: "Universal Laser Systems, Inc",
- [3]byte{84, 210, 114}: "Nuki Home Solutions GmbH",
- [3]byte{84, 212, 111}: "Cisco SPVTG",
- [3]byte{84, 215, 81}: "Proximus",
- [3]byte{84, 217, 228}: "BRILLIANTTS CO., LTD",
- [3]byte{84, 220, 29}: "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
- [3]byte{84, 223, 0}: "Ulterius Technologies, LLC",
- [3]byte{84, 223, 36}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{84, 223, 99}: "Intrakey technologies GmbH",
- [3]byte{84, 224, 50}: "Juniper Networks",
- [3]byte{84, 224, 97}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{84, 225, 64}: "INGENICO",
- [3]byte{84, 225, 173}: "LCFC(HeFei) Electronics Technology co., ltd",
- [3]byte{84, 226, 200}: "Dongguan Aoyuan Electronics Technology Co., Ltd",
- [3]byte{84, 226, 224}: "ARRIS Group, Inc.",
- [3]byte{84, 227, 176}: "JVL Industri Elektronik",
- [3]byte{84, 227, 246}: "Alcatel-Lucent",
- [3]byte{84, 228, 58}: "Apple, Inc.",
- [3]byte{84, 228, 189}: "FN-LINK TECHNOLOGY LIMITED",
- [3]byte{84, 230, 63}: "ShenZhen LingKeWeiEr Technology Co., Ltd.",
- [3]byte{84, 230, 252}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{84, 234, 168}: "Apple, Inc.",
- [3]byte{84, 237, 163}: "Navdy, Inc.",
- [3]byte{84, 238, 117}: "Wistron InfoComm(Kunshan)Co.,Ltd.",
- [3]byte{84, 239, 146}: "Shenzhen Elink Technology Co., LTD",
- [3]byte{84, 239, 254}: "Fullpower Technologies, Inc.",
- [3]byte{84, 242, 1}: "Samsung Electronics Co.,Ltd",
- [3]byte{84, 245, 182}: "ORIENTAL PACIFIC INTERNATIONAL LIMITED",
- [3]byte{84, 246, 102}: "Berthold Technologies GmbH and Co.KG",
- [3]byte{84, 246, 197}: "FUJIAN STAR-NET COMMUNICATION CO.,LTD",
- [3]byte{84, 248, 118}: "ABB AG",
- [3]byte{84, 250, 62}: "Samsung Electronics Co.,Ltd",
- [3]byte{84, 250, 150}: "Nokia",
- [3]byte{84, 251, 88}: "WISEWARE, Lda",
- [3]byte{84, 253, 191}: "Scheidt & Bachmann GmbH",
- [3]byte{84, 255, 130}: "Davit Solution co.",
- [3]byte{84, 255, 207}: "Mopria Alliance",
- [3]byte{88, 0, 187}: "Juniper Networks",
- [3]byte{88, 0, 227}: "Liteon Technology Corporation",
- [3]byte{88, 4, 84}: "ICOMM HK LIMITED",
- [3]byte{88, 4, 203}: "Tianjin Huisun Technology Co.,Ltd.",
- [3]byte{88, 5, 40}: "LABRIS NETWORKS",
- [3]byte{88, 5, 86}: "Elettronica GF S.r.L.",
- [3]byte{88, 8, 250}: "Fiber Optic & telecommunication INC.",
- [3]byte{88, 9, 67}: "Private",
- [3]byte{88, 9, 229}: "Kivic Inc.",
- [3]byte{88, 10, 32}: "Cisco Systems, Inc",
- [3]byte{88, 16, 140}: "Intelbras",
- [3]byte{88, 18, 67}: "AcSiP Technology Corp.",
- [3]byte{88, 22, 38}: "Avaya Inc",
- [3]byte{88, 23, 12}: "Sony Mobile Communications AB",
- [3]byte{88, 25, 248}: "ARRIS Group, Inc.",
- [3]byte{88, 28, 189}: "Affinegy",
- [3]byte{88, 29, 145}: "Advanced Mobile Telecom co.,ltd.",
- [3]byte{88, 31, 40}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{88, 31, 103}: "Open-m technology limited",
- [3]byte{88, 31, 170}: "Apple, Inc.",
- [3]byte{88, 31, 239}: "Tuttnaer LTD",
- [3]byte{88, 32, 177}: "Hewlett Packard",
- [3]byte{88, 33, 54}: "KMB systems, s.r.o.",
- [3]byte{88, 35, 140}: "Technicolor CH USA Inc.",
- [3]byte{88, 42, 247}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{88, 43, 219}: "Pax AB",
- [3]byte{88, 46, 254}: "Lighting Science Group",
- [3]byte{88, 47, 66}: "Universal Electric Corporation",
- [3]byte{88, 49, 18}: "DRUST",
- [3]byte{88, 50, 119}: "Reliance Communications LLC",
- [3]byte{88, 52, 59}: "Glovast Technology Ltd.",
- [3]byte{88, 53, 217}: "Cisco Systems, Inc",
- [3]byte{88, 56, 121}: "RICOH COMPANY, LTD.",
- [3]byte{88, 60, 198}: "Omneality Ltd.",
- [3]byte{88, 63, 84}: "LG Electronics (Mobile Communications)",
- [3]byte{88, 64, 78}: "Apple, Inc.",
- [3]byte{88, 66, 228}: "Baxter International Inc",
- [3]byte{88, 68, 152}: "Xiaomi Communications Co Ltd",
- [3]byte{88, 70, 143}: "Koncar Electronics and Informatics",
- [3]byte{88, 70, 225}: "Baxter International Inc",
- [3]byte{88, 71, 4}: "Shenzhen Webridge Technology Co.,Ltd",
- [3]byte{88, 72, 34}: "Sony Mobile Communications AB",
- [3]byte{88, 72, 192}: "COFLEC",
- [3]byte{88, 73, 37}: "E3 Enterprise",
- [3]byte{88, 73, 59}: "Palo Alto Networks",
- [3]byte{88, 73, 186}: "Chitai Electronic Corp.",
- [3]byte{88, 76, 25}: "Chongqing Guohong Technology Development Company Limited",
- [3]byte{88, 76, 238}: "Digital One Technologies, Limited",
- [3]byte{88, 80, 118}: "Linear Equipamentos Eletronicos SA",
- [3]byte{88, 80, 171}: "TLS Corporation",
- [3]byte{88, 80, 230}: "Best Buy Corporation",
- [3]byte{88, 82, 138}: "Mitsubishi Electric Corporation",
- [3]byte{88, 83, 192}: "Beijing Guang Runtong Technology Development Company co.,Ltd",
- [3]byte{88, 85, 202}: "Apple, Inc.",
- [3]byte{88, 86, 232}: "ARRIS Group, Inc.",
- [3]byte{88, 87, 13}: "Danfoss Solar Inverters",
- [3]byte{88, 96, 95}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{88, 97, 99}: "Quantum Networks (SG) Pte. Ltd.",
- [3]byte{88, 99, 86}: "FN-LINK TECHNOLOGY LIMITED",
- [3]byte{88, 99, 154}: "TPL SYSTEMES",
- [3]byte{88, 101, 230}: "INFOMARK CO., LTD.",
- [3]byte{88, 102, 186}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{88, 103, 26}: "Barnes&Noble",
- [3]byte{88, 103, 127}: "Clare Controls Inc.",
- [3]byte{88, 104, 93}: "Tempo Australia Pty Ltd",
- [3]byte{88, 105, 108}: "Ruijie Networks Co.,LTD",
- [3]byte{88, 105, 249}: "Fusion Transactive Ltd.",
- [3]byte{88, 106, 177}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{88, 109, 143}: "Cisco-Linksys, LLC",
- [3]byte{88, 110, 214}: "Private",
- [3]byte{88, 112, 198}: "Shanghai Xiaoyi Technology Co., Ltd.",
- [3]byte{88, 117, 33}: "CJSC RTSoft",
- [3]byte{88, 118, 117}: "Beijing ECHO Technologies Co.,Ltd",
- [3]byte{88, 118, 197}: "DIGI I'S LTD",
- [3]byte{88, 122, 77}: "Stonesoft Corporation",
- [3]byte{88, 122, 98}: "Texas Instruments",
- [3]byte{88, 123, 233}: "AirPro Technology India Pvt. Ltd",
- [3]byte{88, 126, 97}: "Qingdao Hisense Communications Co.,Ltd.",
- [3]byte{88, 127, 87}: "Apple, Inc.",
- [3]byte{88, 127, 102}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{88, 127, 183}: "SONAR INDUSTRIAL CO., LTD.",
- [3]byte{88, 127, 200}: "S2M",
- [3]byte{88, 130, 29}: "H. Schomäcker GmbH",
- [3]byte{88, 130, 168}: "Microsoft",
- [3]byte{88, 132, 228}: "IP500 Alliance e.V.",
- [3]byte{88, 133, 110}: "QSC AG",
- [3]byte{88, 135, 76}: "LITE-ON CLEAN ENERGY TECHNOLOGY CORP.",
- [3]byte{88, 135, 226}: "Shenzhen Coship Electronics Co., Ltd.",
- [3]byte{88, 138, 90}: "Dell Inc.",
- [3]byte{88, 139, 243}: "Zyxel Communications Corporation",
- [3]byte{88, 141, 9}: "Cisco Systems, Inc",
- [3]byte{88, 141, 100}: "Xi'an Clevbee Technology Co.,Ltd",
- [3]byte{88, 144, 67}: "Sagemcom Broadband SAS",
- [3]byte{88, 145, 207}: "Intel Corporate",
- [3]byte{88, 146, 13}: "Kinetic Avionics Limited",
- [3]byte{88, 147, 150}: "Ruckus Wireless",
- [3]byte{88, 148, 107}: "Intel Corporate",
- [3]byte{88, 148, 207}: "Vertex Standard LMR, Inc.",
- [3]byte{88, 151, 30}: "Cisco Systems, Inc",
- [3]byte{88, 151, 189}: "Cisco Systems, Inc",
- [3]byte{88, 152, 53}: "Technicolor",
- [3]byte{88, 152, 111}: "Revolution Display",
- [3]byte{88, 155, 11}: "Shineway Technologies, Inc.",
- [3]byte{88, 156, 252}: "FreeBSD Foundation",
- [3]byte{88, 160, 203}: "TrackNet, Inc",
- [3]byte{88, 162, 181}: "LG Electronics (Mobile Communications)",
- [3]byte{88, 167, 111}: "iD corporation",
- [3]byte{88, 168, 57}: "Intel Corporate",
- [3]byte{88, 172, 120}: "Cisco Systems, Inc",
- [3]byte{88, 176, 53}: "Apple, Inc.",
- [3]byte{88, 176, 212}: "ZuniData Systems Inc.",
- [3]byte{88, 180, 45}: "YSTen Technology Co.,Ltd",
- [3]byte{88, 182, 51}: "Ruckus Wireless",
- [3]byte{88, 185, 97}: "SOLEM Electronique",
- [3]byte{88, 185, 225}: "Crystalfontz America, Inc.",
- [3]byte{88, 188, 39}: "Cisco Systems, Inc",
- [3]byte{88, 188, 143}: "Cognitive Systems Corp.",
- [3]byte{88, 189, 163}: "Nintendo Co., Ltd.",
- [3]byte{88, 189, 249}: "Sigrand",
- [3]byte{88, 191, 234}: "Cisco Systems, Inc",
- [3]byte{88, 193, 122}: "Cambium Networks Limited",
- [3]byte{88, 194, 50}: "NEC Corporation",
- [3]byte{88, 195, 139}: "Samsung Electronics Co.,Ltd",
- [3]byte{88, 197, 131}: "ITEL MOBILE LIMITED",
- [3]byte{88, 197, 203}: "Samsung Electronics Co.,Ltd",
- [3]byte{88, 201, 53}: "Chiun Mai Communication Systems, Inc",
- [3]byte{88, 207, 75}: "Lufkin Industries",
- [3]byte{88, 208, 113}: "BW Broadcast",
- [3]byte{88, 208, 143}: "IEEE 1904.1 Working Group",
- [3]byte{88, 214, 122}: "TCPlink",
- [3]byte{88, 214, 211}: "Dairy Cheq Inc",
- [3]byte{88, 217, 213}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{88, 219, 141}: "Fast Co., Ltd.",
- [3]byte{88, 220, 109}: "Exceptional Innovation, Inc.",
- [3]byte{88, 224, 44}: "Micro Technic A/S",
- [3]byte{88, 225, 108}: "Ying Hua Information Technology (Shanghai)Co., LTD",
- [3]byte{88, 226, 143}: "Apple, Inc.",
- [3]byte{88, 227, 38}: "Compass Technologies Inc.",
- [3]byte{88, 228, 118}: "CENTRON COMMUNICATIONS TECHNOLOGIES FUJIAN CO.,LTD",
- [3]byte{88, 230, 54}: "EVRsafe Technologies",
- [3]byte{88, 231, 71}: "Deltanet AG",
- [3]byte{88, 232, 8}: "AUTONICS CORPORATION",
- [3]byte{88, 232, 118}: "IEEE Registration Authority",
- [3]byte{88, 235, 20}: "Proteus Digital Health",
- [3]byte{88, 236, 225}: "Newport Corporation",
- [3]byte{88, 238, 206}: "Icon Time Systems",
- [3]byte{88, 239, 104}: "Belkin International Inc.",
- [3]byte{88, 241, 2}: "BLU Products Inc.",
- [3]byte{88, 243, 135}: "HCCP",
- [3]byte{88, 243, 156}: "Cisco Systems, Inc",
- [3]byte{88, 244, 150}: "Source Chain",
- [3]byte{88, 246, 123}: "Xia Men UnionCore Technology LTD.",
- [3]byte{88, 246, 191}: "Kyoto University",
- [3]byte{88, 249, 142}: "SECUDOS GmbH",
- [3]byte{88, 251, 132}: "Intel Corporate",
- [3]byte{88, 252, 115}: "Arria Live Media, Inc.",
- [3]byte{88, 252, 219}: "IEEE Registration Authority",
- [3]byte{88, 253, 32}: "Bravida Sakerhet AB",
- [3]byte{92, 2, 106}: "Applied Vision Corporation",
- [3]byte{92, 3, 57}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{92, 7, 111}: "Thought Creator",
- [3]byte{92, 9, 121}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{92, 10, 91}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{92, 12, 14}: "Guizhou Huaxintong Semiconductor Technology Co Ltd",
- [3]byte{92, 12, 187}: "CELIZION Inc.",
- [3]byte{92, 14, 139}: "Extreme Networks, Inc.",
- [3]byte{92, 17, 147}: "Seal One AG",
- [3]byte{92, 20, 55}: "Thyssenkrupp Aufzugswerke GmbH",
- [3]byte{92, 21, 21}: "ADVAN",
- [3]byte{92, 21, 225}: "AIDC TECHNOLOGY (S) PTE LTD",
- [3]byte{92, 22, 199}: "Big Switch Networks",
- [3]byte{92, 23, 55}: "I-View Now, LLC.",
- [3]byte{92, 23, 211}: "LGE",
- [3]byte{92, 24, 181}: "Talon Communications",
- [3]byte{92, 26, 111}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{92, 32, 208}: "Asoni Communication Co., Ltd.",
- [3]byte{92, 34, 196}: "DAE EUN ELETRONICS CO., LTD",
- [3]byte{92, 36, 67}: "O-Sung Telecom Co., Ltd.",
- [3]byte{92, 36, 121}: "Baltech AG",
- [3]byte{92, 37, 76}: "Avire Global Pte Ltd",
- [3]byte{92, 38, 10}: "Dell Inc.",
- [3]byte{92, 42, 239}: "Open Access Pty Ltd",
- [3]byte{92, 43, 245}: "Vivint Wireless Inc.",
- [3]byte{92, 46, 89}: "Samsung Electronics Co.,Ltd",
- [3]byte{92, 46, 210}: "ABC(XiSheng) Electronics Co.,Ltd",
- [3]byte{92, 49, 62}: "Texas Instruments",
- [3]byte{92, 51, 39}: "Spazio Italia srl",
- [3]byte{92, 51, 92}: "Swissphone Telecom AG",
- [3]byte{92, 51, 142}: "Alpha Networks Inc.",
- [3]byte{92, 53, 59}: "Compal Broadband Networks, Inc.",
- [3]byte{92, 53, 218}: "There Corporation Oy",
- [3]byte{92, 54, 184}: "TCL King Electrical Appliances (Huizhou) Co., Ltd",
- [3]byte{92, 56, 224}: "Shanghai Super Electronics Technology Co.,LTD",
- [3]byte{92, 59, 53}: "Gehirn Inc.",
- [3]byte{92, 60, 39}: "Samsung Electronics Co.,Ltd",
- [3]byte{92, 64, 88}: "Jefferson Audio Video Systems, Inc.",
- [3]byte{92, 65, 231}: "Wiatec International Ltd.",
- [3]byte{92, 67, 210}: "HAZEMEYER",
- [3]byte{92, 69, 39}: "Juniper Networks",
- [3]byte{92, 73, 121}: "AVM Audiovisuelles Marketing und Computersysteme GmbH",
- [3]byte{92, 73, 125}: "Samsung Electronics Co.,Ltd",
- [3]byte{92, 74, 31}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{92, 74, 38}: "Enguity Technology Corp",
- [3]byte{92, 76, 169}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{92, 80, 21}: "Cisco Systems, Inc",
- [3]byte{92, 81, 79}: "Intel Corporate",
- [3]byte{92, 81, 129}: "Samsung Electronics Co.,Ltd",
- [3]byte{92, 81, 136}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{92, 82, 30}: "Nintendo Co.,Ltd",
- [3]byte{92, 84, 109}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{92, 86, 237}: "3pleplay Electronics Private Limited",
- [3]byte{92, 87, 26}: "ARRIS Group, Inc.",
- [3]byte{92, 87, 200}: "Nokia Corporation",
- [3]byte{92, 88, 25}: "Jingsheng Technology Co., Ltd.",
- [3]byte{92, 89, 72}: "Apple, Inc.",
- [3]byte{92, 91, 53}: "Mist Systems, Inc.",
- [3]byte{92, 91, 194}: "YIK Corporation",
- [3]byte{92, 94, 171}: "Juniper Networks",
- [3]byte{92, 95, 103}: "Intel Corporate",
- [3]byte{92, 99, 191}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{92, 103, 118}: "IDS Imaging Development Systems GmbH",
- [3]byte{92, 105, 132}: "NUVICO",
- [3]byte{92, 106, 125}: "KENTKART EGE ELEKTRONIK SAN. VE TIC. LTD. STI.",
- [3]byte{92, 106, 128}: "Zyxel Communications Corporation",
- [3]byte{92, 107, 50}: "Texas Instruments",
- [3]byte{92, 107, 79}: "Hello Inc.",
- [3]byte{92, 109, 32}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{92, 111, 79}: "S.A. SISTEL",
- [3]byte{92, 112, 163}: "LG Electronics (Mobile Communications)",
- [3]byte{92, 119, 87}: "Haivision Network Video",
- [3]byte{92, 119, 118}: "TCT mobile ltd",
- [3]byte{92, 125, 94}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{92, 129, 167}: "Network Devices Pty Ltd",
- [3]byte{92, 131, 143}: "Cisco Systems, Inc",
- [3]byte{92, 132, 134}: "Brightsource Industries Israel LTD",
- [3]byte{92, 134, 19}: "Beijing Zhoenet Technology Co., Ltd",
- [3]byte{92, 134, 74}: "Secret Labs LLC",
- [3]byte{92, 134, 92}: "Samsung Electronics Co.,Ltd",
- [3]byte{92, 134, 193}: "DONGGUAN SOLUM ELECTRONICS CO.,LTD",
- [3]byte{92, 135, 120}: "Cybertelbridge co.,ltd",
- [3]byte{92, 137, 154}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{92, 137, 212}: "Beijing Banner Electric Co.,Ltd",
- [3]byte{92, 138, 56}: "Hewlett Packard",
- [3]byte{92, 141, 45}: "Shanghai Wellpay Information Technology Co., Ltd",
- [3]byte{92, 141, 78}: "Apple, Inc.",
- [3]byte{92, 143, 224}: "ARRIS Group, Inc.",
- [3]byte{92, 147, 162}: "Liteon Technology Corporation",
- [3]byte{92, 149, 174}: "Apple, Inc.",
- [3]byte{92, 150, 86}: "AzureWave Technology Inc.",
- [3]byte{92, 150, 106}: "RTNET",
- [3]byte{92, 150, 157}: "Apple, Inc.",
- [3]byte{92, 151, 243}: "Apple, Inc.",
- [3]byte{92, 153, 96}: "Samsung Electronics Co.,Ltd",
- [3]byte{92, 154, 216}: "FUJITSU LIMITED",
- [3]byte{92, 161, 118}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{92, 161, 120}: "TableTop Media (dba Ziosk)",
- [3]byte{92, 163, 157}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{92, 163, 235}: "Lokel s.r.o.",
- [3]byte{92, 164, 138}: "Cisco Systems, Inc",
- [3]byte{92, 168, 106}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{92, 169, 51}: "Luma Home",
- [3]byte{92, 170, 253}: "Sonos, Inc.",
- [3]byte{92, 172, 76}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{92, 173, 118}: "Shenzhen TCL New Technology Co., Ltd",
- [3]byte{92, 173, 207}: "Apple, Inc.",
- [3]byte{92, 175, 6}: "LG Electronics (Mobile Communications)",
- [3]byte{92, 176, 102}: "ARRIS Group, Inc.",
- [3]byte{92, 179, 149}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{92, 180, 62}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{92, 181, 36}: "Sony Mobile Communications AB",
- [3]byte{92, 181, 89}: "CNEX Labs",
- [3]byte{92, 182, 204}: "NovaComm Technologies Inc.",
- [3]byte{92, 184, 203}: "Allis Communications",
- [3]byte{92, 185, 1}: "Hewlett Packard",
- [3]byte{92, 186, 55}: "Microsoft Corporation",
- [3]byte{92, 189, 158}: "HONGKONG MIRACLE EAGLE TECHNOLOGY(GROUP) LIMITED",
- [3]byte{92, 194, 19}: "Fr. Sauter AG",
- [3]byte{92, 195, 7}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{92, 197, 212}: "Intel Corporate",
- [3]byte{92, 198, 208}: "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
- [3]byte{92, 198, 233}: "Edifier International",
- [3]byte{92, 199, 215}: "AZROAD TECHNOLOGY COMPANY LIMITED",
- [3]byte{92, 201, 211}: "PALLADIUM ENERGY ELETRONICA DA AMAZONIA LTDA",
- [3]byte{92, 202, 26}: "Microsoft Mobile Oy",
- [3]byte{92, 202, 50}: "Theben AG",
- [3]byte{92, 204, 160}: "Gridwiz Inc.",
- [3]byte{92, 204, 255}: "Techroutes Network Pvt Ltd",
- [3]byte{92, 206, 173}: "CDYNE Corporation",
- [3]byte{92, 207, 127}: "Espressif Inc.",
- [3]byte{92, 209, 53}: "Xtreme Power Systems",
- [3]byte{92, 210, 228}: "Intel Corporate",
- [3]byte{92, 212, 27}: "UCZOON Technology Co., LTD",
- [3]byte{92, 212, 171}: "Zektor",
- [3]byte{92, 214, 31}: "Qardio, Inc",
- [3]byte{92, 217, 152}: "D-Link Corporation",
- [3]byte{92, 218, 212}: "Murata Manufacturing Co., Ltd.",
- [3]byte{92, 220, 150}: "Arcadyan Technology Corporation",
- [3]byte{92, 221, 112}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{92, 224, 197}: "Intel Corporate",
- [3]byte{92, 224, 202}: "FeiTian United (Beijing) System Technology Co., Ltd.",
- [3]byte{92, 224, 246}: "NIC.br- Nucleo de Informacao e Coordenacao do Ponto BR",
- [3]byte{92, 226, 35}: "Delphin Technology AG",
- [3]byte{92, 226, 134}: "Nortel Networks",
- [3]byte{92, 226, 140}: "Zyxel Communications Corporation",
- [3]byte{92, 226, 244}: "AcSiP Technology Corp.",
- [3]byte{92, 227, 14}: "ARRIS Group, Inc.",
- [3]byte{92, 227, 182}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{92, 231, 191}: "New Singularity International Technical Development Co.,Ltd",
- [3]byte{92, 232, 183}: "Oraimo Technology Limited",
- [3]byte{92, 232, 235}: "Samsung Electronics Co.,Ltd",
- [3]byte{92, 234, 29}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{92, 235, 78}: "R. STAHL HMI Systems GmbH",
- [3]byte{92, 235, 104}: "Cheerstar Technology Co., Ltd",
- [3]byte{92, 238, 121}: "Global Digitech Co LTD",
- [3]byte{92, 242, 7}: "Speco Technologies",
- [3]byte{92, 242, 134}: "IEEE Registration Authority",
- [3]byte{92, 243, 112}: "CC&C Technologies, Inc",
- [3]byte{92, 243, 252}: "IBM Corp",
- [3]byte{92, 244, 171}: "Zyxel Communications Corporation",
- [3]byte{92, 245, 13}: "Institute of microelectronic applications",
- [3]byte{92, 245, 218}: "Apple, Inc.",
- [3]byte{92, 246, 220}: "Samsung Electronics Co.,Ltd",
- [3]byte{92, 247, 195}: "SYNTECH (HK) TECHNOLOGY LIMITED",
- [3]byte{92, 247, 230}: "Apple, Inc.",
- [3]byte{92, 248, 33}: "Texas Instruments",
- [3]byte{92, 248, 161}: "Murata Manufacturing Co., Ltd.",
- [3]byte{92, 249, 56}: "Apple, Inc.",
- [3]byte{92, 249, 106}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{92, 249, 221}: "Dell Inc.",
- [3]byte{92, 249, 240}: "Atomos Engineering P/L",
- [3]byte{92, 252, 102}: "Cisco Systems, Inc",
- [3]byte{92, 255, 53}: "Wistron Corporation",
- [3]byte{92, 255, 255}: "Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd",
- [3]byte{96, 1, 148}: "Espressif Inc.",
- [3]byte{96, 2, 146}: "PEGATRON CORPORATION",
- [3]byte{96, 2, 180}: "Wistron Neweb Corporation",
- [3]byte{96, 3, 8}: "Apple, Inc.",
- [3]byte{96, 3, 71}: "Billion Electric Co. Ltd.",
- [3]byte{96, 4, 23}: "POSBANK CO.,LTD",
- [3]byte{96, 8, 16}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{96, 8, 55}: "ivvi Scientific(Nanchang)Co.Ltd",
- [3]byte{96, 11, 3}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{96, 15, 119}: "SilverPlus, Inc",
- [3]byte{96, 17, 153}: "Siama Systems Inc",
- [3]byte{96, 18, 131}: "TSB REAL TIME LOCATION SYSTEMS S.L.",
- [3]byte{96, 18, 139}: "CANON INC.",
- [3]byte{96, 20, 102}: "zte corporation",
- [3]byte{96, 20, 179}: "CyberTAN Technology Inc.",
- [3]byte{96, 21, 199}: "IdaTech",
- [3]byte{96, 24, 3}: "Daikin Air-conditioning (Shanghai) Co., Ltd.",
- [3]byte{96, 24, 46}: "ShenZhen Protruly Electronic Ltd co.",
- [3]byte{96, 24, 136}: "zte corporation",
- [3]byte{96, 25, 12}: "RRAMAC",
- [3]byte{96, 25, 41}: "VOLTRONIC POWER TECHNOLOGY(SHENZHEN) CORP.",
- [3]byte{96, 25, 112}: "HUIZHOU QIAOXING ELECTRONICS TECHNOLOGY CO., LTD.",
- [3]byte{96, 25, 113}: "ARRIS Group, Inc.",
- [3]byte{96, 29, 15}: "Midnite Solar",
- [3]byte{96, 30, 2}: "EltexAlatau",
- [3]byte{96, 33, 1}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{96, 33, 3}: "I4VINE, INC",
- [3]byte{96, 33, 192}: "Murata Manufacturing Co., Ltd.",
- [3]byte{96, 36, 193}: "Jiangsu Zhongxun Electronic Technology Co., Ltd",
- [3]byte{96, 39, 28}: "VIDEOR E. Hartig GmbH",
- [3]byte{96, 42, 84}: "CardioTek B.V.",
- [3]byte{96, 42, 208}: "Cisco SPVTG",
- [3]byte{96, 46, 32}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{96, 49, 59}: "Sunnovo International Limited",
- [3]byte{96, 49, 151}: "Zyxel Communications Corporation",
- [3]byte{96, 50, 240}: "Mplus technology",
- [3]byte{96, 51, 75}: "Apple, Inc.",
- [3]byte{96, 53, 83}: "Buwon Technology",
- [3]byte{96, 54, 150}: "The Sapling Company",
- [3]byte{96, 54, 221}: "Intel Corporate",
- [3]byte{96, 56, 14}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{96, 56, 224}: "Belkin International Inc.",
- [3]byte{96, 57, 31}: "ABB Ltd",
- [3]byte{96, 61, 38}: "Technicolor CH USA Inc.",
- [3]byte{96, 62, 123}: "Gafachi, Inc.",
- [3]byte{96, 62, 202}: "Cambridge Medical Robotics Ltd",
- [3]byte{96, 63, 197}: "COX CO., LTD",
- [3]byte{96, 66, 127}: "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
- [3]byte{96, 68, 245}: "Easy Digital Ltd.",
- [3]byte{96, 69, 94}: "Liptel s.r.o.",
- [3]byte{96, 69, 189}: "Microsoft",
- [3]byte{96, 69, 203}: "ASUSTek COMPUTER INC.",
- [3]byte{96, 70, 22}: "XIAMEN VANN INTELLIGENT CO., LTD",
- [3]byte{96, 71, 98}: "Beijing Sensoro Technology Co.,Ltd.",
- [3]byte{96, 71, 212}: "FORICS Electronic Technology Co., Ltd.",
- [3]byte{96, 72, 38}: "Newbridge Technologies Int. Ltd.",
- [3]byte{96, 73, 193}: "Avaya Inc",
- [3]byte{96, 74, 28}: "SUYIN Corporation",
- [3]byte{96, 75, 170}: "Private",
- [3]byte{96, 80, 193}: "Kinetek Sports",
- [3]byte{96, 81, 44}: "TCT mobile ltd",
- [3]byte{96, 82, 208}: "FACTS Engineering",
- [3]byte{96, 83, 23}: "Sandstone Technologies",
- [3]byte{96, 84, 100}: "Eyedro Green Solutions Inc.",
- [3]byte{96, 87, 24}: "Intel Corporate",
- [3]byte{96, 91, 180}: "AzureWave Technology Inc.",
- [3]byte{96, 96, 31}: "SZ DJI TECHNOLOGY CO.,LTD",
- [3]byte{96, 99, 249}: "Ciholas, Inc.",
- [3]byte{96, 99, 253}: "Transcend Communication Beijing Co.,Ltd.",
- [3]byte{96, 100, 5}: "Texas Instruments",
- [3]byte{96, 100, 83}: "AOD Co.,Ltd.",
- [3]byte{96, 100, 161}: "RADiflow Ltd.",
- [3]byte{96, 103, 32}: "Intel Corporate",
- [3]byte{96, 105, 68}: "Apple, Inc.",
- [3]byte{96, 105, 155}: "isepos GmbH",
- [3]byte{96, 107, 189}: "Samsung Electronics Co.,Ltd",
- [3]byte{96, 108, 102}: "Intel Corporate",
- [3]byte{96, 109, 60}: "Luxshare Precision Industry Company Limited",
- [3]byte{96, 109, 199}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{96, 114, 11}: "BLU Products Inc",
- [3]byte{96, 115, 92}: "Cisco Systems, Inc",
- [3]byte{96, 115, 188}: "zte corporation",
- [3]byte{96, 116, 141}: "Atmaca Elektronik",
- [3]byte{96, 118, 136}: "Velodyne",
- [3]byte{96, 119, 226}: "Samsung Electronics Co.,Ltd",
- [3]byte{96, 126, 221}: "Microsoft Mobile Oy",
- [3]byte{96, 129, 43}: "Custom Control Concepts",
- [3]byte{96, 129, 249}: "Helium Systems, Inc",
- [3]byte{96, 131, 52}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{96, 131, 178}: "GkWare e.K.",
- [3]byte{96, 132, 59}: "Soladigm, Inc.",
- [3]byte{96, 134, 69}: "Avery Weigh-Tronix, LLC",
- [3]byte{96, 137, 60}: "Thermo Fisher Scientific P.O.A.",
- [3]byte{96, 137, 177}: "Key Digital Systems",
- [3]byte{96, 137, 183}: "KAEL MÜHENDİSLİK ELEKTRONİK TİCARET SANAYİ LİMİTED ŞİRKETİ",
- [3]byte{96, 140, 43}: "Hanson Technology",
- [3]byte{96, 140, 230}: "ARRIS Group, Inc.",
- [3]byte{96, 141, 23}: "Sentrus Government Systems Division, Inc",
- [3]byte{96, 142, 8}: "Samsung Electronics Co.,Ltd",
- [3]byte{96, 143, 92}: "Samsung Electronics Co.,Ltd",
- [3]byte{96, 144, 132}: "DSSD Inc",
- [3]byte{96, 145, 243}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{96, 146, 23}: "Apple, Inc.",
- [3]byte{96, 150, 32}: "Private",
- [3]byte{96, 153, 209}: "Vuzix / Lenovo",
- [3]byte{96, 154, 164}: "GVI SECURITY INC.",
- [3]byte{96, 154, 193}: "Apple, Inc.",
- [3]byte{96, 155, 200}: "Hipad Intelligent Technology Co., Ltd.",
- [3]byte{96, 156, 159}: "Brocade Communications Systems, Inc.",
- [3]byte{96, 158, 100}: "Vivonic GmbH",
- [3]byte{96, 159, 157}: "CloudSwitch",
- [3]byte{96, 161, 10}: "Samsung Electronics Co.,Ltd",
- [3]byte{96, 163, 125}: "Apple, Inc.",
- [3]byte{96, 164, 76}: "ASUSTek COMPUTER INC.",
- [3]byte{96, 164, 208}: "Samsung Electronics Co.,Ltd",
- [3]byte{96, 168, 254}: "Nokia",
- [3]byte{96, 169, 176}: "Merchandising Technologies, Inc",
- [3]byte{96, 172, 200}: "KunTeng Inc.",
- [3]byte{96, 175, 109}: "Samsung Electronics Co.,Ltd",
- [3]byte{96, 177, 133}: "ATH system",
- [3]byte{96, 179, 135}: "Synergics Technologies GmbH",
- [3]byte{96, 179, 196}: "Elber Srl",
- [3]byte{96, 180, 247}: "Plume Design Inc",
- [3]byte{96, 182, 6}: "Phorus",
- [3]byte{96, 182, 23}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{96, 185, 51}: "Deutron Electronics Corp.",
- [3]byte{96, 185, 130}: "RO.VE.R. Laboratories S.p.A.",
- [3]byte{96, 186, 24}: "nextLAP GmbH",
- [3]byte{96, 187, 12}: "Beijing HuaqinWorld Technology Co,Ltd",
- [3]byte{96, 188, 76}: "EWM Hightec Welding GmbH",
- [3]byte{96, 189, 145}: "Move Innovation",
- [3]byte{96, 190, 181}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{96, 192, 191}: "ON Semiconductor",
- [3]byte{96, 193, 203}: "Fujian Great Power PLC Equipment Co.,Ltd",
- [3]byte{96, 195, 151}: "2Wire Inc",
- [3]byte{96, 197, 71}: "Apple, Inc.",
- [3]byte{96, 197, 168}: "Beijing LT Honway Technology Co.,Ltd",
- [3]byte{96, 197, 173}: "Samsung Electronics Co.,Ltd",
- [3]byte{96, 198, 88}: "PHYTRONIX Co.,Ltd.",
- [3]byte{96, 199, 152}: "Verifone",
- [3]byte{96, 201, 128}: "Trymus",
- [3]byte{96, 203, 251}: "AirScape Inc.",
- [3]byte{96, 205, 169}: "Abloomy",
- [3]byte{96, 205, 197}: "Taiwan Carol Electronics., Ltd",
- [3]byte{96, 208, 169}: "Samsung Electronics Co.,Ltd",
- [3]byte{96, 209, 170}: "Vishal Telecommunications Pvt Ltd",
- [3]byte{96, 210, 98}: "Tzukuri Pty Ltd",
- [3]byte{96, 210, 185}: "REALAND BIO CO., LTD.",
- [3]byte{96, 211, 10}: "Quatius Limited",
- [3]byte{96, 215, 227}: "IEEE Registration Authority",
- [3]byte{96, 216, 25}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{96, 217, 160}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{96, 217, 199}: "Apple, Inc.",
- [3]byte{96, 218, 35}: "Estech Co.,Ltd",
- [3]byte{96, 218, 131}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{96, 219, 42}: "HNS",
- [3]byte{96, 222, 68}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{96, 224, 14}: "SHINSEI ELECTRONICS CO LTD",
- [3]byte{96, 227, 39}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{96, 227, 172}: "LG Electronics (Mobile Communications)",
- [3]byte{96, 230, 188}: "Sino-Telecom Technology Co.,Ltd.",
- [3]byte{96, 231, 1}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{96, 231, 138}: "UNISEM",
- [3]byte{96, 233, 86}: "Ayla Networks, Inc",
- [3]byte{96, 235, 105}: "QUANTA COMPUTER INC.",
- [3]byte{96, 238, 92}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{96, 239, 198}: "Shenzhen Chima Technologies Co Limited",
- [3]byte{96, 241, 61}: "JABLOCOM s.r.o.",
- [3]byte{96, 241, 137}: "Murata Manufacturing Co., Ltd.",
- [3]byte{96, 242, 129}: "TRANWO TECHNOLOGY CO., LTD.",
- [3]byte{96, 242, 239}: "VisionVera International Co., Ltd.",
- [3]byte{96, 243, 218}: "Logic Way GmbH",
- [3]byte{96, 244, 69}: "Apple, Inc.",
- [3]byte{96, 244, 148}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{96, 245, 156}: "CRU-Dataport",
- [3]byte{96, 246, 115}: "TERUMO CORPORATION",
- [3]byte{96, 246, 119}: "Intel Corporate",
- [3]byte{96, 248, 29}: "Apple, Inc.",
- [3]byte{96, 250, 205}: "Apple, Inc.",
- [3]byte{96, 251, 66}: "Apple, Inc.",
- [3]byte{96, 253, 86}: "WOORISYSTEMS CO., Ltd",
- [3]byte{96, 254, 30}: "China Palms Telecom.Ltd",
- [3]byte{96, 254, 32}: "2Wire Inc",
- [3]byte{96, 254, 197}: "Apple, Inc.",
- [3]byte{96, 254, 249}: "Thomas & Betts",
- [3]byte{96, 255, 221}: "C.E. ELECTRONICS, INC",
- [3]byte{100, 0, 45}: "Powerlinq Co., LTD",
- [3]byte{100, 0, 106}: "Dell Inc.",
- [3]byte{100, 0, 241}: "Cisco Systems, Inc",
- [3]byte{100, 5, 190}: "NEW LIGHT LED",
- [3]byte{100, 5, 233}: "Shenzhen WayOS Technology Crop., Ltd.",
- [3]byte{100, 9, 76}: "Beijing Superbee Wireless Technology Co.,Ltd",
- [3]byte{100, 9, 128}: "Xiaomi Communications Co Ltd",
- [3]byte{100, 11, 74}: "Digital Telecom Technology Limited",
- [3]byte{100, 13, 206}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{100, 13, 230}: "Petra Systems",
- [3]byte{100, 14, 54}: "TAZTAG",
- [3]byte{100, 14, 148}: "Pluribus Networks, Inc.",
- [3]byte{100, 15, 40}: "2Wire Inc",
- [3]byte{100, 16, 132}: "HEXIUM Technical Development Co., Ltd.",
- [3]byte{100, 18, 37}: "Cisco Systems, Inc",
- [3]byte{100, 18, 105}: "ARRIS Group, Inc.",
- [3]byte{100, 19, 108}: "zte corporation",
- [3]byte{100, 22, 102}: "Nest Labs Inc.",
- [3]byte{100, 22, 127}: "Polycom",
- [3]byte{100, 22, 141}: "Cisco Systems, Inc",
- [3]byte{100, 22, 240}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{100, 26, 34}: "Heliospectra AB",
- [3]byte{100, 28, 103}: "DIGIBRAS INDUSTRIA DO BRASILS/A",
- [3]byte{100, 30, 129}: "Dowslake Microsystems",
- [3]byte{100, 32, 12}: "Apple, Inc.",
- [3]byte{100, 32, 159}: "Tilgin AB",
- [3]byte{100, 33, 132}: "Nippon Denki Kagaku Co.,LTD",
- [3]byte{100, 34, 22}: "Shandong Taixin Electronic co.,Ltd",
- [3]byte{100, 36, 0}: "Xorcom Ltd.",
- [3]byte{100, 39, 55}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{100, 43, 138}: "ALL BEST Industrial Co., Ltd.",
- [3]byte{100, 45, 183}: "SEUNGIL ELECTRONICS",
- [3]byte{100, 49, 80}: "Hewlett Packard",
- [3]byte{100, 49, 126}: "Dexin Corporation",
- [3]byte{100, 50, 168}: "Intel Corporate",
- [3]byte{100, 52, 9}: "BITwave Pte Ltd",
- [3]byte{100, 53, 28}: "e-CON SYSTEMS INDIA PVT LTD",
- [3]byte{100, 58, 177}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{100, 62, 140}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{100, 63, 95}: "Exablaze",
- [3]byte{100, 66, 20}: "Swisscom Energy Solutions AG",
- [3]byte{100, 67, 70}: "GuangDong Quick Network Computer CO.,LTD",
- [3]byte{100, 71, 224}: "Feitian Technologies Co., Ltd",
- [3]byte{100, 75, 195}: "Shanghai WOASiS Telecommunications Ltd., Co.",
- [3]byte{100, 75, 240}: "CalDigit, Inc",
- [3]byte{100, 77, 112}: "dSPACE GmbH",
- [3]byte{100, 79, 116}: "LENUS Co., Ltd.",
- [3]byte{100, 79, 176}: "Hyunjin.com",
- [3]byte{100, 81, 6}: "Hewlett Packard",
- [3]byte{100, 81, 126}: "LONG BEN (DONGGUAN) ELECTRONIC TECHNOLOGY CO.,LTD.",
- [3]byte{100, 82, 153}: "The Chamberlain Group, Inc",
- [3]byte{100, 83, 93}: "Frauscher Sensortechnik",
- [3]byte{100, 84, 34}: "Equinox Payments",
- [3]byte{100, 85, 99}: "Intelight Inc.",
- [3]byte{100, 85, 127}: "NSFOCUS Information Technology Co., Ltd.",
- [3]byte{100, 85, 177}: "ARRIS Group, Inc.",
- [3]byte{100, 86, 1}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{100, 89, 248}: "Vodafone Omnitel B.V.",
- [3]byte{100, 90, 4}: "Chicony Electronics Co., Ltd.",
- [3]byte{100, 93, 146}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{100, 93, 215}: "Shenzhen Lifesense Medical Electronics Co., Ltd.",
- [3]byte{100, 94, 190}: "Yahoo! JAPAN",
- [3]byte{100, 95, 255}: "Nicolet Neuro",
- [3]byte{100, 97, 132}: "VELUX",
- [3]byte{100, 98, 35}: "Cellient Co., Ltd.",
- [3]byte{100, 100, 155}: "Juniper Networks",
- [3]byte{100, 101, 192}: "Nuvon, Inc",
- [3]byte{100, 102, 179}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{100, 103, 7}: "Beijing Omnific Technology, Ltd.",
- [3]byte{100, 104, 12}: "Comtrend Corporation",
- [3]byte{100, 105, 188}: "Hytera Communications Co .,ltd",
- [3]byte{100, 106, 82}: "Avaya Inc",
- [3]byte{100, 106, 116}: "AUTH-SERVERS, LLC",
- [3]byte{100, 108, 178}: "Samsung Electronics Co.,Ltd",
- [3]byte{100, 110, 105}: "Liteon Technology Corporation",
- [3]byte{100, 110, 108}: "Radio Datacom LLC",
- [3]byte{100, 110, 234}: "Iskratel d.o.o.",
- [3]byte{100, 112, 2}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{100, 114, 216}: "GooWi Technology Co.,Limited",
- [3]byte{100, 115, 226}: "Arbiter Systems, Inc.",
- [3]byte{100, 116, 246}: "Shooter Detection Systems",
- [3]byte{100, 118, 87}: "Innovative Security Designs",
- [3]byte{100, 118, 186}: "Apple, Inc.",
- [3]byte{100, 119, 125}: "Hitron Technologies. Inc",
- [3]byte{100, 119, 145}: "Samsung Electronics Co.,Ltd",
- [3]byte{100, 121, 167}: "Phison Electronics Corp.",
- [3]byte{100, 123, 212}: "Texas Instruments",
- [3]byte{100, 124, 52}: "Ubee Interactive Co., Limited",
- [3]byte{100, 125, 129}: "YOKOTA INDUSTRIAL CO,.LTD",
- [3]byte{100, 127, 218}: "TEKTELIC Communications Inc.",
- [3]byte{100, 128, 139}: "VG Controls, Inc.",
- [3]byte{100, 128, 153}: "Intel Corporate",
- [3]byte{100, 129, 37}: "Alphatron Marine BV",
- [3]byte{100, 135, 136}: "Juniper Networks",
- [3]byte{100, 135, 215}: "ADB Broadband Italia",
- [3]byte{100, 136, 255}: "Sichuan Changhong Electric Ltd.",
- [3]byte{100, 137, 154}: "LG Electronics (Mobile Communications)",
- [3]byte{100, 141, 158}: "IVT Electronic Co.,Ltd",
- [3]byte{100, 153, 93}: "LGE",
- [3]byte{100, 153, 104}: "Elentec",
- [3]byte{100, 153, 160}: "AG Elektronik AB",
- [3]byte{100, 154, 8}: "Shenzhen SuperElectron Technology Co.,LTD",
- [3]byte{100, 154, 18}: "P2 Mobile Technologies Limited",
- [3]byte{100, 154, 190}: "Apple, Inc.",
- [3]byte{100, 155, 36}: "V Technology Co., Ltd.",
- [3]byte{100, 156, 129}: "Qualcomm Inc.",
- [3]byte{100, 156, 142}: "Texas Instruments",
- [3]byte{100, 158, 243}: "Cisco Systems, Inc",
- [3]byte{100, 159, 247}: "Kone OYj",
- [3]byte{100, 160, 231}: "Cisco Systems, Inc",
- [3]byte{100, 162, 50}: "OOO Samlight",
- [3]byte{100, 163, 65}: "Wonderlan (Beijing) Technology Co., Ltd.",
- [3]byte{100, 163, 203}: "Apple, Inc.",
- [3]byte{100, 165, 195}: "Apple, Inc.",
- [3]byte{100, 166, 81}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{100, 166, 143}: "Zhongshan Readboy Electronics Co.,Ltd",
- [3]byte{100, 167, 105}: "HTC Corporation",
- [3]byte{100, 167, 221}: "Avaya Inc",
- [3]byte{100, 168, 55}: "Juni Korea Co., Ltd",
- [3]byte{100, 174, 12}: "Cisco Systems, Inc",
- [3]byte{100, 174, 136}: "Polytec GmbH",
- [3]byte{100, 176, 166}: "Apple, Inc.",
- [3]byte{100, 178, 29}: "Chengdu Phycom Tech Co., Ltd.",
- [3]byte{100, 179, 16}: "Samsung Electronics Co.,Ltd",
- [3]byte{100, 179, 112}: "PowerComm Solutions LLC",
- [3]byte{100, 180, 115}: "Xiaomi Communications Co Ltd",
- [3]byte{100, 181, 198}: "Nintendo Co.,Ltd",
- [3]byte{100, 182, 74}: "ViVOtech, Inc.",
- [3]byte{100, 184, 83}: "Samsung Electronics Co.,Ltd",
- [3]byte{100, 185, 232}: "Apple, Inc.",
- [3]byte{100, 186, 189}: "SDJ Technologies, Inc.",
- [3]byte{100, 188, 12}: "LG Electronics (Mobile Communications)",
- [3]byte{100, 188, 17}: "CombiQ AB",
- [3]byte{100, 195, 84}: "Avaya Inc",
- [3]byte{100, 197, 170}: "South African Broadcasting Corporation",
- [3]byte{100, 198, 103}: "Barnes&Noble",
- [3]byte{100, 198, 175}: "AXERRA Networks Ltd",
- [3]byte{100, 201, 68}: "LARK Technologies, Inc",
- [3]byte{100, 203, 163}: "Pointmobile",
- [3]byte{100, 204, 46}: "Xiaomi Communications Co Ltd",
- [3]byte{100, 207, 217}: "Texas Instruments",
- [3]byte{100, 208, 45}: "Next Generation Integration (NGI)",
- [3]byte{100, 209, 84}: "Routerboard.com",
- [3]byte{100, 209, 163}: "Sitecom Europe BV",
- [3]byte{100, 210, 65}: "Keith & Koep GmbH",
- [3]byte{100, 212, 189}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{100, 212, 218}: "Intel Corporate",
- [3]byte{100, 216, 20}: "Cisco Systems, Inc",
- [3]byte{100, 217, 18}: "Solidica, Inc.",
- [3]byte{100, 217, 84}: "Taicang T&W Electronics",
- [3]byte{100, 217, 137}: "Cisco Systems, Inc",
- [3]byte{100, 218, 160}: "Robert Bosch Smart Home GmbH",
- [3]byte{100, 219, 24}: "OpenPattern",
- [3]byte{100, 219, 67}: "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
- [3]byte{100, 219, 129}: "Syszone Co., Ltd.",
- [3]byte{100, 219, 160}: "Select Comfort",
- [3]byte{100, 220, 1}: "Static Systems Group PLC",
- [3]byte{100, 222, 28}: "Kingnetic Pte Ltd",
- [3]byte{100, 223, 233}: "ATEME",
- [3]byte{100, 225, 97}: "DEP Corp.",
- [3]byte{100, 229, 153}: "EFM Networks",
- [3]byte{100, 230, 37}: "Woxu Wireless Co., Ltd",
- [3]byte{100, 230, 130}: "Apple, Inc.",
- [3]byte{100, 232, 79}: "Serialway Communication Technology Co. Ltd",
- [3]byte{100, 232, 146}: "Morio Denki Co., Ltd.",
- [3]byte{100, 232, 230}: "global moisture management system",
- [3]byte{100, 233, 80}: "Cisco Systems, Inc",
- [3]byte{100, 234, 197}: "SiboTech Automation Co., Ltd.",
- [3]byte{100, 235, 140}: "Seiko Epson Corporation",
- [3]byte{100, 237, 87}: "ARRIS Group, Inc.",
- [3]byte{100, 237, 98}: "WOORI SYSTEMS Co., Ltd",
- [3]byte{100, 242, 66}: "Gerdes Aktiengesellschaft",
- [3]byte{100, 245, 14}: "Kinion Technology Company Limited",
- [3]byte{100, 246, 157}: "Cisco Systems, Inc",
- [3]byte{100, 248, 138}: "China Mobile IOT Company Limited",
- [3]byte{100, 249, 112}: "Kenade Electronics Technology Co.,LTD.",
- [3]byte{100, 249, 135}: "Avvasi Inc.",
- [3]byte{100, 251, 80}: "RoomReady/Zdi, Inc.",
- [3]byte{100, 251, 129}: "IEEE Registration Authority",
- [3]byte{100, 252, 140}: "Zonar Systems",
- [3]byte{104, 2, 53}: "Konten Networks Inc.",
- [3]byte{104, 5, 113}: "Samsung Electronics Co.,Ltd",
- [3]byte{104, 5, 202}: "Intel Corporate",
- [3]byte{104, 7, 21}: "Intel Corporate",
- [3]byte{104, 9, 39}: "Apple, Inc.",
- [3]byte{104, 10, 215}: "Yancheng Kecheng Optoelectronic Technology Co., Ltd",
- [3]byte{104, 18, 45}: "Special Instrument Development Co., Ltd.",
- [3]byte{104, 18, 149}: "Lupine Lighting Systems GmbH",
- [3]byte{104, 20, 1}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{104, 21, 144}: "Sagemcom Broadband SAS",
- [3]byte{104, 21, 211}: "Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A.",
- [3]byte{104, 22, 5}: "Systems And Electronic Development FZCO",
- [3]byte{104, 23, 41}: "Intel Corporate",
- [3]byte{104, 25, 63}: "Digital Airways",
- [3]byte{104, 26, 178}: "zte corporation",
- [3]byte{104, 28, 162}: "Rosewill Inc.",
- [3]byte{104, 29, 100}: "Sunwave Communications Co., Ltd",
- [3]byte{104, 29, 239}: "Shenzhen CYX Technology Co., Ltd.",
- [3]byte{104, 30, 139}: "InfoSight Corporation",
- [3]byte{104, 31, 64}: "Blu Wireless Technology Ltd",
- [3]byte{104, 31, 216}: "Siemens Industry, Inc.",
- [3]byte{104, 35, 75}: "Nihon Dengyo Kousaku",
- [3]byte{104, 38, 42}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{104, 39, 55}: "Samsung Electronics Co.,Ltd",
- [3]byte{104, 40, 186}: "Dejai",
- [3]byte{104, 40, 246}: "Vubiq Networks, Inc.",
- [3]byte{104, 45, 220}: "Wuhan Changjiang Electro-Communication Equipment CO.,LTD",
- [3]byte{104, 49, 254}: "Teladin Co.,Ltd.",
- [3]byte{104, 53, 99}: "SHENZHEN LIOWN ELECTRONICS CO.,LTD.",
- [3]byte{104, 54, 181}: "DriveScale, Inc.",
- [3]byte{104, 55, 233}: "Amazon Technologies Inc.",
- [3]byte{104, 59, 30}: "Countwise LTD",
- [3]byte{104, 60, 125}: "Magic Intelligence Technology Limited",
- [3]byte{104, 62, 2}: "SIEMENS AG, Digital Factory, Motion Control System",
- [3]byte{104, 62, 52}: "MEIZU Technology Co., Ltd.",
- [3]byte{104, 62, 236}: "ERECA",
- [3]byte{104, 67, 82}: "Bhuu Limited",
- [3]byte{104, 72, 152}: "Samsung Electronics Co.,Ltd",
- [3]byte{104, 75, 136}: "Galtronics Telemetry Inc.",
- [3]byte{104, 76, 168}: "Shenzhen Herotel Tech. Co., Ltd.",
- [3]byte{104, 81, 183}: "PowerCloud Systems, Inc.",
- [3]byte{104, 83, 108}: "SPnS Co.,Ltd",
- [3]byte{104, 83, 136}: "P&S Technology",
- [3]byte{104, 84, 193}: "ColorTokens, Inc.",
- [3]byte{104, 84, 237}: "Alcatel-Lucent",
- [3]byte{104, 84, 245}: "enLighted Inc",
- [3]byte{104, 84, 253}: "Amazon Technologies Inc.",
- [3]byte{104, 88, 197}: "ZF TRW Automotive",
- [3]byte{104, 89, 127}: "Alcatel Lucent",
- [3]byte{104, 91, 53}: "Apple, Inc.",
- [3]byte{104, 91, 54}: "POWERTECH INDUSTRIAL CO., LTD.",
- [3]byte{104, 93, 67}: "Intel Corporate",
- [3]byte{104, 94, 107}: "PowerRay Co., Ltd.",
- [3]byte{104, 99, 89}: "Advanced Digital Broadcast SA",
- [3]byte{104, 100, 75}: "Apple, Inc.",
- [3]byte{104, 105, 46}: "Zycoo Co.,Ltd",
- [3]byte{104, 105, 117}: "Angler Labs Inc",
- [3]byte{104, 105, 242}: "ComAp s.r.o.",
- [3]byte{104, 110, 35}: "Wi3 Inc.",
- [3]byte{104, 110, 72}: "Prophet Electronic Technology Corp.,Ltd",
- [3]byte{104, 114, 81}: "Ubiquiti Networks Inc.",
- [3]byte{104, 114, 220}: "CETORY.TV Company Limited",
- [3]byte{104, 118, 79}: "Sony Mobile Communications AB",
- [3]byte{104, 120, 72}: "Westunitis Co., Ltd.",
- [3]byte{104, 120, 76}: "Nortel Networks",
- [3]byte{104, 121, 36}: "ELS-GmbH & Co. KG",
- [3]byte{104, 121, 237}: "SHARP Corporation",
- [3]byte{104, 124, 200}: "Measurement Systems S. de R.L.",
- [3]byte{104, 124, 213}: "Y Soft Corporation, a.s.",
- [3]byte{104, 127, 116}: "Cisco-Linksys, LLC",
- [3]byte{104, 131, 26}: "Pandora Mobility Corporation",
- [3]byte{104, 132, 112}: "eSSys Co.,Ltd",
- [3]byte{104, 133, 64}: "IGI Mobile, Inc.",
- [3]byte{104, 133, 106}: "OuterLink Corporation",
- [3]byte{104, 134, 167}: "Cisco Systems, Inc",
- [3]byte{104, 134, 231}: "Orbotix, Inc.",
- [3]byte{104, 135, 107}: "INQ Mobile Limited",
- [3]byte{104, 137, 193}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{104, 138, 181}: "EDP Servicos",
- [3]byte{104, 138, 240}: "zte corporation",
- [3]byte{104, 141, 182}: "AETEK INC.",
- [3]byte{104, 143, 132}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{104, 145, 208}: "IEEE Registration Authority",
- [3]byte{104, 146, 52}: "Ruckus Wireless",
- [3]byte{104, 147, 97}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{104, 148, 35}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{104, 150, 123}: "Apple, Inc.",
- [3]byte{104, 151, 75}: "Shenzhen Costar Electronics Co. Ltd.",
- [3]byte{104, 151, 232}: "Society of Motion Picture &amp; Television Engineers",
- [3]byte{104, 153, 205}: "Cisco Systems, Inc",
- [3]byte{104, 154, 183}: "Atelier Vision Corporation",
- [3]byte{104, 156, 94}: "AcSiP Technology Corp.",
- [3]byte{104, 156, 112}: "Apple, Inc.",
- [3]byte{104, 156, 226}: "Cisco Systems, Inc",
- [3]byte{104, 158, 25}: "Texas Instruments",
- [3]byte{104, 159, 240}: "zte corporation",
- [3]byte{104, 160, 246}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{104, 161, 183}: "Honghao Mingchuan Technology (Beijing) CO.,Ltd.",
- [3]byte{104, 163, 120}: "FREEBOX SAS",
- [3]byte{104, 163, 196}: "Liteon Technology Corporation",
- [3]byte{104, 164, 14}: "BSH Hausgeräte GmbH",
- [3]byte{104, 166, 130}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{104, 168, 40}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{104, 168, 109}: "Apple, Inc.",
- [3]byte{104, 170, 210}: "DATECS LTD.,",
- [3]byte{104, 171, 138}: "RF IDeas",
- [3]byte{104, 174, 32}: "Apple, Inc.",
- [3]byte{104, 175, 19}: "Futura Mobility",
- [3]byte{104, 176, 148}: "INESA ELECTRON CO.,LTD",
- [3]byte{104, 179, 94}: "Shenzhen Neostra Technology Co.Ltd",
- [3]byte{104, 180, 58}: "WaterFurnace International, Inc.",
- [3]byte{104, 181, 153}: "Hewlett Packard",
- [3]byte{104, 182, 252}: "Hitron Technologies. Inc",
- [3]byte{104, 184, 217}: "Act KDE, Inc.",
- [3]byte{104, 185, 131}: "b-plus GmbH",
- [3]byte{104, 188, 12}: "Cisco Systems, Inc",
- [3]byte{104, 189, 171}: "Cisco Systems, Inc",
- [3]byte{104, 196, 77}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{104, 198, 58}: "Espressif Inc.",
- [3]byte{104, 201, 11}: "Texas Instruments",
- [3]byte{104, 202, 0}: "Octopus Systems Limited",
- [3]byte{104, 204, 110}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{104, 204, 156}: "Mine Site Technologies",
- [3]byte{104, 205, 15}: "U Tek Company Limited",
- [3]byte{104, 206, 78}: "L-3 Communications Infrared Products",
- [3]byte{104, 209, 253}: "Shenzhen Trimax Technology Co.,Ltd",
- [3]byte{104, 210, 71}: "Portalis LC",
- [3]byte{104, 217, 37}: "ProSys Development Services",
- [3]byte{104, 217, 60}: "Apple, Inc.",
- [3]byte{104, 219, 84}: "Phicomm (Shanghai) Co., Ltd.",
- [3]byte{104, 219, 103}: "Nantong Coship Electronics Co., Ltd",
- [3]byte{104, 219, 150}: "OPWILL Technologies CO .,LTD",
- [3]byte{104, 219, 202}: "Apple, Inc.",
- [3]byte{104, 220, 232}: "PacketStorm Communications",
- [3]byte{104, 223, 221}: "Xiaomi Communications Co Ltd",
- [3]byte{104, 225, 102}: "Private",
- [3]byte{104, 228, 31}: "Unglaube Identech GmbH",
- [3]byte{104, 232, 235}: "Linktel Technologies Co.,Ltd",
- [3]byte{104, 235, 174}: "Samsung Electronics Co.,Ltd",
- [3]byte{104, 235, 197}: "Angstrem Telecom",
- [3]byte{104, 236, 98}: "YODO Technology Corp. Ltd.",
- [3]byte{104, 236, 197}: "Intel Corporate",
- [3]byte{104, 237, 67}: "BlackBerry RTS",
- [3]byte{104, 237, 164}: "Shenzhen Seavo Technology Co.,Ltd",
- [3]byte{104, 238, 150}: "Cisco SPVTG",
- [3]byte{104, 239, 189}: "Cisco Systems, Inc",
- [3]byte{104, 240, 109}: "ALONG INDUSTRIAL CO., LIMITED",
- [3]byte{104, 240, 188}: "Shenzhen LiWiFi Technology Co., Ltd",
- [3]byte{104, 241, 37}: "Data Controls Inc.",
- [3]byte{104, 247, 40}: "LCFC(HeFei) Electronics Technology co., ltd",
- [3]byte{104, 248, 149}: "Redflow Limited",
- [3]byte{104, 249, 86}: "Objetivos y Servicio de Valor Añadido",
- [3]byte{104, 251, 126}: "Apple, Inc.",
- [3]byte{104, 251, 149}: "Generalplus Technology Inc.",
- [3]byte{104, 252, 179}: "Next Level Security Systems, Inc.",
- [3]byte{108, 2, 115}: "Shenzhen Jin Yun Video Equipment Co., Ltd.",
- [3]byte{108, 4, 96}: "RBH Access Technologies Inc.",
- [3]byte{108, 5, 213}: "Ethertronics Inc",
- [3]byte{108, 9, 10}: "GEMATICA SRL",
- [3]byte{108, 9, 214}: "Digiquest Electronics LTD",
- [3]byte{108, 11, 132}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{108, 14, 13}: "Sony Mobile Communications AB",
- [3]byte{108, 14, 230}: "Chengdu Xiyida Electronic Technology Co,.Ltd",
- [3]byte{108, 15, 106}: "JDC Tech Co., Ltd.",
- [3]byte{108, 20, 247}: "Erhardt+Leimer GmbH",
- [3]byte{108, 21, 249}: "Nautronix Limited",
- [3]byte{108, 22, 14}: "ShotTracker",
- [3]byte{108, 24, 17}: "Decatur Electronics",
- [3]byte{108, 25, 143}: "D-Link International",
- [3]byte{108, 25, 192}: "Apple, Inc.",
- [3]byte{108, 30, 112}: "Guangzhou YBDS IT Co.,Ltd",
- [3]byte{108, 30, 144}: "Hansol Technics Co., Ltd.",
- [3]byte{108, 32, 86}: "Cisco Systems, Inc",
- [3]byte{108, 34, 171}: "Ainsworth Game Technology",
- [3]byte{108, 35, 185}: "Sony Mobile Communications AB",
- [3]byte{108, 36, 131}: "Microsoft Mobile Oy",
- [3]byte{108, 37, 185}: "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
- [3]byte{108, 39, 121}: "Microsoft Mobile Oy",
- [3]byte{108, 41, 149}: "Intel Corporate",
- [3]byte{108, 42, 203}: "Paxton Access Ltd",
- [3]byte{108, 44, 6}: "OOO NPP Systemotechnika-NN",
- [3]byte{108, 46, 51}: "Accelink Technologies Co.,Ltd.",
- [3]byte{108, 46, 114}: "B&B EXPORTING LIMITED",
- [3]byte{108, 46, 133}: "Sagemcom Broadband SAS",
- [3]byte{108, 47, 44}: "Samsung Electronics Co.,Ltd",
- [3]byte{108, 50, 222}: "Indieon Technologies Pvt. Ltd.",
- [3]byte{108, 51, 169}: "Magicjack LP",
- [3]byte{108, 56, 161}: "Ubee Interactive Co., Limited",
- [3]byte{108, 57, 29}: "Beijing ZhongHuaHun Network Information center",
- [3]byte{108, 58, 132}: "Shenzhen Aero-Startech. Co.Ltd",
- [3]byte{108, 59, 107}: "Routerboard.com",
- [3]byte{108, 59, 229}: "Hewlett Packard",
- [3]byte{108, 60, 83}: "SoundHawk Corp",
- [3]byte{108, 62, 109}: "Apple, Inc.",
- [3]byte{108, 62, 156}: "KE Knestel Elektronik GmbH",
- [3]byte{108, 64, 8}: "Apple, Inc.",
- [3]byte{108, 64, 198}: "Nimbus Data Systems, Inc.",
- [3]byte{108, 65, 106}: "Cisco Systems, Inc",
- [3]byte{108, 68, 24}: "Zappware",
- [3]byte{108, 69, 152}: "Antex Electronic Corp.",
- [3]byte{108, 73, 193}: "o2ones Co., Ltd.",
- [3]byte{108, 74, 57}: "BITA",
- [3]byte{108, 75, 127}: "Vossloh-Schwabe Deutschland GmbH",
- [3]byte{108, 75, 144}: "LiteON",
- [3]byte{108, 78, 134}: "Third Millennium Systems Ltd.",
- [3]byte{108, 80, 77}: "Cisco Systems, Inc",
- [3]byte{108, 86, 151}: "Amazon Technologies Inc.",
- [3]byte{108, 87, 121}: "Aclima, Inc.",
- [3]byte{108, 89, 64}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{108, 89, 118}: "Shanghai Tricheer Technology Co.,Ltd.",
- [3]byte{108, 90, 52}: "Shenzhen Haitianxiong Electronic Co., Ltd.",
- [3]byte{108, 90, 181}: "TCL Technoly Electronics (Huizhou) Co., Ltd.",
- [3]byte{108, 92, 20}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{108, 92, 222}: "SunReports, Inc.",
- [3]byte{108, 93, 99}: "ShenZhen Rapoo Technology Co., Ltd.",
- [3]byte{108, 94, 122}: "Ubiquitous Internet Telecom Co., Ltd",
- [3]byte{108, 95, 28}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{108, 96, 235}: "ZHI YUAN ELECTRONICS CO., LIMITED",
- [3]byte{108, 97, 38}: "Rinicom Holdings",
- [3]byte{108, 98, 109}: "Micro-Star INT'L CO., LTD",
- [3]byte{108, 100, 26}: "Penguin Computing",
- [3]byte{108, 110, 254}: "Core Logic Inc.",
- [3]byte{108, 111, 24}: "Stereotaxis, Inc.",
- [3]byte{108, 112, 57}: "Novar GmbH",
- [3]byte{108, 112, 159}: "Apple, Inc.",
- [3]byte{108, 113, 189}: "EZELINK TELECOM",
- [3]byte{108, 113, 217}: "AzureWave Technology Inc.",
- [3]byte{108, 114, 32}: "D-Link International",
- [3]byte{108, 114, 231}: "Apple, Inc.",
- [3]byte{108, 117, 13}: "WiFiSONG",
- [3]byte{108, 118, 96}: "KYOCERA CORPORATION",
- [3]byte{108, 129, 254}: "Mitsuba Corporation",
- [3]byte{108, 131, 54}: "Samsung Electronics Co.,Ltd",
- [3]byte{108, 131, 102}: "Nanjing SAC Power Grid Automation Co., Ltd.",
- [3]byte{108, 134, 134}: "Technonia",
- [3]byte{108, 136, 20}: "Intel Corporate",
- [3]byte{108, 139, 47}: "zte corporation",
- [3]byte{108, 140, 219}: "Otus Technologies Ltd",
- [3]byte{108, 141, 101}: "Wireless Glue Networks, Inc.",
- [3]byte{108, 141, 193}: "Apple, Inc.",
- [3]byte{108, 143, 181}: "Microsoft Mobile Oy",
- [3]byte{108, 144, 177}: "SanLogic Inc",
- [3]byte{108, 146, 191}: "Inspur Electronic Information Industry Co.,Ltd.",
- [3]byte{108, 147, 84}: "Yaojin Technology (Shenzhen) Co., LTD.",
- [3]byte{108, 148, 248}: "Apple, Inc.",
- [3]byte{108, 149, 34}: "Scalys",
- [3]byte{108, 150, 207}: "Apple, Inc.",
- [3]byte{108, 152, 235}: "Riverbed Technology, Inc.",
- [3]byte{108, 153, 137}: "Cisco Systems, Inc",
- [3]byte{108, 154, 201}: "Valentine Research, Inc.",
- [3]byte{108, 155, 2}: "Nokia Corporation",
- [3]byte{108, 156, 233}: "Nimble Storage",
- [3]byte{108, 156, 237}: "Cisco Systems, Inc",
- [3]byte{108, 161, 0}: "Intel Corporate",
- [3]byte{108, 166, 130}: "EDAM information & communications",
- [3]byte{108, 167, 95}: "zte corporation",
- [3]byte{108, 167, 128}: "Nokia Corporation",
- [3]byte{108, 167, 250}: "YOUNGBO ENGINEERING INC.",
- [3]byte{108, 168, 73}: "Avaya Inc",
- [3]byte{108, 168, 88}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{108, 169, 6}: "Telefield Ltd",
- [3]byte{108, 169, 111}: "TransPacket AS",
- [3]byte{108, 170, 179}: "Ruckus Wireless",
- [3]byte{108, 171, 49}: "Apple, Inc.",
- [3]byte{108, 171, 77}: "Digital Payment Technologies",
- [3]byte{108, 172, 96}: "Venetex Corp",
- [3]byte{108, 173, 63}: "Hubbell Building Automation, Inc.",
- [3]byte{108, 173, 239}: "KZ Broadband Technologies, Ltd.",
- [3]byte{108, 173, 248}: "AzureWave Technology Inc.",
- [3]byte{108, 174, 139}: "IBM Corporation",
- [3]byte{108, 176, 206}: "NETGEAR",
- [3]byte{108, 178, 39}: "Sony Video & Sound Products Inc.",
- [3]byte{108, 178, 174}: "Cisco Systems, Inc",
- [3]byte{108, 179, 17}: "Shenzhen Lianrui Electronics Co.,Ltd",
- [3]byte{108, 179, 80}: "Anhui comhigher tech co.,ltd",
- [3]byte{108, 180, 167}: "Landauer, Inc.",
- [3]byte{108, 181, 107}: "HUMAX Co., Ltd.",
- [3]byte{108, 183, 73}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{108, 183, 244}: "Samsung Electronics Co.,Ltd",
- [3]byte{108, 185, 197}: "Delta Networks, Inc.",
- [3]byte{108, 190, 233}: "Alcatel-Lucent IPD",
- [3]byte{108, 191, 181}: "Noon Technology Co., Ltd",
- [3]byte{108, 193, 71}: "Xiamen Hanin Electronic Technology Co., Ltd",
- [3]byte{108, 193, 210}: "ARRIS Group, Inc.",
- [3]byte{108, 194, 23}: "Hewlett Packard",
- [3]byte{108, 194, 107}: "Apple, Inc.",
- [3]byte{108, 202, 8}: "ARRIS Group, Inc.",
- [3]byte{108, 208, 50}: "LG Electronics",
- [3]byte{108, 209, 70}: "Smartek d.o.o.",
- [3]byte{108, 209, 176}: "WING SING ELECTRONICS HONG KONG LIMITED",
- [3]byte{108, 214, 138}: "LG Electronics (Mobile Communications)",
- [3]byte{108, 220, 106}: "Promethean Limited",
- [3]byte{108, 221, 48}: "Cisco Systems, Inc",
- [3]byte{108, 224, 30}: "Modcam AB",
- [3]byte{108, 224, 176}: "SOUND4",
- [3]byte{108, 227, 182}: "Nera Telecommunications Ltd.",
- [3]byte{108, 228, 206}: "Villiger Security Solutions AG",
- [3]byte{108, 232, 115}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{108, 233, 7}: "Nokia Corporation",
- [3]byte{108, 233, 131}: "Gastron Co., LTD.",
- [3]byte{108, 235, 178}: "Dongguan Sen DongLv Electronics Co.,Ltd",
- [3]byte{108, 236, 90}: "Hon Hai Precision Ind. CO.,Ltd.",
- [3]byte{108, 236, 161}: "SHENZHEN CLOU ELECTRONICS CO. LTD.",
- [3]byte{108, 236, 235}: "Texas Instruments",
- [3]byte{108, 239, 198}: "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.",
- [3]byte{108, 240, 73}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{108, 243, 115}: "Samsung Electronics Co.,Ltd",
- [3]byte{108, 243, 127}: "Aruba Networks",
- [3]byte{108, 245, 232}: "Mooredoll Inc.",
- [3]byte{108, 249, 124}: "Nanoptix Inc.",
- [3]byte{108, 249, 210}: "Chengdu Goods for the Road Electronic Technology C",
- [3]byte{108, 250, 88}: "Avaya Inc",
- [3]byte{108, 250, 137}: "Cisco Systems, Inc",
- [3]byte{108, 250, 167}: "AMPAK Technology, Inc.",
- [3]byte{108, 253, 185}: "Proware Technologies Co Ltd.",
- [3]byte{108, 255, 190}: "MPB Communications Inc.",
- [3]byte{112, 1, 54}: "FATEK Automation Corporation",
- [3]byte{112, 2, 88}: "01DB-METRAVIB",
- [3]byte{112, 5, 20}: "LG Electronics (Mobile Communications)",
- [3]byte{112, 11, 192}: "Dewav Technology Company",
- [3]byte{112, 15, 199}: "SHENZHEN IKINLOOP TECHNOLOGY CO.,LTD.",
- [3]byte{112, 15, 236}: "Poindus Systems Corp.",
- [3]byte{112, 16, 92}: "Cisco Systems, Inc",
- [3]byte{112, 16, 111}: "Hewlett Packard Enterprise",
- [3]byte{112, 17, 36}: "Apple, Inc.",
- [3]byte{112, 17, 174}: "Music Life LTD",
- [3]byte{112, 20, 4}: "Limited Liability Company",
- [3]byte{112, 20, 166}: "Apple, Inc.",
- [3]byte{112, 24, 139}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{112, 26, 4}: "Liteon Technology Corporation",
- [3]byte{112, 26, 237}: "ADVAS CO., LTD.",
- [3]byte{112, 28, 231}: "Intel Corporate",
- [3]byte{112, 29, 127}: "Comtech Technology Co., Ltd.",
- [3]byte{112, 29, 196}: "NorthStar Battery Company, LLC",
- [3]byte{112, 31, 83}: "Cisco Systems, Inc",
- [3]byte{112, 32, 132}: "Hon Hai Precision Ind. Co., Ltd.",
- [3]byte{112, 35, 147}: "fos4X GmbH",
- [3]byte{112, 37, 38}: "Nokia",
- [3]byte{112, 37, 89}: "CyberTAN Technology Inc.",
- [3]byte{112, 38, 5}: "SONY Visual Products Inc.",
- [3]byte{112, 40, 139}: "Samsung Electronics Co.,Ltd",
- [3]byte{112, 41, 0}: "Shenzhen ChipTrip Technology Co,Ltd",
- [3]byte{112, 42, 125}: "EpSpot AB",
- [3]byte{112, 43, 29}: "E-Domus International Limited",
- [3]byte{112, 44, 31}: "Wisol",
- [3]byte{112, 45, 132}: "i4C Innovations",
- [3]byte{112, 45, 209}: "Newings Communication CO., LTD.",
- [3]byte{112, 46, 34}: "zte corporation",
- [3]byte{112, 47, 75}: "PolyVision Inc.",
- [3]byte{112, 47, 151}: "Aava Mobile Oy",
- [3]byte{112, 48, 24}: "Avaya Inc",
- [3]byte{112, 48, 93}: "Ubiquoss Inc",
- [3]byte{112, 48, 94}: "Nanjing Zhongke Menglian Information Technology Co.,LTD",
- [3]byte{112, 49, 135}: "ACX GmbH",
- [3]byte{112, 50, 213}: "Athena Wireless Communications Inc",
- [3]byte{112, 56, 17}: "Invensys Rail",
- [3]byte{112, 56, 180}: "Low Tech Solutions",
- [3]byte{112, 56, 238}: "Avaya Inc",
- [3]byte{112, 58, 14}: "Aruba Networks",
- [3]byte{112, 58, 203}: "Google, Inc.",
- [3]byte{112, 58, 216}: "Shenzhen Afoundry Electronic Co., Ltd",
- [3]byte{112, 60, 3}: "RadiAnt Co.,Ltd",
- [3]byte{112, 60, 57}: "SEAWING Kft",
- [3]byte{112, 61, 21}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{112, 62, 172}: "Apple, Inc.",
- [3]byte{112, 65, 183}: "Edwards Lifesciences LLC",
- [3]byte{112, 70, 66}: "CHYNG HONG ELECTRONIC CO., LTD.",
- [3]byte{112, 71, 233}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{112, 72, 15}: "Apple, Inc.",
- [3]byte{112, 74, 174}: "Xstream Flow (Pty) Ltd",
- [3]byte{112, 74, 228}: "Rinstrum Pty Ltd",
- [3]byte{112, 76, 165}: "Fortinet, Inc.",
- [3]byte{112, 76, 237}: "TMRG, Inc.",
- [3]byte{112, 77, 123}: "ASUSTek COMPUTER INC.",
- [3]byte{112, 78, 1}: "KWANGWON TECH CO., LTD.",
- [3]byte{112, 78, 102}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{112, 79, 87}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{112, 80, 175}: "BSkyB Ltd",
- [3]byte{112, 82, 197}: "Avaya Inc",
- [3]byte{112, 83, 63}: "Alfa Instrumentos Eletronicos Ltda.",
- [3]byte{112, 84, 210}: "PEGATRON CORPORATION",
- [3]byte{112, 84, 245}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{112, 86, 129}: "Apple, Inc.",
- [3]byte{112, 88, 18}: "Panasonic Corporation AVC Networks Company",
- [3]byte{112, 88, 150}: "InShow Technology",
- [3]byte{112, 89, 87}: "Medallion Instrumentation Systems",
- [3]byte{112, 89, 134}: "OOO TTV",
- [3]byte{112, 90, 15}: "Hewlett Packard",
- [3]byte{112, 90, 158}: "Technicolor CH USA Inc.",
- [3]byte{112, 90, 182}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{112, 91, 46}: "M2Communication Inc.",
- [3]byte{112, 92, 173}: "Konami Gaming Inc",
- [3]byte{112, 94, 170}: "Action Target, Inc.",
- [3]byte{112, 96, 222}: "LaVision GmbH",
- [3]byte{112, 97, 115}: "Calantec GmbH",
- [3]byte{112, 98, 184}: "D-Link International",
- [3]byte{112, 100, 23}: "ORBIS TECNOLOGIA ELECTRICA S.A.",
- [3]byte{112, 101, 130}: "Suzhou Hanming Technologies Co., Ltd.",
- [3]byte{112, 101, 163}: "Kandao lightforge Co., Ltd.",
- [3]byte{112, 102, 27}: "Sonova AG",
- [3]byte{112, 104, 121}: "Saijo Denki International Co., Ltd.",
- [3]byte{112, 107, 185}: "Cisco Systems, Inc",
- [3]byte{112, 109, 236}: "Wifi-soft LLC",
- [3]byte{112, 110, 109}: "Cisco Systems, Inc",
- [3]byte{112, 111, 129}: "Private",
- [3]byte{112, 112, 13}: "Apple, Inc.",
- [3]byte{112, 112, 76}: "Purple Communications, Inc",
- [3]byte{112, 112, 139}: "Cisco Systems, Inc",
- [3]byte{112, 113, 179}: "Brain Corporation",
- [3]byte{112, 113, 188}: "PEGATRON CORPORATION",
- [3]byte{112, 114, 13}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{112, 114, 60}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{112, 114, 207}: "EdgeCore Networks",
- [3]byte{112, 115, 203}: "Apple, Inc.",
- [3]byte{112, 118, 48}: "ARRIS Group, Inc.",
- [3]byte{112, 118, 221}: "Oxyguard International A/S",
- [3]byte{112, 118, 240}: "LevelOne Communications (India) Private Limited",
- [3]byte{112, 118, 255}: "KERLINK",
- [3]byte{112, 119, 129}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{112, 120, 139}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{112, 121, 56}: "Wuxi Zhanrui Electronic Technology Co.,LTD",
- [3]byte{112, 121, 144}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{112, 123, 232}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{112, 124, 24}: "ADATA Technology Co., Ltd",
- [3]byte{112, 124, 105}: "Avaya Inc",
- [3]byte{112, 125, 149}: "Shenzhen City LinwlanTechnology Co. Ltd.",
- [3]byte{112, 125, 185}: "Cisco Systems, Inc",
- [3]byte{112, 126, 67}: "ARRIS Group, Inc.",
- [3]byte{112, 126, 222}: "NASTEC LTD.",
- [3]byte{112, 129, 5}: "Cisco Systems, Inc",
- [3]byte{112, 129, 235}: "Apple, Inc.",
- [3]byte{112, 130, 14}: "as electronics GmbH",
- [3]byte{112, 130, 142}: "OleumTech Corporation",
- [3]byte{112, 133, 194}: "ASRock Incorporation",
- [3]byte{112, 133, 198}: "ARRIS Group, Inc.",
- [3]byte{112, 134, 193}: "Texas Instruments",
- [3]byte{112, 136, 77}: "JAPAN RADIO CO., LTD.",
- [3]byte{112, 138, 9}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{112, 139, 120}: "citygrow technology co., ltd",
- [3]byte{112, 139, 205}: "ASUSTek COMPUTER INC.",
- [3]byte{112, 141, 9}: "Nokia Corporation",
- [3]byte{112, 145, 143}: "Weber-Stephen Products LLC",
- [3]byte{112, 145, 243}: "Universal Electronics, Inc.",
- [3]byte{112, 147, 131}: "Intelligent Optical Network High Tech CO.,LTD.",
- [3]byte{112, 147, 248}: "Space Monkey, Inc.",
- [3]byte{112, 151, 86}: "Happyelectronics Co.,Ltd",
- [3]byte{112, 153, 28}: "Shenzhen Honesty Electronics Co.,Ltd",
- [3]byte{112, 154, 11}: "Italian Institute of Technology",
- [3]byte{112, 155, 165}: "Shenzhen Y&D Electronics Co.,LTD.",
- [3]byte{112, 155, 252}: "Bryton Inc.",
- [3]byte{112, 156, 143}: "Nero AG",
- [3]byte{112, 158, 41}: "Sony Interactive Entertainment Inc.",
- [3]byte{112, 158, 134}: "X6D Limited",
- [3]byte{112, 159, 45}: "zte corporation",
- [3]byte{112, 161, 145}: "Trendsetter Medical, LLC",
- [3]byte{112, 162, 179}: "Apple, Inc.",
- [3]byte{112, 164, 28}: "Advanced Wireless Dynamics S.L.",
- [3]byte{112, 166, 106}: "Prox Dynamics AS",
- [3]byte{112, 168, 76}: "MONAD., Inc.",
- [3]byte{112, 168, 227}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{112, 170, 178}: "BlackBerry RTS",
- [3]byte{112, 173, 84}: "Malvern Instruments Ltd",
- [3]byte{112, 175, 36}: "TP Vision Belgium NV",
- [3]byte{112, 175, 37}: "Nishiyama Industry Co.,LTD.",
- [3]byte{112, 175, 106}: "SHENZHEN FENGLIAN TECHNOLOGY CO., LTD.",
- [3]byte{112, 176, 53}: "Shenzhen Zowee Technology Co., Ltd",
- [3]byte{112, 176, 140}: "Shenou Communication Equipment Co.,Ltd",
- [3]byte{112, 177, 78}: "ARRIS Group, Inc.",
- [3]byte{112, 178, 101}: "Hiltron s.r.l.",
- [3]byte{112, 179, 213}: "IEEE Registration Authority",
- [3]byte{112, 181, 153}: "Embedded Technologies s.r.o.",
- [3]byte{112, 183, 226}: "Jiangsu Miter Technology Co.,Ltd.",
- [3]byte{112, 185, 33}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{112, 186, 239}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{112, 191, 62}: "Charles River Laboratories",
- [3]byte{112, 198, 172}: "Bosch Automotive Aftermarket",
- [3]byte{112, 199, 111}: "INNO S",
- [3]byte{112, 202, 77}: "Shenzhen lnovance Technology Co.,Ltd.",
- [3]byte{112, 202, 155}: "Cisco Systems, Inc",
- [3]byte{112, 205, 96}: "Apple, Inc.",
- [3]byte{112, 211, 121}: "Cisco Systems, Inc",
- [3]byte{112, 212, 242}: "RIM",
- [3]byte{112, 213, 126}: "Scalar Corporation",
- [3]byte{112, 213, 231}: "Wellcore Corporation",
- [3]byte{112, 214, 182}: "Metrum Technologies",
- [3]byte{112, 216, 128}: "Upos System sp. z o.o.",
- [3]byte{112, 217, 35}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{112, 217, 49}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{112, 218, 156}: "TECSEN",
- [3]byte{112, 219, 152}: "Cisco Systems, Inc",
- [3]byte{112, 221, 161}: "Tellabs",
- [3]byte{112, 222, 226}: "Apple, Inc.",
- [3]byte{112, 222, 249}: "FAI WAH INTERNATIONAL (HONG KONG) LIMITED",
- [3]byte{112, 223, 47}: "Cisco Systems, Inc",
- [3]byte{112, 224, 39}: "HONGYU COMMUNICATION TECHNOLOGY LIMITED",
- [3]byte{112, 225, 57}: "3view Ltd",
- [3]byte{112, 225, 253}: "FLEXTRONICS",
- [3]byte{112, 226, 76}: "SAE IT-systems GmbH & Co. KG",
- [3]byte{112, 226, 132}: "Wistron Infocomm (Zhongshan) Corporation",
- [3]byte{112, 228, 34}: "Cisco Systems, Inc",
- [3]byte{112, 229, 110}: "Texas Instruments",
- [3]byte{112, 231, 44}: "Apple, Inc.",
- [3]byte{112, 232, 67}: "Beijing C&W Optical Communication Technology Co.,Ltd.",
- [3]byte{112, 236, 228}: "Apple, Inc.",
- [3]byte{112, 238, 80}: "Netatmo",
- [3]byte{112, 238, 163}: "Eoptolink Technology Inc. Ltd,",
- [3]byte{112, 240, 135}: "Apple, Inc.",
- [3]byte{112, 241, 28}: "Shenzhen Ogemray Technology Co.,Ltd",
- [3]byte{112, 241, 118}: "Data Modul AG",
- [3]byte{112, 241, 150}: "Actiontec Electronics, Inc",
- [3]byte{112, 241, 161}: "Liteon Technology Corporation",
- [3]byte{112, 241, 229}: "Xetawave LLC",
- [3]byte{112, 243, 90}: "Cisco Systems, Inc",
- [3]byte{112, 243, 149}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{112, 248, 231}: "IEEE Registration Authority",
- [3]byte{112, 249, 39}: "Samsung Electronics Co.,Ltd",
- [3]byte{112, 249, 109}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{112, 252, 140}: "OneAccess SA",
- [3]byte{112, 255, 92}: "Cheerzing Communication(Xiamen)Technology Co.,Ltd",
- [3]byte{112, 255, 118}: "Texas Instruments",
- [3]byte{116, 3, 189}: "BUFFALO.INC",
- [3]byte{116, 4, 43}: "Lenovo Mobile Communication (Wuhan) Company Limited",
- [3]byte{116, 10, 188}: "LightwaveRF Technology Ltd",
- [3]byte{116, 14, 219}: "Optowiz Co., Ltd",
- [3]byte{116, 20, 137}: "SRT Wireless",
- [3]byte{116, 21, 226}: "Tri-Sen Systems Corporation",
- [3]byte{116, 24, 101}: "Shanghai DareGlobal Technologies Co.,Ltd",
- [3]byte{116, 25, 248}: "IEEE Registration Authority",
- [3]byte{116, 26, 224}: "IEEE Registration Authority",
- [3]byte{116, 27, 178}: "Apple, Inc.",
- [3]byte{116, 28, 39}: "ITEL MOBILE LIMITED",
- [3]byte{116, 30, 147}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{116, 31, 74}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{116, 35, 68}: "Xiaomi Communications Co Ltd",
- [3]byte{116, 37, 138}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{116, 38, 172}: "Cisco Systems, Inc",
- [3]byte{116, 39, 60}: "ChangYang Technology (Nanjing) Co., LTD",
- [3]byte{116, 39, 234}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{116, 40, 87}: "Mayfield Robotics",
- [3]byte{116, 41, 175}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{116, 43, 15}: "Infinidat Ltd.",
- [3]byte{116, 43, 98}: "FUJITSU LIMITED",
- [3]byte{116, 45, 10}: "Norfolk Elektronik AG",
- [3]byte{116, 46, 252}: "DirectPacket Research, Inc,",
- [3]byte{116, 47, 104}: "AzureWave Technology Inc.",
- [3]byte{116, 49, 112}: "Arcadyan Technology Corporation",
- [3]byte{116, 50, 86}: "NT-ware Systemprg GmbH",
- [3]byte{116, 55, 47}: "Tongfang Shenzhen Cloudcomputing Technology Co.,Ltd",
- [3]byte{116, 55, 59}: "UNINET Co.,Ltd.",
- [3]byte{116, 56, 137}: "ANNAX Anzeigesysteme GmbH",
- [3]byte{116, 58, 101}: "NEC Corporation",
- [3]byte{116, 62, 43}: "Ruckus Wireless",
- [3]byte{116, 62, 203}: "Gentrice tech",
- [3]byte{116, 68, 1}: "NETGEAR",
- [3]byte{116, 69, 138}: "Samsung Electronics Co.,Ltd",
- [3]byte{116, 70, 160}: "Hewlett Packard",
- [3]byte{116, 74, 164}: "zte corporation",
- [3]byte{116, 75, 233}: "EXPLORER HYPERTECH CO.,LTD",
- [3]byte{116, 77, 121}: "Arrive Systems Inc.",
- [3]byte{116, 81, 186}: "Xiaomi Communications Co Ltd",
- [3]byte{116, 83, 39}: "COMMSEN CO., LIMITED",
- [3]byte{116, 84, 39}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{116, 84, 125}: "Cisco SPVTG",
- [3]byte{116, 86, 18}: "ARRIS Group, Inc.",
- [3]byte{116, 87, 152}: "TRUMPF Laser GmbH + Co. KG",
- [3]byte{116, 90, 170}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{116, 92, 75}: "GN Audio A/S",
- [3]byte{116, 92, 159}: "TCT mobile ltd",
- [3]byte{116, 94, 28}: "PIONEER CORPORATION",
- [3]byte{116, 95, 0}: "Samsung Semiconductor Inc.",
- [3]byte{116, 95, 174}: "TSL PPL",
- [3]byte{116, 97, 75}: "Chongqing Huijiatong Information Technology Co., Ltd.",
- [3]byte{116, 99, 223}: "VTS GmbH",
- [3]byte{116, 101, 209}: "Atlinks",
- [3]byte{116, 102, 48}: "T:mi Ytti",
- [3]byte{116, 103, 247}: "Extreme Networks, Inc.",
- [3]byte{116, 106, 58}: "Aperi Corporation",
- [3]byte{116, 106, 137}: "Rezolt Corporation",
- [3]byte{116, 106, 143}: "VS Vision Systems GmbH",
- [3]byte{116, 107, 130}: "MOVEK",
- [3]byte{116, 110, 228}: "Asia Vital Components Co.,Ltd.",
- [3]byte{116, 111, 25}: "ICARVISIONS (SHENZHEN) TECHNOLOGY CO., LTD.",
- [3]byte{116, 111, 61}: "Contec GmbH",
- [3]byte{116, 111, 247}: "Wistron Neweb Corporation",
- [3]byte{116, 114, 176}: "Guangzhou Shiyuan Electronics Co., Ltd.",
- [3]byte{116, 114, 242}: "Chipsip Technology Co., Ltd.",
- [3]byte{116, 115, 54}: "MICRODIGTAL Inc",
- [3]byte{116, 117, 72}: "Amazon Technologies Inc.",
- [3]byte{116, 120, 24}: "Jurumani Solutions",
- [3]byte{116, 123, 122}: "ETH Inc.",
- [3]byte{116, 125, 36}: "Phicomm (Shanghai) Co., Ltd.",
- [3]byte{116, 125, 182}: "Aliwei Communications, Inc",
- [3]byte{116, 126, 26}: "Red Embedded Design Limited",
- [3]byte{116, 126, 45}: "Beijing Thomson CITIC Digital Technology Co. LTD.",
- [3]byte{116, 129, 20}: "Apple, Inc.",
- [3]byte{116, 129, 154}: "PT. Hartono Istana Teknologi",
- [3]byte{116, 131, 239}: "Arista Networks",
- [3]byte{116, 133, 42}: "PEGATRON CORPORATION",
- [3]byte{116, 134, 11}: "Cisco Systems, Inc",
- [3]byte{116, 134, 122}: "Dell Inc.",
- [3]byte{116, 135, 169}: "OCT Technology Co., Ltd.",
- [3]byte{116, 136, 42}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{116, 136, 139}: "ADB Broadband Italia",
- [3]byte{116, 138, 105}: "Korea Image Technology Co., Ltd",
- [3]byte{116, 141, 8}: "Apple, Inc.",
- [3]byte{116, 142, 8}: "Bestek Corp.",
- [3]byte{116, 142, 248}: "Brocade Communications Systems, Inc.",
- [3]byte{116, 143, 27}: "MasterImage 3D",
- [3]byte{116, 143, 77}: "MEN Mikro Elektronik GmbH",
- [3]byte{116, 144, 80}: "Renesas Electronics Corporation",
- [3]byte{116, 145, 26}: "Ruckus Wireless",
- [3]byte{116, 145, 189}: "Four systems Co.,Ltd.",
- [3]byte{116, 147, 164}: "Zebra Technologies Corp.",
- [3]byte{116, 148, 61}: "AgJunction",
- [3]byte{116, 149, 236}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{116, 150, 55}: "Todaair Electronic Co., Ltd",
- [3]byte{116, 151, 129}: "zte corporation",
- [3]byte{116, 153, 117}: "IBM Corporation",
- [3]byte{116, 156, 82}: "Huizhou Desay SV Automotive Co., Ltd.",
- [3]byte{116, 156, 227}: "KodaCloud Canada, Inc",
- [3]byte{116, 157, 143}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{116, 157, 220}: "2Wire Inc",
- [3]byte{116, 160, 47}: "Cisco Systems, Inc",
- [3]byte{116, 160, 99}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{116, 162, 230}: "Cisco Systems, Inc",
- [3]byte{116, 163, 74}: "ZIMI CORPORATION",
- [3]byte{116, 164, 167}: "QRS Music Technologies, Inc.",
- [3]byte{116, 164, 181}: "Powerleader Science and Technology Co. Ltd.",
- [3]byte{116, 165, 40}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{116, 167, 34}: "LG Electronics (Mobile Communications)",
- [3]byte{116, 167, 142}: "zte corporation",
- [3]byte{116, 172, 95}: "Qiku Internet Network Scientific (Shenzhen) Co., Ltd.",
- [3]byte{116, 173, 183}: "China Mobile Group Device Co.,Ltd.",
- [3]byte{116, 174, 118}: "iNovo Broadband, Inc.",
- [3]byte{116, 176, 12}: "Network Video Technologies, Inc",
- [3]byte{116, 180, 114}: "CIESSE",
- [3]byte{116, 181, 126}: "zte corporation",
- [3]byte{116, 185, 235}: "JinQianMao Technology Co.,Ltd.",
- [3]byte{116, 186, 219}: "Longconn Electornics(shenzhen)Co.,Ltd",
- [3]byte{116, 187, 211}: "Shenzhen xeme Communication Co., Ltd.",
- [3]byte{116, 190, 8}: "ATEK Products, LLC",
- [3]byte{116, 191, 161}: "HYUNTECK",
- [3]byte{116, 191, 183}: "Nusoft Corporation",
- [3]byte{116, 194, 70}: "Amazon Technologies Inc.",
- [3]byte{116, 195, 48}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{116, 198, 33}: "Zhejiang Hite Renewable Energy Co.,LTD",
- [3]byte{116, 198, 59}: "AzureWave Technology Inc.",
- [3]byte{116, 201, 154}: "Ericsson AB",
- [3]byte{116, 201, 163}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{116, 202, 37}: "Calxeda, Inc.",
- [3]byte{116, 204, 57}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{116, 205, 12}: "Smith Myers Communications Ltd.",
- [3]byte{116, 206, 86}: "Packet Force Technology Limited Company",
- [3]byte{116, 208, 43}: "ASUSTek COMPUTER INC.",
- [3]byte{116, 208, 220}: "Ericsson AB",
- [3]byte{116, 210, 29}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{116, 212, 53}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{116, 214, 117}: "WYMA Tecnologia",
- [3]byte{116, 214, 234}: "Texas Instruments",
- [3]byte{116, 215, 202}: "Panasonic Corporation Automotive",
- [3]byte{116, 216, 80}: "Evrisko Systems",
- [3]byte{116, 218, 56}: "Edimax Technology Co. Ltd.",
- [3]byte{116, 218, 218}: "D-Link International",
- [3]byte{116, 218, 234}: "Texas Instruments",
- [3]byte{116, 219, 209}: "Ebay Inc",
- [3]byte{116, 222, 43}: "Liteon Technology Corporation",
- [3]byte{116, 223, 191}: "Liteon Technology Corporation",
- [3]byte{116, 224, 110}: "Ergophone GmbH",
- [3]byte{116, 225, 74}: "IEEE Registration Authority",
- [3]byte{116, 225, 154}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{116, 225, 182}: "Apple, Inc.",
- [3]byte{116, 226, 119}: "Vizmonet Pte Ltd",
- [3]byte{116, 226, 140}: "Microsoft Corporation",
- [3]byte{116, 226, 245}: "Apple, Inc.",
- [3]byte{116, 228, 36}: "APISTE CORPORATION",
- [3]byte{116, 229, 11}: "Intel Corporate",
- [3]byte{116, 229, 55}: "RADSPIN",
- [3]byte{116, 229, 67}: "Liteon Technology Corporation",
- [3]byte{116, 229, 249}: "Intel Corporate",
- [3]byte{116, 230, 15}: "TECNO MOBILE LIMITED",
- [3]byte{116, 230, 226}: "Dell Inc.",
- [3]byte{116, 231, 198}: "ARRIS Group, Inc.",
- [3]byte{116, 234, 58}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{116, 234, 200}: "New H3C Technologies Co., Ltd",
- [3]byte{116, 234, 203}: "New H3C Technologies Co., Ltd",
- [3]byte{116, 234, 232}: "ARRIS Group, Inc.",
- [3]byte{116, 236, 241}: "Acumen",
- [3]byte{116, 240, 109}: "AzureWave Technology Inc.",
- [3]byte{116, 240, 125}: "BnCOM Co.,Ltd",
- [3]byte{116, 241, 2}: "Beijing HCHCOM Technology Co., Ltd",
- [3]byte{116, 244, 19}: "Maxwell Forest",
- [3]byte{116, 246, 18}: "ARRIS Group, Inc.",
- [3]byte{116, 246, 28}: "HTC Corporation",
- [3]byte{116, 246, 97}: "Schneider Electric Fire & Security Oy",
- [3]byte{116, 247, 38}: "Neuron Robotics",
- [3]byte{116, 248, 93}: "Berkeley Nucleonics Corp",
- [3]byte{116, 248, 219}: "IEEE Registration Authority",
- [3]byte{116, 249, 26}: "Onface",
- [3]byte{116, 253, 160}: "Compupal (Group) Corporation",
- [3]byte{116, 254, 72}: "ADVANTECH CO., LTD.",
- [3]byte{116, 255, 76}: "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
- [3]byte{116, 255, 125}: "Wren Sound Systems, LLC",
- [3]byte{120, 0, 158}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 2, 143}: "Adaptive Spectrum and Signal Alignment (ASSIA), Inc.",
- [3]byte{120, 2, 177}: "Cisco Systems, Inc",
- [3]byte{120, 2, 183}: "ShenZhen Ultra Easy Technology CO.,LTD",
- [3]byte{120, 2, 248}: "Xiaomi Communications Co Ltd",
- [3]byte{120, 5, 65}: "Queclink Wireless Solutions Co., Ltd",
- [3]byte{120, 7, 56}: "Z.U.K. Elzab S.A.",
- [3]byte{120, 10, 199}: "Baofeng TV Co., Ltd.",
- [3]byte{120, 12, 184}: "Intel Corporate",
- [3]byte{120, 17, 133}: "NBS Payment Solutions Inc.",
- [3]byte{120, 17, 220}: "XIAOMI Electronics,CO.,LTD",
- [3]byte{120, 18, 184}: "ORANTEK LIMITED",
- [3]byte{120, 24, 129}: "AzureWave Technology Inc.",
- [3]byte{120, 25, 46}: "NASCENT Technology",
- [3]byte{120, 25, 247}: "Juniper Networks",
- [3]byte{120, 28, 90}: "SHARP Corporation",
- [3]byte{120, 29, 186}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{120, 29, 253}: "Jabil Inc",
- [3]byte{120, 31, 219}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 32, 121}: "ID Tech",
- [3]byte{120, 34, 61}: "Affirmed Networks",
- [3]byte{120, 35, 174}: "ARRIS Group, Inc.",
- [3]byte{120, 36, 175}: "ASUSTek COMPUTER INC.",
- [3]byte{120, 37, 68}: "Omnima Limited",
- [3]byte{120, 37, 173}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 40, 202}: "Sonos, Inc.",
- [3]byte{120, 43, 203}: "Dell Inc.",
- [3]byte{120, 45, 126}: "TRENDnet, Inc.",
- [3]byte{120, 46, 239}: "Nokia Corporation",
- [3]byte{120, 48, 59}: "Stephen Technologies Co.,Limited",
- [3]byte{120, 48, 225}: "UltraClenz, LLC",
- [3]byte{120, 49, 43}: "zte corporation",
- [3]byte{120, 49, 193}: "Apple, Inc.",
- [3]byte{120, 50, 27}: "D-Link International",
- [3]byte{120, 50, 79}: "Millennium Group, Inc.",
- [3]byte{120, 54, 144}: "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
- [3]byte{120, 58, 132}: "Apple, Inc.",
- [3]byte{120, 60, 227}: "Kai-EE",
- [3]byte{120, 61, 91}: "TELNET Redes Inteligentes S.A.",
- [3]byte{120, 62, 83}: "BSkyB Ltd",
- [3]byte{120, 63, 21}: "EasySYNC Ltd.",
- [3]byte{120, 64, 228}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 68, 5}: "FUJITU(HONG KONG) ELECTRONIC Co.,LTD.",
- [3]byte{120, 68, 118}: "Zioncom Electronics (Shenzhen) Ltd.",
- [3]byte{120, 68, 253}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{120, 69, 1}: "Biamp Systems",
- [3]byte{120, 69, 97}: "CyberTAN Technology Inc.",
- [3]byte{120, 69, 196}: "Dell Inc.",
- [3]byte{120, 70, 196}: "DAEHAP HYPER-TECH",
- [3]byte{120, 71, 29}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 72, 89}: "Hewlett Packard",
- [3]byte{120, 73, 29}: "The Will-Burt Company",
- [3]byte{120, 75, 8}: "f.robotics acquisitions ltd",
- [3]byte{120, 75, 135}: "Murata Manufacturing Co., Ltd.",
- [3]byte{120, 79, 67}: "Apple, Inc.",
- [3]byte{120, 81, 12}: "LiveU Ltd.",
- [3]byte{120, 82, 26}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 82, 98}: "Shenzhen Hojy Software Co., Ltd.",
- [3]byte{120, 83, 242}: "ROXTON Ltd.",
- [3]byte{120, 84, 46}: "D-Link International",
- [3]byte{120, 85, 23}: "SankyuElectronics",
- [3]byte{120, 87, 18}: "Mobile Integration Workgroup",
- [3]byte{120, 88, 243}: "Vachen Co.,Ltd",
- [3]byte{120, 89, 62}: "RAFI GmbH & Co.KG",
- [3]byte{120, 89, 94}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 89, 104}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{120, 92, 40}: "Prime Motion Inc.",
- [3]byte{120, 92, 114}: "Hioso Technology Co., Ltd.",
- [3]byte{120, 95, 76}: "Argox Information Co., Ltd.",
- [3]byte{120, 97, 124}: "MITSUMI ELECTRIC CO.,LTD.",
- [3]byte{120, 98, 86}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{120, 100, 230}: "Green Motive Technology Limited",
- [3]byte{120, 102, 174}: "ZTEC Instruments, Inc.",
- [3]byte{120, 103, 215}: "Apple, Inc.",
- [3]byte{120, 104, 247}: "YSTen Technology Co.,Ltd",
- [3]byte{120, 106, 137}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{120, 108, 28}: "Apple, Inc.",
- [3]byte{120, 109, 148}: "Palo Alto Networks",
- [3]byte{120, 113, 156}: "ARRIS Group, Inc.",
- [3]byte{120, 123, 138}: "Apple, Inc.",
- [3]byte{120, 125, 72}: "ITEL MOBILE LIMITED",
- [3]byte{120, 126, 97}: "Apple, Inc.",
- [3]byte{120, 127, 98}: "GiK mbH",
- [3]byte{120, 128, 56}: "FUNAI ELECTRIC CO., LTD.",
- [3]byte{120, 129, 2}: "Sercomm Corporation.",
- [3]byte{120, 129, 143}: "Server Racks Australia Pty Ltd",
- [3]byte{120, 132, 60}: "Sony Corporation",
- [3]byte{120, 132, 238}: "INDRA ESPACIO S.A.",
- [3]byte{120, 135, 13}: "Unifiedgateways India Private Limited",
- [3]byte{120, 136, 109}: "Apple, Inc.",
- [3]byte{120, 136, 138}: "CDR Sp. z o.o. Sp. k.",
- [3]byte{120, 137, 115}: "CMC",
- [3]byte{120, 138, 32}: "Ubiquiti Networks Inc.",
- [3]byte{120, 139, 119}: "Standar Telecom",
- [3]byte{120, 140, 77}: "Indyme Solutions, LLC",
- [3]byte{120, 140, 84}: "Eltek Technologies LTD",
- [3]byte{120, 141, 247}: "Hitron Technologies. Inc",
- [3]byte{120, 142, 51}: "Jiangsu SEUIC Technology Co.,Ltd",
- [3]byte{120, 146, 62}: "Nokia Corporation",
- [3]byte{120, 146, 156}: "Intel Corporate",
- [3]byte{120, 148, 180}: "Sercomm Corporation.",
- [3]byte{120, 150, 130}: "zte corporation",
- [3]byte{120, 150, 132}: "ARRIS Group, Inc.",
- [3]byte{120, 152, 253}: "Q9 Networks Inc.",
- [3]byte{120, 153, 92}: "Nationz Technologies Inc",
- [3]byte{120, 153, 102}: "Musilab Electronics (DongGuan)Co.,Ltd.",
- [3]byte{120, 153, 143}: "MEDILINE ITALIA SRL",
- [3]byte{120, 156, 133}: "August Home, Inc.",
- [3]byte{120, 156, 231}: "Shenzhen Aikede Technology Co., Ltd",
- [3]byte{120, 158, 208}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 159, 76}: "HOERBIGER Elektronik GmbH",
- [3]byte{120, 159, 112}: "Apple, Inc.",
- [3]byte{120, 159, 135}: "Siemens AG I IA PP PRM",
- [3]byte{120, 160, 81}: "iiNet Labs Pty Ltd",
- [3]byte{120, 161, 6}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{120, 161, 131}: "Advidia",
- [3]byte{120, 162, 160}: "Nintendo Co., Ltd.",
- [3]byte{120, 163, 81}: "SHENZHEN ZHIBOTONG ELECTRONICS CO.,LTD",
- [3]byte{120, 163, 228}: "Apple, Inc.",
- [3]byte{120, 165, 4}: "Texas Instruments",
- [3]byte{120, 165, 221}: "Shenzhen Smarteye Digital Electronics Co., Ltd",
- [3]byte{120, 166, 131}: "Precidata",
- [3]byte{120, 166, 189}: "DAEYEON Control&Instrument Co,.Ltd",
- [3]byte{120, 166, 225}: "Brocade Communications Systems, Inc.",
- [3]byte{120, 167, 20}: "Amphenol",
- [3]byte{120, 168, 115}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 171, 96}: "ABB Australia",
- [3]byte{120, 171, 187}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 172, 191}: "Igneous Systems",
- [3]byte{120, 172, 192}: "Hewlett Packard",
- [3]byte{120, 174, 12}: "Far South Networks",
- [3]byte{120, 175, 88}: "GIMASI SA",
- [3]byte{120, 178, 141}: "Beijing Tengling Technology CO.Ltd",
- [3]byte{120, 179, 185}: "ShangHai sunup lighting CO.,LTD",
- [3]byte{120, 179, 206}: "Elo touch solutions",
- [3]byte{120, 181, 210}: "Ever Treasure Industrial Limited",
- [3]byte{120, 182, 193}: "AOBO Telecom Co.,Ltd",
- [3]byte{120, 184, 26}: "INTER SALES A/S",
- [3]byte{120, 184, 75}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{120, 186, 208}: "Shinybow Technology Co. Ltd.",
- [3]byte{120, 186, 249}: "Cisco Systems, Inc",
- [3]byte{120, 188, 26}: "Cisco Systems, Inc",
- [3]byte{120, 189, 188}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 190, 182}: "Enhanced Vision",
- [3]byte{120, 190, 189}: "STULZ GmbH",
- [3]byte{120, 193, 167}: "zte corporation",
- [3]byte{120, 194, 192}: "IEEE Registration Authority",
- [3]byte{120, 195, 233}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 196, 14}: "H&D Wireless",
- [3]byte{120, 196, 171}: "Shenzhen Runsil Technology Co.,Ltd",
- [3]byte{120, 197, 229}: "Texas Instruments",
- [3]byte{120, 198, 187}: "Innovasic, Inc.",
- [3]byte{120, 202, 4}: "Nokia Corporation",
- [3]byte{120, 202, 57}: "Apple, Inc.",
- [3]byte{120, 202, 94}: "ELNO",
- [3]byte{120, 202, 131}: "IEEE Registration Authority",
- [3]byte{120, 203, 51}: "DHC Software Co.,Ltd",
- [3]byte{120, 203, 104}: "DAEHAP HYPER-TECH",
- [3]byte{120, 205, 142}: "SMC Networks Inc",
- [3]byte{120, 208, 4}: "Neousys Technology Inc.",
- [3]byte{120, 209, 41}: "Vicos",
- [3]byte{120, 211, 79}: "Pace-O-Matic, Inc.",
- [3]byte{120, 211, 141}: "HONGKONG YUNLINK TECHNOLOGY LIMITED",
- [3]byte{120, 213, 181}: "NAVIELEKTRO KY",
- [3]byte{120, 214, 111}: "Aristocrat Technologies Australia Pty. Ltd.",
- [3]byte{120, 214, 178}: "Toshiba",
- [3]byte{120, 214, 240}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{120, 215, 82}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{120, 215, 95}: "Apple, Inc.",
- [3]byte{120, 216, 0}: "IEEE Registration Authority",
- [3]byte{120, 217, 159}: "NuCom HK Ltd.",
- [3]byte{120, 218, 110}: "Cisco Systems, Inc",
- [3]byte{120, 218, 179}: "GBO Technology",
- [3]byte{120, 221, 8}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{120, 221, 214}: "c-scape",
- [3]byte{120, 221, 217}: "Guangzhou Shiyuan Electronics Co., Ltd.",
- [3]byte{120, 222, 228}: "Texas Instruments",
- [3]byte{120, 225, 3}: "Amazon Technologies Inc.",
- [3]byte{120, 227, 181}: "Hewlett Packard",
- [3]byte{120, 228, 0}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{120, 231, 209}: "Hewlett Packard",
- [3]byte{120, 232, 182}: "zte corporation",
- [3]byte{120, 233, 128}: "RainUs Co.,Ltd",
- [3]byte{120, 235, 20}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{120, 235, 57}: "Instituto Nacional de Tecnología Industrial",
- [3]byte{120, 236, 34}: "Shanghai Qihui Telecom Technology Co., LTD",
- [3]byte{120, 236, 116}: "Kyland-USA",
- [3]byte{120, 239, 76}: "Unetconvergence Co., Ltd.",
- [3]byte{120, 242, 158}: "PEGATRON CORPORATION",
- [3]byte{120, 245, 87}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{120, 245, 229}: "BEGA Gantenbrink-Leuchten KG",
- [3]byte{120, 245, 253}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{120, 247, 190}: "Samsung Electronics Co.,Ltd",
- [3]byte{120, 247, 208}: "Silverbrook Research",
- [3]byte{120, 248, 130}: "LG Electronics (Mobile Communications)",
- [3]byte{120, 249, 68}: "Private",
- [3]byte{120, 252, 20}: "Family Zone Cyber Safety Ltd",
- [3]byte{120, 253, 148}: "Apple, Inc.",
- [3]byte{120, 254, 61}: "Juniper Networks",
- [3]byte{120, 254, 65}: "Socus networks",
- [3]byte{120, 254, 226}: "Shanghai Diveo Technology Co., Ltd",
- [3]byte{120, 255, 87}: "Intel Corporate",
- [3]byte{120, 255, 202}: "TECNO MOBILE LIMITED",
- [3]byte{124, 1, 10}: "Texas Instruments",
- [3]byte{124, 1, 135}: "Curtis Instruments, Inc.",
- [3]byte{124, 1, 145}: "Apple, Inc.",
- [3]byte{124, 2, 188}: "Hansung Electronics Co. LTD",
- [3]byte{124, 3, 76}: "Sagemcom Broadband SAS",
- [3]byte{124, 3, 201}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{124, 3, 216}: "Sagemcom Broadband SAS",
- [3]byte{124, 4, 208}: "Apple, Inc.",
- [3]byte{124, 5, 7}: "PEGATRON CORPORATION",
- [3]byte{124, 5, 30}: "RAFAEL LTD.",
- [3]byte{124, 6, 35}: "Ultra Electronics Sonar System Division",
- [3]byte{124, 8, 217}: "Shanghai B-Star Technology Co",
- [3]byte{124, 9, 43}: "Bekey A/S",
- [3]byte{124, 10, 80}: "J-MEX Inc.",
- [3]byte{124, 11, 198}: "Samsung Electronics Co.,Ltd",
- [3]byte{124, 14, 206}: "Cisco Systems, Inc",
- [3]byte{124, 16, 21}: "Brilliant Home Technology, Inc.",
- [3]byte{124, 17, 190}: "Apple, Inc.",
- [3]byte{124, 17, 203}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{124, 17, 205}: "QianTang Technology",
- [3]byte{124, 20, 118}: "Damall Technologies SAS",
- [3]byte{124, 22, 13}: "Saia-Burgess Controls AG",
- [3]byte{124, 24, 205}: "E-TRON Co.,Ltd.",
- [3]byte{124, 26, 3}: "8Locations Co., Ltd.",
- [3]byte{124, 26, 252}: "Dalian Co-Edifice Video Technology Co., Ltd",
- [3]byte{124, 28, 78}: "LG Innotek",
- [3]byte{124, 28, 104}: "Samsung Electronics Co.,Ltd",
- [3]byte{124, 28, 241}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{124, 29, 217}: "Xiaomi Communications Co Ltd",
- [3]byte{124, 30, 82}: "Microsoft",
- [3]byte{124, 30, 179}: "2N TELEKOMUNIKACE a.s.",
- [3]byte{124, 32, 72}: "KoamTac",
- [3]byte{124, 32, 100}: "Alcatel-Lucent IPD",
- [3]byte{124, 37, 135}: "chaowifi.com",
- [3]byte{124, 38, 52}: "ARRIS Group, Inc.",
- [3]byte{124, 38, 100}: "Sagemcom Broadband SAS",
- [3]byte{124, 43, 225}: "Shenzhen Ferex Electrical Co.,Ltd",
- [3]byte{124, 44, 243}: "Secure Electrans Ltd",
- [3]byte{124, 46, 13}: "Blackmagic Design",
- [3]byte{124, 46, 221}: "Samsung Electronics Co.,Ltd",
- [3]byte{124, 47, 128}: "Gigaset Communications GmbH",
- [3]byte{124, 51, 110}: "MEG Electronics Inc.",
- [3]byte{124, 53, 72}: "Transcend Information",
- [3]byte{124, 56, 102}: "Texas Instruments",
- [3]byte{124, 56, 108}: "Real Time Logic",
- [3]byte{124, 57, 32}: "SSOMA SECURITY",
- [3]byte{124, 59, 213}: "Imago Group",
- [3]byte{124, 60, 182}: "Shenzhen Homecare Technology Co.,Ltd.",
- [3]byte{124, 62, 157}: "PATECH",
- [3]byte{124, 67, 143}: "E-Band Communications Corp.",
- [3]byte{124, 68, 76}: "Entertainment Solutions, S.L.",
- [3]byte{124, 70, 133}: "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
- [3]byte{124, 71, 124}: "IEEE Registration Authority",
- [3]byte{124, 73, 185}: "Plexus Manufacturing Sdn Bhd",
- [3]byte{124, 74, 130}: "Portsmith LLC",
- [3]byte{124, 74, 168}: "MindTree Wireless PVT Ltd",
- [3]byte{124, 75, 120}: "Red Sun Synthesis Pte Ltd",
- [3]byte{124, 76, 88}: "Scale Computing, Inc.",
- [3]byte{124, 76, 165}: "BSkyB Ltd",
- [3]byte{124, 79, 125}: "Sawwave",
- [3]byte{124, 79, 181}: "Arcadyan Technology Corporation",
- [3]byte{124, 80, 73}: "Apple, Inc.",
- [3]byte{124, 83, 74}: "Metamako",
- [3]byte{124, 85, 231}: "YSI, Inc.",
- [3]byte{124, 87, 78}: "COBI GmbH",
- [3]byte{124, 90, 28}: "Sophos Ltd",
- [3]byte{124, 90, 103}: "JNC Systems, Inc.",
- [3]byte{124, 92, 248}: "Intel Corporate",
- [3]byte{124, 96, 151}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{124, 97, 147}: "HTC Corporation",
- [3]byte{124, 100, 86}: "Samsung Electronics Co.,Ltd",
- [3]byte{124, 102, 157}: "Texas Instruments",
- [3]byte{124, 103, 162}: "Intel Corporate",
- [3]byte{124, 105, 246}: "Cisco Systems, Inc",
- [3]byte{124, 106, 179}: "IBC TECHNOLOGIES INC.",
- [3]byte{124, 106, 195}: "GatesAir, Inc",
- [3]byte{124, 106, 219}: "SafeTone Technology Co.,Ltd",
- [3]byte{124, 106, 243}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{124, 107, 51}: "Tenyu Tech Co. Ltd.",
- [3]byte{124, 107, 82}: "Tigaro Wireless",
- [3]byte{124, 107, 247}: "NTI co., ltd.",
- [3]byte{124, 108, 57}: "PIXSYS SRL",
- [3]byte{124, 108, 143}: "AMS NEVE LTD",
- [3]byte{124, 109, 98}: "Apple, Inc.",
- [3]byte{124, 109, 248}: "Apple, Inc.",
- [3]byte{124, 111, 6}: "Caterpillar Trimble Control Technologies",
- [3]byte{124, 111, 248}: "ShenZhen ACTO Digital Video Technology Co.,Ltd.",
- [3]byte{124, 112, 188}: "IEEE Registration Authority",
- [3]byte{124, 113, 118}: "Wuxi iData Technology Company Ltd.",
- [3]byte{124, 114, 228}: "Unikey Technologies",
- [3]byte{124, 115, 139}: "Cocoon Alarm Ltd",
- [3]byte{124, 118, 48}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{124, 118, 53}: "Intel Corporate",
- [3]byte{124, 118, 115}: "ENMAS GmbH",
- [3]byte{124, 120, 126}: "Samsung Electronics Co.,Ltd",
- [3]byte{124, 121, 232}: "PayRange Inc.",
- [3]byte{124, 122, 83}: "Phytrex Technology Corp.",
- [3]byte{124, 122, 145}: "Intel Corporate",
- [3]byte{124, 123, 139}: "Control Concepts, Inc.",
- [3]byte{124, 123, 228}: "Z'SEDAI KENKYUSHO CORPORATION",
- [3]byte{124, 125, 61}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{124, 125, 65}: "Jinmuyu Electronics Co., Ltd.",
- [3]byte{124, 130, 45}: "Nortec",
- [3]byte{124, 130, 116}: "Shenzhen Hikeen Technology CO.,LTD",
- [3]byte{124, 131, 6}: "Glen Dimplex Nordic as",
- [3]byte{124, 139, 202}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{124, 141, 145}: "Shanghai Hongzhuo Information Technology co.,LTD",
- [3]byte{124, 142, 228}: "Texas Instruments",
- [3]byte{124, 145, 34}: "Samsung Electronics Co.,Ltd",
- [3]byte{124, 148, 178}: "Philips Healthcare PCCI",
- [3]byte{124, 149, 177}: "Aerohive Networks Inc.",
- [3]byte{124, 149, 243}: "Cisco Systems, Inc",
- [3]byte{124, 151, 99}: "Openmatics s.r.o.",
- [3]byte{124, 154, 155}: "VSE valencia smart energy",
- [3]byte{124, 161, 93}: "GN ReSound A/S",
- [3]byte{124, 162, 55}: "King Slide Technology CO., LTD.",
- [3]byte{124, 162, 62}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{124, 162, 155}: "D.SignT GmbH & Co. KG",
- [3]byte{124, 166, 29}: "MHL, LLC",
- [3]byte{124, 169, 125}: "Objenious",
- [3]byte{124, 171, 37}: "MESMO TECHNOLOGY INC.",
- [3]byte{124, 172, 178}: "Bosch Software Innovations GmbH",
- [3]byte{124, 173, 116}: "Cisco Systems, Inc",
- [3]byte{124, 176, 62}: "OSRAM GmbH",
- [3]byte{124, 176, 194}: "Intel Corporate",
- [3]byte{124, 177, 93}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{124, 177, 119}: "Satelco AG",
- [3]byte{124, 178, 27}: "Cisco SPVTG",
- [3]byte{124, 178, 50}: "Hui Zhou Gaoshengda Technology Co.,LTD",
- [3]byte{124, 178, 92}: "Acacia Communications",
- [3]byte{124, 181, 66}: "ACES Technology",
- [3]byte{124, 183, 51}: "ASKEY COMPUTER CORP",
- [3]byte{124, 183, 123}: "Paradigm Electronics Inc",
- [3]byte{124, 185, 96}: "Shanghai X-Cheng telecom LTD",
- [3]byte{124, 186, 204}: "IEEE Registration Authority",
- [3]byte{124, 187, 111}: "Cosco Electronics Co., Ltd.",
- [3]byte{124, 187, 138}: "Nintendo Co., Ltd.",
- [3]byte{124, 189, 6}: "AE REFUsol",
- [3]byte{124, 191, 136}: "Mobilicom LTD",
- [3]byte{124, 191, 177}: "ARRIS Group, Inc.",
- [3]byte{124, 195, 161}: "Apple, Inc.",
- [3]byte{124, 196, 239}: "Devialet",
- [3]byte{124, 197, 55}: "Apple, Inc.",
- [3]byte{124, 198, 196}: "Kolff Computer Supplies b.v.",
- [3]byte{124, 199, 9}: "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
- [3]byte{124, 200, 171}: "Acro Associates, Inc.",
- [3]byte{124, 200, 208}: "TIANJIN YAAN TECHNOLOGY CO., LTD.",
- [3]byte{124, 200, 215}: "Damalisk",
- [3]byte{124, 201, 90}: "Dell EMC",
- [3]byte{124, 203, 13}: "Antaira Technologies, LLC",
- [3]byte{124, 203, 226}: "IEEE Registration Authority",
- [3]byte{124, 204, 31}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{124, 204, 184}: "Intel Corporate",
- [3]byte{124, 205, 17}: "MS-Magnet",
- [3]byte{124, 205, 60}: "Guangzhou Juzing Technology Co., Ltd",
- [3]byte{124, 207, 207}: "Shanghai SEARI Intelligent System Co., Ltd",
- [3]byte{124, 209, 195}: "Apple, Inc.",
- [3]byte{124, 211, 10}: "INVENTEC Corporation",
- [3]byte{124, 215, 98}: "Freestyle Technology Pty Ltd",
- [3]byte{124, 216, 68}: "Enmotus Inc",
- [3]byte{124, 217, 254}: "New Cosmos Electric Co., Ltd.",
- [3]byte{124, 218, 132}: "Dongnian Networks Inc.",
- [3]byte{124, 221, 17}: "Chongqing MAS SCI&TECH.Co.,Ltd",
- [3]byte{124, 221, 32}: "IOXOS Technologies S.A.",
- [3]byte{124, 221, 118}: "Suzhou Hanming Technologies Co., Ltd.",
- [3]byte{124, 221, 144}: "Shenzhen Ogemray Technology Co., Ltd.",
- [3]byte{124, 224, 68}: "NEON Inc",
- [3]byte{124, 225, 255}: "Computer Performance, Inc. DBA Digital Loggers, Inc.",
- [3]byte{124, 226, 202}: "Juniper Networks",
- [3]byte{124, 228, 170}: "Private",
- [3]byte{124, 229, 36}: "Quirky, Inc.",
- [3]byte{124, 229, 107}: "ESEN Optoelectronics Technology Co.,Ltd.",
- [3]byte{124, 233, 124}: "ITEL MOBILE LIMITED",
- [3]byte{124, 233, 211}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{124, 235, 127}: "Dmet Products Corp.",
- [3]byte{124, 235, 174}: "Ridgeline Instruments",
- [3]byte{124, 235, 234}: "ASCT",
- [3]byte{124, 236, 121}: "Texas Instruments",
- [3]byte{124, 237, 141}: "Microsoft",
- [3]byte{124, 239, 24}: "Creative Product Design Pty. Ltd.",
- [3]byte{124, 239, 138}: "Inhon International Ltd.",
- [3]byte{124, 240, 95}: "Apple, Inc.",
- [3]byte{124, 240, 152}: "Bee Beans Technologies, Inc.",
- [3]byte{124, 240, 186}: "Linkwell Telesystems Pvt Ltd",
- [3]byte{124, 244, 41}: "NUUO Inc.",
- [3]byte{124, 248, 84}: "Samsung Electronics Co.,Ltd",
- [3]byte{124, 249, 14}: "Samsung Electronics Co.,Ltd",
- [3]byte{124, 249, 92}: "U.I. Lapp GmbH",
- [3]byte{124, 250, 223}: "Apple, Inc.",
- [3]byte{124, 252, 60}: "Visteon Corporation",
- [3]byte{124, 254, 40}: "Salutron Inc.",
- [3]byte{124, 254, 78}: "Shenzhen Safe vision Technology Co.,LTD",
- [3]byte{124, 254, 144}: "Mellanox Technologies, Inc.",
- [3]byte{124, 255, 98}: "Huizhou Super Electron Technology Co.,Ltd.",
- [3]byte{128, 0, 11}: "Intel Corporate",
- [3]byte{128, 0, 16}: "AT&T",
- [3]byte{128, 0, 110}: "Apple, Inc.",
- [3]byte{128, 1, 132}: "HTC Corporation",
- [3]byte{128, 2, 223}: "ORA Inc.",
- [3]byte{128, 5, 223}: "Montage Technology Group Limited",
- [3]byte{128, 7, 162}: "Esson Technology Inc.",
- [3]byte{128, 9, 2}: "Keysight Technologies, Inc.",
- [3]byte{128, 10, 6}: "COMTEC co.,ltd",
- [3]byte{128, 10, 128}: "IEEE Registration Authority",
- [3]byte{128, 11, 81}: "Chengdu XGimi Technology Co.,Ltd",
- [3]byte{128, 13, 215}: "Latticework, Inc",
- [3]byte{128, 14, 36}: "ForgetBox",
- [3]byte{128, 19, 130}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{128, 20, 64}: "Sunlit System Technology Corp",
- [3]byte{128, 20, 168}: "Guangzhou V-SOLUTION Electronic Technology Co., Ltd.",
- [3]byte{128, 22, 183}: "Brunel University",
- [3]byte{128, 23, 125}: "Nortel Networks",
- [3]byte{128, 24, 68}: "Dell Inc.",
- [3]byte{128, 24, 167}: "Samsung Electronics Co.,Ltd",
- [3]byte{128, 25, 52}: "Intel Corporate",
- [3]byte{128, 25, 103}: "Shanghai Reallytek Information Technology Co.,Ltd",
- [3]byte{128, 25, 254}: "JianLing Technology CO., LTD",
- [3]byte{128, 29, 170}: "Avaya Inc",
- [3]byte{128, 31, 2}: "Edimax Technology Co. Ltd.",
- [3]byte{128, 32, 175}: "Trade FIDES, a.s.",
- [3]byte{128, 34, 117}: "Beijing Beny Wave Technology Co Ltd",
- [3]byte{128, 38, 137}: "D-Link International",
- [3]byte{128, 41, 148}: "Technicolor CH USA Inc.",
- [3]byte{128, 42, 168}: "Ubiquiti Networks Inc.",
- [3]byte{128, 42, 250}: "Germaneers GmbH",
- [3]byte{128, 45, 225}: "Solarbridge Technologies",
- [3]byte{128, 46, 20}: "azeti Networks AG",
- [3]byte{128, 47, 222}: "Zurich Instruments AG",
- [3]byte{128, 48, 220}: "Texas Instruments",
- [3]byte{128, 52, 87}: "OT Systems Limited",
- [3]byte{128, 55, 115}: "NETGEAR",
- [3]byte{128, 56, 150}: "SHARP Corporation",
- [3]byte{128, 56, 188}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{128, 56, 253}: "LeapFrog Enterprises, Inc.",
- [3]byte{128, 57, 229}: "PATLITE CORPORATION",
- [3]byte{128, 58, 10}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{128, 58, 89}: "AT&T",
- [3]byte{128, 59, 42}: "ABB Xiamen Low Voltage Equipment Co.,Ltd.",
- [3]byte{128, 59, 154}: "ghe-ces electronic ag",
- [3]byte{128, 59, 246}: "LOOK EASY INTERNATIONAL LIMITED",
- [3]byte{128, 63, 93}: "Winstars Technology Ltd",
- [3]byte{128, 63, 214}: "bytes at work AG",
- [3]byte{128, 65, 78}: "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
- [3]byte{128, 66, 124}: "Adolf Tedsen GmbH & Co. KG",
- [3]byte{128, 71, 49}: "Packet Design, Inc.",
- [3]byte{128, 72, 165}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{128, 73, 113}: "Apple, Inc.",
- [3]byte{128, 75, 32}: "Ventilation Control",
- [3]byte{128, 78, 129}: "Samsung Electronics Co.,Ltd",
- [3]byte{128, 79, 88}: "ThinkEco, Inc.",
- [3]byte{128, 80, 27}: "Nokia Corporation",
- [3]byte{128, 80, 103}: "W & D TECHNOLOGY CORPORATION",
- [3]byte{128, 86, 242}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{128, 87, 25}: "Samsung Electronics Co.,Ltd",
- [3]byte{128, 88, 197}: "NovaTec Kommunikationstechnik GmbH",
- [3]byte{128, 88, 248}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{128, 89, 253}: "Noviga",
- [3]byte{128, 90, 4}: "LG Electronics (Mobile Communications)",
- [3]byte{128, 94, 12}: "YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.",
- [3]byte{128, 94, 192}: "YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD.",
- [3]byte{128, 96, 7}: "RIM",
- [3]byte{128, 97, 95}: "Beijing Sinead Technology Co., Ltd.",
- [3]byte{128, 97, 143}: "Shenzhen sangfei consumer communications co.,ltd",
- [3]byte{128, 100, 89}: "Nimbus Inc.",
- [3]byte{128, 101, 109}: "Samsung Electronics Co.,Ltd",
- [3]byte{128, 101, 233}: "BenQ Corporation",
- [3]byte{128, 102, 41}: "Prescope Technologies CO.,LTD.",
- [3]byte{128, 106, 176}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{128, 108, 27}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{128, 108, 139}: "KAESER KOMPRESSOREN AG",
- [3]byte{128, 108, 188}: "NET New Electronic Technology GmbH",
- [3]byte{128, 113, 31}: "Juniper Networks",
- [3]byte{128, 113, 122}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{128, 115, 159}: "KYOCERA CORPORATION",
- [3]byte{128, 116, 89}: "K's Co.,Ltd.",
- [3]byte{128, 118, 147}: "Newag SA",
- [3]byte{128, 121, 174}: "ShanDong Tecsunrise Co.,Ltd",
- [3]byte{128, 122, 127}: "ABB Genway Xiamen Electrical Equipment CO., LTD",
- [3]byte{128, 122, 191}: "HTC Corporation",
- [3]byte{128, 123, 30}: "Corsair Components",
- [3]byte{128, 123, 133}: "IEEE Registration Authority",
- [3]byte{128, 125, 27}: "Neosystem Co. Ltd.",
- [3]byte{128, 125, 227}: "Chongqing Sichuan Instrument Microcircuit Co.LTD.",
- [3]byte{128, 129, 165}: "TONGQING COMMUNICATION EQUIPMENT (SHENZHEN) Co.,Ltd",
- [3]byte{128, 130, 135}: "ATCOM Technology Co.Ltd.",
- [3]byte{128, 134, 152}: "Netronics Technologies Inc.",
- [3]byte{128, 134, 242}: "Intel Corporate",
- [3]byte{128, 137, 23}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{128, 139, 92}: "Shenzhen Runhuicheng Technology Co., Ltd",
- [3]byte{128, 140, 151}: "Kaonmedia CO., LTD.",
- [3]byte{128, 141, 183}: "Hewlett Packard Enterprise",
- [3]byte{128, 145, 42}: "Lih Rong electronic Enterprise Co., Ltd.",
- [3]byte{128, 145, 192}: "AgileMesh, Inc.",
- [3]byte{128, 146, 159}: "Apple, Inc.",
- [3]byte{128, 147, 147}: "Xapt GmbH",
- [3]byte{128, 148, 108}: "TOKYO RADAR CORPORATION",
- [3]byte{128, 150, 177}: "ARRIS Group, Inc.",
- [3]byte{128, 150, 202}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{128, 151, 27}: "Altenergy Power System,Inc.",
- [3]byte{128, 155, 32}: "Intel Corporate",
- [3]byte{128, 159, 171}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{128, 160, 54}: "Shanghai MXCHIP Information Technology Co., Ltd.",
- [3]byte{128, 161, 171}: "Intellisis",
- [3]byte{128, 161, 215}: "Shanghai DareGlobal Technologies Co.,Ltd",
- [3]byte{128, 165, 137}: "AzureWave Technology Inc.",
- [3]byte{128, 168, 93}: "Osterhout Design Group",
- [3]byte{128, 170, 164}: "USAG",
- [3]byte{128, 172, 172}: "Juniper Networks",
- [3]byte{128, 173, 103}: "Kasda Networks Inc",
- [3]byte{128, 176, 61}: "Apple, Inc.",
- [3]byte{128, 178, 25}: "ELEKTRON TECHNOLOGY UK LIMITED",
- [3]byte{128, 178, 52}: "Technicolor CH USA Inc.",
- [3]byte{128, 178, 137}: "Forworld Electronics Ltd.",
- [3]byte{128, 179, 42}: "Alstom Grid",
- [3]byte{128, 182, 134}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{128, 183, 8}: "Blue Danube Systems, Inc",
- [3]byte{128, 183, 9}: "Viptela, Inc",
- [3]byte{128, 185, 92}: "ELFTECH Co., Ltd.",
- [3]byte{128, 186, 172}: "TeleAdapt Ltd",
- [3]byte{128, 186, 230}: "Neets",
- [3]byte{128, 187, 235}: "Satmap Systems Ltd",
- [3]byte{128, 190, 5}: "Apple, Inc.",
- [3]byte{128, 193, 110}: "Hewlett Packard",
- [3]byte{128, 197, 230}: "Microsoft Corporation",
- [3]byte{128, 197, 242}: "AzureWave Technology Inc.",
- [3]byte{128, 198, 63}: "Remec Broadband Wireless , LLC",
- [3]byte{128, 198, 171}: "Technicolor CH USA Inc.",
- [3]byte{128, 198, 202}: "Endian s.r.l.",
- [3]byte{128, 199, 85}: "Panasonic Appliances Company",
- [3]byte{128, 200, 98}: "Openpeak, Inc",
- [3]byte{128, 206, 177}: "Theissen Training Systems GmbH",
- [3]byte{128, 207, 65}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{128, 208, 25}: "Embed, Inc",
- [3]byte{128, 208, 155}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{128, 209, 96}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{128, 209, 139}: "Hangzhou I'converge Technology Co.,Ltd",
- [3]byte{128, 210, 29}: "AzureWave Technology Inc.",
- [3]byte{128, 212, 51}: "LzLabs GmbH",
- [3]byte{128, 212, 165}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{128, 214, 5}: "Apple, Inc.",
- [3]byte{128, 215, 51}: "QSR Automations, Inc.",
- [3]byte{128, 219, 49}: "Power Quotient International Co., Ltd.",
- [3]byte{128, 224, 29}: "Cisco Systems, Inc",
- [3]byte{128, 228, 218}: "IEEE Registration Authority",
- [3]byte{128, 230, 80}: "Apple, Inc.",
- [3]byte{128, 232, 111}: "Cisco Systems, Inc",
- [3]byte{128, 234, 35}: "Wistron Neweb Corporation",
- [3]byte{128, 234, 150}: "Apple, Inc.",
- [3]byte{128, 234, 202}: "Dialog Semiconductor Hellas SA",
- [3]byte{128, 235, 119}: "Wistron Corporation",
- [3]byte{128, 237, 44}: "Apple, Inc.",
- [3]byte{128, 238, 115}: "Shuttle Inc.",
- [3]byte{128, 242, 94}: "Kyynel",
- [3]byte{128, 245, 3}: "ARRIS Group, Inc.",
- [3]byte{128, 245, 147}: "IRCO Sistemas de Telecomunicación S.A.",
- [3]byte{128, 246, 46}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{128, 248, 235}: "RayTight",
- [3]byte{128, 250, 91}: "CLEVO CO.",
- [3]byte{128, 251, 6}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{128, 255, 168}: "UNIDIS",
- [3]byte{132, 0, 45}: "PEGATRON CORPORATION",
- [3]byte{132, 0, 210}: "Sony Mobile Communications AB",
- [3]byte{132, 1, 167}: "Greyware Automation Products, Inc",
- [3]byte{132, 4, 210}: "Kirale Technologies SL",
- [3]byte{132, 11, 45}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{132, 15, 69}: "Shanghai GMT Digital Technologies Co., Ltd",
- [3]byte{132, 16, 13}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{132, 17, 158}: "Samsung Electronics Co.,Ltd",
- [3]byte{132, 22, 249}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{132, 23, 21}: "GP Electronics (HK) Ltd.",
- [3]byte{132, 23, 102}: "Weifang GoerTek Technology Co.,Ltd.",
- [3]byte{132, 24, 38}: "Osram GmbH",
- [3]byte{132, 24, 58}: "Ruckus Wireless",
- [3]byte{132, 24, 136}: "Juniper Networks",
- [3]byte{132, 27, 56}: "Shenzhen Excelsecu Data Technology Co.,Ltd",
- [3]byte{132, 27, 94}: "NETGEAR",
- [3]byte{132, 30, 38}: "KERNEL-I Co.,LTD",
- [3]byte{132, 32, 150}: "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
- [3]byte{132, 33, 65}: "Shenzhen Ginwave Technologies Ltd.",
- [3]byte{132, 33, 241}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{132, 36, 141}: "Zebra Technologies Inc",
- [3]byte{132, 37, 25}: "Samsung Electronics",
- [3]byte{132, 37, 63}: "silex technology, Inc.",
- [3]byte{132, 37, 164}: "Tariox Limited",
- [3]byte{132, 37, 219}: "Samsung Electronics Co.,Ltd",
- [3]byte{132, 38, 21}: "ADB Broadband Italia",
- [3]byte{132, 38, 43}: "Nokia",
- [3]byte{132, 38, 144}: "BEIJING THOUGHT SCIENCE CO.,LTD.",
- [3]byte{132, 39, 206}: "Corporation of the Presiding Bishop of The Church of Jesus Christ of Latter-day Saints",
- [3]byte{132, 40, 90}: "Saffron Solutions Inc",
- [3]byte{132, 41, 20}: "EMPORIA TELECOM Produktions- und VertriebsgesmbH & Co KG",
- [3]byte{132, 41, 153}: "Apple, Inc.",
- [3]byte{132, 43, 43}: "Dell Inc.",
- [3]byte{132, 43, 80}: "Huria Co.,Ltd.",
- [3]byte{132, 43, 188}: "Modelleisenbahn GmbH",
- [3]byte{132, 44, 128}: "Sichuan Changhong Electric Ltd.",
- [3]byte{132, 46, 39}: "Samsung Electronics Co.,Ltd",
- [3]byte{132, 47, 117}: "Innokas Group",
- [3]byte{132, 48, 229}: "SkyHawke Technologies, LLC",
- [3]byte{132, 50, 234}: "ANHUI WANZTEN P&T CO., LTD",
- [3]byte{132, 52, 151}: "Hewlett Packard",
- [3]byte{132, 54, 17}: "hyungseul publishing networks",
- [3]byte{132, 56, 53}: "Apple, Inc.",
- [3]byte{132, 56, 56}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{132, 58, 75}: "Intel Corporate",
- [3]byte{132, 61, 198}: "Cisco Systems, Inc",
- [3]byte{132, 63, 78}: "Tri-Tech Manufacturing, Inc.",
- [3]byte{132, 64, 118}: "Drivenets",
- [3]byte{132, 65, 103}: "Apple, Inc.",
- [3]byte{132, 68, 100}: "ServerU Inc",
- [3]byte{132, 71, 101}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{132, 72, 35}: "WOXTER TECHNOLOGY Co. Ltd",
- [3]byte{132, 73, 21}: "vArmour Networks, Inc.",
- [3]byte{132, 75, 183}: "Beijing Sankuai Online Technology Co.,Ltd",
- [3]byte{132, 75, 245}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{132, 79, 3}: "Ablelink Electronics Ltd",
- [3]byte{132, 80, 154}: "Easy Soft TV Co., Ltd",
- [3]byte{132, 81, 129}: "Samsung Electronics Co.,Ltd",
- [3]byte{132, 85, 165}: "Samsung Electronics Co.,Ltd",
- [3]byte{132, 86, 156}: "Coho Data, Inc.,",
- [3]byte{132, 87, 135}: "DVR C&C Co., Ltd.",
- [3]byte{132, 90, 129}: "ffly4u",
- [3]byte{132, 91, 18}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{132, 92, 147}: "Chabrier Services",
- [3]byte{132, 93, 215}: "Shenzhen Netcom Electronics Co.,Ltd",
- [3]byte{132, 97, 160}: "ARRIS Group, Inc.",
- [3]byte{132, 98, 35}: "Shenzhen Coship Electronics Co., Ltd.",
- [3]byte{132, 98, 166}: "EuroCB (Phils), Inc.",
- [3]byte{132, 99, 214}: "Microsoft Corporation",
- [3]byte{132, 104, 62}: "Intel Corporate",
- [3]byte{132, 106, 237}: "Wireless Tsukamoto.,co.LTD",
- [3]byte{132, 110, 177}: "Park Assist LLC",
- [3]byte{132, 114, 7}: "I&C Technology",
- [3]byte{132, 115, 3}: "Letv Mobile and Intelligent Information Technology (Beijing) Corporation Ltd.",
- [3]byte{132, 116, 42}: "zte corporation",
- [3]byte{132, 118, 22}: "Addat s.r.o.",
- [3]byte{132, 119, 120}: "Cochlear Limited",
- [3]byte{132, 120, 139}: "Apple, Inc.",
- [3]byte{132, 120, 172}: "Cisco Systems, Inc",
- [3]byte{132, 121, 51}: "profichip GmbH",
- [3]byte{132, 121, 115}: "Shanghai Baud Data Communication Co.,Ltd.",
- [3]byte{132, 122, 136}: "HTC Corporation",
- [3]byte{132, 123, 235}: "Dell Inc.",
- [3]byte{132, 125, 80}: "Holley Metering Limited",
- [3]byte{132, 126, 64}: "Texas Instruments",
- [3]byte{132, 128, 45}: "Cisco Systems, Inc",
- [3]byte{132, 130, 244}: "Beijing Huasun Unicreate Technology Co., Ltd",
- [3]byte{132, 131, 25}: "Hangzhou Zero Zero Technology Co., Ltd.",
- [3]byte{132, 131, 54}: "Newrun",
- [3]byte{132, 131, 113}: "Avaya Inc",
- [3]byte{132, 132, 51}: "Paradox Engineering SA",
- [3]byte{132, 133, 6}: "Apple, Inc.",
- [3]byte{132, 133, 10}: "Hella Sonnen- und Wetterschutztechnik GmbH",
- [3]byte{132, 134, 243}: "Greenvity Communications",
- [3]byte{132, 137, 173}: "Apple, Inc.",
- [3]byte{132, 141, 132}: "Rajant Corporation",
- [3]byte{132, 141, 199}: "Cisco SPVTG",
- [3]byte{132, 142, 12}: "Apple, Inc.",
- [3]byte{132, 142, 150}: "Embertec Pty Ltd",
- [3]byte{132, 142, 223}: "Sony Mobile Communications AB",
- [3]byte{132, 143, 105}: "Dell Inc.",
- [3]byte{132, 144, 0}: "Arnold & Richter Cine Technik",
- [3]byte{132, 147, 12}: "InCoax Networks Europe AB",
- [3]byte{132, 148, 140}: "Hitron Technologies. Inc",
- [3]byte{132, 150, 129}: "Cathay Communication Co.,Ltd",
- [3]byte{132, 150, 216}: "ARRIS Group, Inc.",
- [3]byte{132, 151, 184}: "Memjet Inc.",
- [3]byte{132, 152, 102}: "Samsung Electronics Co.,Ltd",
- [3]byte{132, 156, 166}: "Arcadyan Technology Corporation",
- [3]byte{132, 157, 100}: "SMC Corporation",
- [3]byte{132, 157, 197}: "Centera Photonics Inc.",
- [3]byte{132, 159, 181}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{132, 161, 52}: "Apple, Inc.",
- [3]byte{132, 161, 209}: "Sagemcom Broadband SAS",
- [3]byte{132, 164, 35}: "Sagemcom Broadband SAS",
- [3]byte{132, 164, 102}: "Samsung Electronics Co.,Ltd",
- [3]byte{132, 166, 200}: "Intel Corporate",
- [3]byte{132, 167, 131}: "Alcatel Lucent",
- [3]byte{132, 167, 136}: "Perples",
- [3]byte{132, 168, 228}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{132, 169, 145}: "Cyber Trans Japan Co.,Ltd.",
- [3]byte{132, 169, 196}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{132, 170, 156}: "MitraStar Technology Corp.",
- [3]byte{132, 172, 164}: "Beijing Novel Super Digital TV Technology Co., Ltd",
- [3]byte{132, 172, 251}: "Crouzet Automatismes",
- [3]byte{132, 173, 88}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{132, 175, 31}: "Beat System Service Co,. Ltd.",
- [3]byte{132, 175, 236}: "BUFFALO.INC",
- [3]byte{132, 177, 83}: "Apple, Inc.",
- [3]byte{132, 178, 97}: "Cisco Systems, Inc",
- [3]byte{132, 181, 23}: "Cisco Systems, Inc",
- [3]byte{132, 181, 65}: "Samsung Electronics Co.,Ltd",
- [3]byte{132, 181, 156}: "Juniper Networks",
- [3]byte{132, 184, 2}: "Cisco Systems, Inc",
- [3]byte{132, 186, 59}: "CANON INC.",
- [3]byte{132, 190, 82}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{132, 192, 239}: "Samsung Electronics Co.,Ltd",
- [3]byte{132, 193, 193}: "Juniper Networks",
- [3]byte{132, 194, 228}: "Jiangsu Qinheng Co., Ltd.",
- [3]byte{132, 195, 232}: "Vaillant GmbH",
- [3]byte{132, 199, 39}: "Gnodal Ltd",
- [3]byte{132, 199, 169}: "C3PO S.A.",
- [3]byte{132, 199, 234}: "Sony Mobile Communications AB",
- [3]byte{132, 200, 177}: "Incognito Software Systems Inc.",
- [3]byte{132, 201, 178}: "D-Link International",
- [3]byte{132, 205, 98}: "ShenZhen IDWELL Technology CO.,Ltd",
- [3]byte{132, 207, 191}: "Fairphone",
- [3]byte{132, 211, 42}: "IEEE 1905.1",
- [3]byte{132, 212, 126}: "Aruba Networks",
- [3]byte{132, 212, 200}: "Widex A/S",
- [3]byte{132, 214, 208}: "Amazon Technologies Inc.",
- [3]byte{132, 217, 49}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{132, 217, 200}: "Unipattern Co.,",
- [3]byte{132, 219, 47}: "Sierra Wireless Inc",
- [3]byte{132, 219, 172}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{132, 219, 252}: "Nokia",
- [3]byte{132, 221, 32}: "Texas Instruments",
- [3]byte{132, 221, 183}: "Cilag GmbH International",
- [3]byte{132, 222, 61}: "Crystal Vision Ltd",
- [3]byte{132, 223, 12}: "NET2GRID BV",
- [3]byte{132, 223, 25}: "Chuango Security Technology Corporation",
- [3]byte{132, 224, 88}: "ARRIS Group, Inc.",
- [3]byte{132, 224, 244}: "IEEE Registration Authority",
- [3]byte{132, 227, 35}: "Green Wave Telecommunication SDN BHD",
- [3]byte{132, 227, 39}: "TAILYN TECHNOLOGIES INC",
- [3]byte{132, 228, 217}: "Shenzhen NEED technology Ltd.",
- [3]byte{132, 230, 41}: "Bluwan SA",
- [3]byte{132, 231, 20}: "Liang Herng Enterprise,Co.Ltd.",
- [3]byte{132, 234, 153}: "Vieworks",
- [3]byte{132, 235, 24}: "Texas Instruments",
- [3]byte{132, 237, 51}: "BBMC Co.,Ltd",
- [3]byte{132, 239, 24}: "Intel Corporate",
- [3]byte{132, 241, 41}: "Metrascale Inc.",
- [3]byte{132, 244, 147}: "OMS spol. s.r.o.",
- [3]byte{132, 246, 76}: "Cross Point BV",
- [3]byte{132, 246, 250}: "Miovision Technologies Incorporated",
- [3]byte{132, 252, 172}: "Apple, Inc.",
- [3]byte{132, 252, 254}: "Apple, Inc.",
- [3]byte{132, 254, 158}: "RTC Industries, Inc.",
- [3]byte{132, 254, 220}: "Borqs Beijing Ltd.",
- [3]byte{136, 1, 242}: "Vitec System Engineering Inc.",
- [3]byte{136, 3, 85}: "Arcadyan Technology Corporation",
- [3]byte{136, 7, 75}: "LG Electronics (Mobile Communications)",
- [3]byte{136, 9, 5}: "MTMCommunications",
- [3]byte{136, 9, 175}: "Masimo Corporation",
- [3]byte{136, 15, 16}: "Huami Information Technology Co.,Ltd.",
- [3]byte{136, 15, 182}: "Jabil Circuits India Pvt Ltd,-EHTP unit",
- [3]byte{136, 16, 54}: "Panodic(ShenZhen) Electronics Limted",
- [3]byte{136, 18, 78}: "Qualcomm Inc.",
- [3]byte{136, 20, 43}: "Protonic Holland",
- [3]byte{136, 21, 68}: "Cisco Meraki",
- [3]byte{136, 24, 174}: "Tamron Co., Ltd",
- [3]byte{136, 27, 153}: "SHENZHEN XIN FEI JIA ELECTRONIC CO. LTD.",
- [3]byte{136, 29, 252}: "Cisco Systems, Inc",
- [3]byte{136, 31, 161}: "Apple, Inc.",
- [3]byte{136, 32, 18}: "LMI Technologies",
- [3]byte{136, 33, 227}: "Nebusens, S.L.",
- [3]byte{136, 35, 100}: "Watchnet DVR Inc",
- [3]byte{136, 35, 254}: "TTTech Computertechnik AG",
- [3]byte{136, 37, 44}: "Arcadyan Technology Corporation",
- [3]byte{136, 37, 147}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{136, 40, 179}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{136, 41, 80}: "Dalian Netmoon Tech Develop Co.,Ltd",
- [3]byte{136, 43, 215}: "ADDÉNERGIE TECHNOLOGIES",
- [3]byte{136, 46, 90}: "storONE",
- [3]byte{136, 48, 138}: "Murata Manufacturing Co., Ltd.",
- [3]byte{136, 50, 155}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{136, 51, 20}: "Texas Instruments",
- [3]byte{136, 51, 190}: "Ivenix, Inc.",
- [3]byte{136, 53, 76}: "Transics",
- [3]byte{136, 54, 18}: "SRC Computers, LLC",
- [3]byte{136, 54, 95}: "LG Electronics (Mobile Communications)",
- [3]byte{136, 54, 108}: "EFM Networks",
- [3]byte{136, 59, 139}: "Cheering Connection Co. Ltd.",
- [3]byte{136, 60, 28}: "MERCURY CORPORATION",
- [3]byte{136, 63, 211}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{136, 65, 87}: "Shenzhen Atsmart Technology Co.,Ltd.",
- [3]byte{136, 65, 193}: "ORBISAT DA AMAZONIA IND E AEROL SA",
- [3]byte{136, 65, 252}: "AirTies Wireless Networks",
- [3]byte{136, 67, 225}: "Cisco Systems, Inc",
- [3]byte{136, 68, 119}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{136, 68, 246}: "Nokia Corporation",
- [3]byte{136, 70, 42}: "Telechips Inc.",
- [3]byte{136, 74, 234}: "Texas Instruments",
- [3]byte{136, 75, 57}: "Siemens AG, Healthcare Sector",
- [3]byte{136, 76, 207}: "Pulzze Systems, Inc",
- [3]byte{136, 80, 221}: "Infiniband Trade Association",
- [3]byte{136, 81, 251}: "Hewlett Packard",
- [3]byte{136, 83, 46}: "Intel Corporate",
- [3]byte{136, 83, 149}: "Apple, Inc.",
- [3]byte{136, 83, 212}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{136, 87, 109}: "XTA Electronics Ltd",
- [3]byte{136, 87, 238}: "BUFFALO.INC",
- [3]byte{136, 90, 146}: "Cisco Systems, Inc",
- [3]byte{136, 91, 221}: "Aerohive Networks Inc.",
- [3]byte{136, 92, 71}: "Alcatel Lucent",
- [3]byte{136, 93, 144}: "IEEE Registration Authority",
- [3]byte{136, 93, 251}: "zte corporation",
- [3]byte{136, 97, 90}: "Siano Mobile Silicon Ltd.",
- [3]byte{136, 99, 223}: "Apple, Inc.",
- [3]byte{136, 102, 57}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{136, 102, 165}: "Apple, Inc.",
- [3]byte{136, 104, 92}: "Shenzhen ChuangDao & Perpetual Eternal Technology Co.,Ltd",
- [3]byte{136, 106, 177}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{136, 106, 227}: "Alpha Networks Inc.",
- [3]byte{136, 107, 15}: "Bluegiga Technologies OY",
- [3]byte{136, 107, 68}: "Sunnovo International Limited",
- [3]byte{136, 107, 110}: "Apple, Inc.",
- [3]byte{136, 107, 118}: "CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD",
- [3]byte{136, 112, 51}: "Hangzhou Silan Microelectronic Inc",
- [3]byte{136, 112, 140}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{136, 112, 239}: "SC Professional Trading Co., Ltd.",
- [3]byte{136, 113, 229}: "Amazon Technologies Inc.",
- [3]byte{136, 115, 132}: "Toshiba",
- [3]byte{136, 115, 152}: "K2E Tekpoint",
- [3]byte{136, 117, 86}: "Cisco Systems, Inc",
- [3]byte{136, 117, 152}: "Samsung Electronics Co.,Ltd",
- [3]byte{136, 120, 115}: "Intel Corporate",
- [3]byte{136, 120, 156}: "Game Technologies SA",
- [3]byte{136, 121, 91}: "Konka Group Co., Ltd.",
- [3]byte{136, 121, 126}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{136, 122, 49}: "Velankani Electronics Pvt. Ltd.",
- [3]byte{136, 127, 3}: "Comper Technology Investment Limited",
- [3]byte{136, 130, 121}: "Shenzhen RB-LINK Intelligent Technology Co.Ltd",
- [3]byte{136, 131, 34}: "Samsung Electronics Co.,Ltd",
- [3]byte{136, 131, 93}: "FN-LINK TECHNOLOGY LIMITED",
- [3]byte{136, 134, 3}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{136, 134, 160}: "Simton Technologies, Ltd.",
- [3]byte{136, 134, 194}: "STABILO International GmbH",
- [3]byte{136, 135, 23}: "CANON INC.",
- [3]byte{136, 135, 221}: "DarbeeVision Inc.",
- [3]byte{136, 137, 20}: "All Components Incorporated",
- [3]byte{136, 137, 100}: "GSI Electronics Inc.",
- [3]byte{136, 139, 93}: "Storage Appliance Corporation",
- [3]byte{136, 140, 25}: "Brady Corp Asia Pacific Ltd",
- [3]byte{136, 144, 141}: "Cisco Systems, Inc",
- [3]byte{136, 145, 102}: "Viewcooper Corp.",
- [3]byte{136, 145, 221}: "Racktivity",
- [3]byte{136, 148, 113}: "Brocade Communications Systems, Inc.",
- [3]byte{136, 148, 126}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{136, 148, 249}: "Gemicom Technology, Inc.",
- [3]byte{136, 149, 185}: "Unified Packet Systems Crop",
- [3]byte{136, 150, 118}: "TTC MARCONI s.r.o.",
- [3]byte{136, 150, 182}: "Global Fire Equipment S.A.",
- [3]byte{136, 150, 242}: "Valeo Schalter und Sensoren GmbH",
- [3]byte{136, 151, 223}: "Entrypass Corporation Sdn. Bhd.",
- [3]byte{136, 152, 33}: "TERAON",
- [3]byte{136, 155, 57}: "Samsung Electronics Co.,Ltd",
- [3]byte{136, 156, 166}: "BTB Korea INC",
- [3]byte{136, 159, 250}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{136, 160, 132}: "Formation Data Systems",
- [3]byte{136, 162, 94}: "Juniper Networks",
- [3]byte{136, 162, 215}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{136, 163, 204}: "Amatis Controls",
- [3]byte{136, 165, 189}: "QPCOM INC.",
- [3]byte{136, 166, 198}: "Sagemcom Broadband SAS",
- [3]byte{136, 167, 60}: "Ragentek Technology Group",
- [3]byte{136, 172, 193}: "Generiton Co., Ltd.",
- [3]byte{136, 173, 67}: "PEGATRON CORPORATION",
- [3]byte{136, 173, 210}: "Samsung Electronics Co.,Ltd",
- [3]byte{136, 174, 29}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{136, 177, 17}: "Intel Corporate",
- [3]byte{136, 177, 104}: "Delta Control GmbH",
- [3]byte{136, 177, 225}: "Mojo Networks, Inc.",
- [3]byte{136, 180, 166}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{136, 182, 39}: "Gembird Europe BV",
- [3]byte{136, 184, 208}: "Dongguan Koppo Electronic Co.,Ltd",
- [3]byte{136, 186, 127}: "Qfiednet Co., Ltd.",
- [3]byte{136, 189, 120}: "Flaircomm Microelectronics,Inc.",
- [3]byte{136, 191, 213}: "Simple Audio Ltd",
- [3]byte{136, 194, 66}: "Poynt Co.",
- [3]byte{136, 194, 85}: "Texas Instruments",
- [3]byte{136, 195, 110}: "Beijing Ereneben lnformation Technology Limited",
- [3]byte{136, 195, 179}: "SOVICO",
- [3]byte{136, 198, 38}: "Logitech, Inc",
- [3]byte{136, 198, 99}: "Apple, Inc.",
- [3]byte{136, 201, 208}: "LG Electronics (Mobile Communications)",
- [3]byte{136, 203, 135}: "Apple, Inc.",
- [3]byte{136, 203, 165}: "Suzhou Torchstar Intelligent Technology Co.,Ltd",
- [3]byte{136, 204, 69}: "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
- [3]byte{136, 206, 250}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{136, 207, 152}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{136, 208, 57}: "TCL Technoly Electronics(Huizhou).,Ltd",
- [3]byte{136, 209, 113}: "BEGHELLI S.P.A",
- [3]byte{136, 210, 116}: "zte corporation",
- [3]byte{136, 211, 123}: "FirmTek, LLC",
- [3]byte{136, 213, 12}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{136, 215, 188}: "DEP Company",
- [3]byte{136, 215, 246}: "ASUSTek COMPUTER INC.",
- [3]byte{136, 217, 98}: "Canopus Systems US LLC",
- [3]byte{136, 218, 26}: "Redpine Signals, Inc.",
- [3]byte{136, 220, 150}: "SENAO Networks, Inc.",
- [3]byte{136, 221, 121}: "Voltaire",
- [3]byte{136, 222, 169}: "Roku, Inc.",
- [3]byte{136, 224, 160}: "Shenzhen VisionSTOR Technologies Co., Ltd",
- [3]byte{136, 224, 243}: "Juniper Networks",
- [3]byte{136, 225, 97}: "Art Beijing Science and Technology Development Co., Ltd.",
- [3]byte{136, 227, 171}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{136, 230, 3}: "Avotek corporation",
- [3]byte{136, 230, 40}: "Shenzhen Kezhonglong Optoelectronic Technology Co.,Ltd",
- [3]byte{136, 231, 18}: "Whirlpool Corporation",
- [3]byte{136, 231, 166}: "iKnowledge Integration Corp.",
- [3]byte{136, 232, 127}: "Apple, Inc.",
- [3]byte{136, 232, 248}: "YONG TAI ELECTRONIC (DONGGUAN) LTD.",
- [3]byte{136, 233, 23}: "Tamaggo",
- [3]byte{136, 237, 28}: "Cudo Communication Co., Ltd.",
- [3]byte{136, 240, 49}: "Cisco Systems, Inc",
- [3]byte{136, 240, 119}: "Cisco Systems, Inc",
- [3]byte{136, 244, 136}: "cellon communications technology(shenzhen)Co.,Ltd.",
- [3]byte{136, 244, 144}: "Jetmobile Pte Ltd",
- [3]byte{136, 247, 199}: "Technicolor CH USA Inc.",
- [3]byte{136, 253, 21}: "LINEEYE CO., LTD",
- [3]byte{136, 254, 214}: "ShangHai WangYong Software Co., Ltd.",
- [3]byte{140, 0, 109}: "Apple, Inc.",
- [3]byte{140, 4, 255}: "Technicolor CH USA Inc.",
- [3]byte{140, 5, 81}: "Koubachi AG",
- [3]byte{140, 7, 140}: "FLOW DATA INC",
- [3]byte{140, 8, 139}: "Remote Solution",
- [3]byte{140, 9, 244}: "ARRIS Group, Inc.",
- [3]byte{140, 12, 144}: "Ruckus Wireless",
- [3]byte{140, 12, 163}: "Amper",
- [3]byte{140, 13, 118}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{140, 14, 227}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{140, 15, 111}: "PEGATRON CORPORATION",
- [3]byte{140, 15, 131}: "Angie Hospitality LLC",
- [3]byte{140, 16, 212}: "Sagemcom Broadband SAS",
- [3]byte{140, 17, 203}: "ABUS Security-Center GmbH & Co. KG",
- [3]byte{140, 20, 125}: "IEEE Registration Authority",
- [3]byte{140, 24, 217}: "Shenzhen RF Technology Co., Ltd",
- [3]byte{140, 25, 45}: "IEEE Registration Authority",
- [3]byte{140, 26, 191}: "Samsung Electronics Co.,Ltd",
- [3]byte{140, 31, 148}: "RF Surgical System Inc.",
- [3]byte{140, 33, 10}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{140, 37, 5}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{140, 39, 29}: "QuantHouse",
- [3]byte{140, 39, 138}: "Vocollect Inc",
- [3]byte{140, 41, 55}: "Apple, Inc.",
- [3]byte{140, 45, 170}: "Apple, Inc.",
- [3]byte{140, 47, 57}: "IBA Dosimetry GmbH",
- [3]byte{140, 47, 166}: "Solid Optics B.V.",
- [3]byte{140, 51, 48}: "EmFirst Co., Ltd.",
- [3]byte{140, 51, 87}: "HiteVision Digital Media Technology Co.,Ltd.",
- [3]byte{140, 52, 253}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{140, 57, 92}: "Bit4id Srl",
- [3]byte{140, 58, 227}: "LG Electronics (Mobile Communications)",
- [3]byte{140, 59, 173}: "NETGEAR",
- [3]byte{140, 60, 7}: "Skiva Technologies, Inc.",
- [3]byte{140, 60, 74}: "NAKAYO Inc",
- [3]byte{140, 65, 242}: "RDA Technologies Ltd.",
- [3]byte{140, 68, 53}: "Shanghai BroadMobi Communication Technology Co., Ltd.",
- [3]byte{140, 69, 0}: "Murata Manufacturing Co., Ltd.",
- [3]byte{140, 74, 238}: "GIGA TMS INC",
- [3]byte{140, 75, 89}: "3D Imaging & Simulations Corp",
- [3]byte{140, 76, 220}: "PLANEX COMMUNICATIONS INC.",
- [3]byte{140, 77, 185}: "Unmonday Ltd",
- [3]byte{140, 77, 234}: "Cerio Corporation",
- [3]byte{140, 81, 5}: "Shenzhen ireadygo Information Technology CO.,LTD.",
- [3]byte{140, 83, 247}: "A&D ENGINEERING CO., LTD.",
- [3]byte{140, 84, 29}: "LGE",
- [3]byte{140, 86, 157}: "Imaging Solutions Group",
- [3]byte{140, 86, 197}: "Nintendo Co., Ltd.",
- [3]byte{140, 87, 155}: "Wistron Neweb Corporation",
- [3]byte{140, 87, 253}: "LVX Western",
- [3]byte{140, 88, 119}: "Apple, Inc.",
- [3]byte{140, 89, 139}: "C Technologies AB",
- [3]byte{140, 89, 195}: "ADB Italia",
- [3]byte{140, 90, 240}: "Exeltech Solar Products",
- [3]byte{140, 91, 240}: "ARRIS Group, Inc.",
- [3]byte{140, 92, 161}: "d-broad,INC",
- [3]byte{140, 93, 96}: "UCI Corporation Co.,Ltd.",
- [3]byte{140, 95, 72}: "Continental Intelligent Transportation Systems LLC",
- [3]byte{140, 95, 223}: "Beijing Railway Signal Factory",
- [3]byte{140, 96, 79}: "Cisco Systems, Inc",
- [3]byte{140, 96, 231}: "MPGIO CO.,LTD",
- [3]byte{140, 97, 2}: "Beijing Baofengmojing Technologies Co., Ltd",
- [3]byte{140, 100, 11}: "Beyond Devices d.o.o.",
- [3]byte{140, 100, 34}: "Sony Mobile Communications AB",
- [3]byte{140, 104, 120}: "Nortek-AS",
- [3]byte{140, 106, 228}: "Viogem Limited",
- [3]byte{140, 109, 80}: "SHENZHEN MTC CO LTD",
- [3]byte{140, 112, 90}: "Intel Corporate",
- [3]byte{140, 113, 248}: "Samsung Electronics Co.,Ltd",
- [3]byte{140, 115, 110}: "FUJITSU LIMITED",
- [3]byte{140, 118, 193}: "Goden Tech Limited",
- [3]byte{140, 119, 18}: "Samsung Electronics Co.,Ltd",
- [3]byte{140, 119, 22}: "LONGCHEER TELECOMMUNICATION LIMITED",
- [3]byte{140, 120, 215}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{140, 121, 103}: "zte corporation",
- [3]byte{140, 123, 157}: "Apple, Inc.",
- [3]byte{140, 124, 146}: "Apple, Inc.",
- [3]byte{140, 124, 181}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{140, 124, 255}: "Brocade Communications Systems, Inc.",
- [3]byte{140, 126, 179}: "Lytro, Inc.",
- [3]byte{140, 127, 59}: "ARRIS Group, Inc.",
- [3]byte{140, 130, 168}: "Insigma Technology Co.,Ltd",
- [3]byte{140, 131, 157}: "SHENZHEN XINYUPENG ELECTRONIC TECHNOLOGY CO., LTD",
- [3]byte{140, 132, 1}: "Private",
- [3]byte{140, 133, 128}: "Smart Innovation LLC",
- [3]byte{140, 133, 144}: "Apple, Inc.",
- [3]byte{140, 135, 59}: "Leica Camera AG",
- [3]byte{140, 137, 122}: "AUGTEK",
- [3]byte{140, 137, 165}: "Micro-Star INT'L CO., LTD",
- [3]byte{140, 138, 110}: "ESTUN AUTOMATION TECHNOLOY CO., LTD",
- [3]byte{140, 138, 187}: "Beijing Orient View Technology Co., Ltd.",
- [3]byte{140, 139, 131}: "Texas Instruments",
- [3]byte{140, 142, 118}: "taskit GmbH",
- [3]byte{140, 142, 242}: "Apple, Inc.",
- [3]byte{140, 143, 233}: "Apple, Inc.",
- [3]byte{140, 144, 211}: "Nokia",
- [3]byte{140, 145, 9}: "Toyoshima Electric Technoeogy(Suzhou) Co.,Ltd.",
- [3]byte{140, 146, 54}: "Aus.Linx Technology Co., Ltd.",
- [3]byte{140, 147, 81}: "Jigowatts Inc.",
- [3]byte{140, 148, 207}: "Encell Technology, Inc.",
- [3]byte{140, 153, 230}: "TCT mobile ltd",
- [3]byte{140, 159, 59}: "Qingdao Hisense Communications Co.,Ltd.",
- [3]byte{140, 160, 72}: "Beijing NeTopChip Technology Co.,LTD",
- [3]byte{140, 162, 253}: "Starry, Inc.",
- [3]byte{140, 165, 161}: "Oregano Systems - Design & Consulting GmbH",
- [3]byte{140, 166, 223}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{140, 169, 130}: "Intel Corporate",
- [3]byte{140, 171, 142}: "Shanghai Feixun Communication Co.,Ltd.",
- [3]byte{140, 174, 76}: "Plugable Technologies",
- [3]byte{140, 174, 137}: "Y-cam Solutions Ltd",
- [3]byte{140, 176, 148}: "Airtech I&C Co., Ltd",
- [3]byte{140, 182, 79}: "Cisco Systems, Inc",
- [3]byte{140, 183, 247}: "Shenzhen UniStrong Science & Technology Co., Ltd",
- [3]byte{140, 184, 44}: "IPitomy Communications",
- [3]byte{140, 184, 100}: "AcSiP Technology Corp.",
- [3]byte{140, 190, 190}: "Xiaomi Communications Co Ltd",
- [3]byte{140, 191, 157}: "Shanghai Xinyou Information Technology Ltd. Co.",
- [3]byte{140, 191, 166}: "Samsung Electronics Co.,Ltd",
- [3]byte{140, 193, 33}: "Panasonic Corporation AVC Networks Company",
- [3]byte{140, 197, 225}: "ShenZhen Konka Telecommunication Technology Co.,Ltd",
- [3]byte{140, 198, 97}: "Current, powered by GE",
- [3]byte{140, 199, 170}: "Radinet Communications Inc.",
- [3]byte{140, 199, 208}: "zhejiang ebang communication co.,ltd",
- [3]byte{140, 200, 205}: "Samsung Electronics Co.,Ltd",
- [3]byte{140, 200, 244}: "IEEE Registration Authority",
- [3]byte{140, 205, 162}: "ACTP, Inc.",
- [3]byte{140, 205, 232}: "Nintendo Co., Ltd.",
- [3]byte{140, 207, 9}: "Dell EMC",
- [3]byte{140, 207, 92}: "BEFEGA GmbH",
- [3]byte{140, 209, 123}: "CG Mobile",
- [3]byte{140, 210, 233}: "YOKOTE SEIKO CO., LTD.",
- [3]byte{140, 211, 162}: "VisSim AS",
- [3]byte{140, 212, 142}: "ITEL MOBILE LIMITED",
- [3]byte{140, 214, 40}: "Ikor Metering",
- [3]byte{140, 219, 37}: "ESG Solutions",
- [3]byte{140, 220, 212}: "Hewlett Packard",
- [3]byte{140, 221, 141}: "Wifly-City System Inc.",
- [3]byte{140, 222, 82}: "ISSC Technologies Corp.",
- [3]byte{140, 222, 153}: "Comlab Inc.",
- [3]byte{140, 223, 157}: "NEC Corporation",
- [3]byte{140, 224, 129}: "zte corporation",
- [3]byte{140, 225, 23}: "zte corporation",
- [3]byte{140, 226, 218}: "Circle Media Inc",
- [3]byte{140, 227, 142}: "Toshiba Memory Corporation",
- [3]byte{140, 231, 72}: "Private",
- [3]byte{140, 231, 140}: "DK Networks",
- [3]byte{140, 231, 179}: "Sonardyne International Ltd",
- [3]byte{140, 234, 27}: "Edgecore Networks Corporation",
- [3]byte{140, 235, 198}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{140, 236, 75}: "Dell Inc.",
- [3]byte{140, 238, 198}: "Precepscion Pty. Ltd.",
- [3]byte{140, 242, 40}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{140, 245, 163}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{140, 248, 19}: "ORANGE POLSKA",
- [3]byte{140, 249, 69}: "Power Automation pte Ltd",
- [3]byte{140, 249, 201}: "MESADA Technology Co.,Ltd.",
- [3]byte{140, 250, 186}: "Apple, Inc.",
- [3]byte{140, 253, 240}: "Qualcomm Inc.",
- [3]byte{140, 254, 180}: "VSOONTECH ELECTRONICS CO., LIMITED",
- [3]byte{144, 0, 78}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{144, 0, 219}: "Samsung Electronics Co.,Ltd",
- [3]byte{144, 1, 59}: "Sagemcom Broadband SAS",
- [3]byte{144, 2, 138}: "Shenzhen Shidean Legrand Electronic Products Co.,Ltd",
- [3]byte{144, 2, 169}: "Zhejiang Dahua Technology Co., Ltd.",
- [3]byte{144, 3, 37}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{144, 3, 183}: "PARROT SA",
- [3]byte{144, 6, 40}: "Samsung Electronics Co.,Ltd",
- [3]byte{144, 9, 23}: "Far-sighted mobile",
- [3]byte{144, 10, 26}: "Taicang T&W Electronics",
- [3]byte{144, 10, 57}: "Wiio, Inc.",
- [3]byte{144, 10, 58}: "PSG Plastic Service GmbH",
- [3]byte{144, 11, 193}: "Sprocomm Technologies CO.,Ltd",
- [3]byte{144, 12, 180}: "Alinket Electronic Technology Co., Ltd",
- [3]byte{144, 13, 102}: "Digimore Electronics Co., Ltd",
- [3]byte{144, 13, 203}: "ARRIS Group, Inc.",
- [3]byte{144, 14, 131}: "Monico Monitoring, Inc.",
- [3]byte{144, 23, 17}: "Hagenuk Marinekommunikation GmbH",
- [3]byte{144, 23, 155}: "Nanomegas",
- [3]byte{144, 23, 172}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{144, 24, 94}: "Apex Tool Group GmbH & Co OHG",
- [3]byte{144, 24, 124}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{144, 24, 174}: "Shanghai Meridian Technologies, Co. Ltd.",
- [3]byte{144, 25, 0}: "SCS SA",
- [3]byte{144, 26, 202}: "ARRIS Group, Inc.",
- [3]byte{144, 27, 14}: "Fujitsu Technology Solutions GmbH",
- [3]byte{144, 29, 39}: "zte corporation",
- [3]byte{144, 30, 221}: "GREAT COMPUTER CORPORATION",
- [3]byte{144, 32, 58}: "BYD Precision Manufacture Co.,Ltd",
- [3]byte{144, 32, 131}: "General Engine Management Systems Ltd.",
- [3]byte{144, 33, 6}: "BSkyB Ltd",
- [3]byte{144, 33, 85}: "HTC Corporation",
- [3]byte{144, 33, 129}: "Shanghai Huaqin Telecom Technology Co.,Ltd",
- [3]byte{144, 35, 236}: "Availink, Inc.",
- [3]byte{144, 39, 228}: "Apple, Inc.",
- [3]byte{144, 43, 52}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{144, 44, 199}: "C-MAX Asia Limited",
- [3]byte{144, 46, 28}: "Intel Corporate",
- [3]byte{144, 46, 135}: "LabJack",
- [3]byte{144, 49, 205}: "Onyx Healthcare Inc.",
- [3]byte{144, 50, 75}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{144, 52, 43}: "Gatekeeper Systems, Inc.",
- [3]byte{144, 52, 252}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{144, 53, 110}: "Vodafone Omnitel N.V.",
- [3]byte{144, 56, 9}: "Ericsson AB",
- [3]byte{144, 56, 223}: "Changzhou Tiannengbo System Co. Ltd.",
- [3]byte{144, 58, 160}: "Nokia",
- [3]byte{144, 58, 230}: "PARROT SA",
- [3]byte{144, 60, 146}: "Apple, Inc.",
- [3]byte{144, 60, 174}: "Yunnan KSEC Digital Technology Co.,Ltd.",
- [3]byte{144, 61, 90}: "Shenzhen Wision Technology Holding Limited",
- [3]byte{144, 61, 107}: "Zicon Technology Corp.",
- [3]byte{144, 61, 189}: "SECURE METERS LIMITED",
- [3]byte{144, 62, 171}: "ARRIS Group, Inc.",
- [3]byte{144, 69, 6}: "Tokyo Boeki Medisys Inc.",
- [3]byte{144, 70, 162}: "Tedipay UK Ltd",
- [3]byte{144, 70, 183}: "Vadaro Pte Ltd",
- [3]byte{144, 71, 22}: "RORZE CORPORATION",
- [3]byte{144, 72, 154}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{144, 73, 250}: "Intel Corporate",
- [3]byte{144, 76, 229}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{144, 77, 74}: "Sagemcom Broadband SAS",
- [3]byte{144, 78, 43}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{144, 78, 145}: "IEEE Registration Authority",
- [3]byte{144, 80, 90}: "unGlue, Inc",
- [3]byte{144, 80, 123}: "Advanced PANMOBIL Systems GmbH & Co. KG",
- [3]byte{144, 80, 202}: "Hitron Technologies. Inc",
- [3]byte{144, 81, 63}: "Elettronica Santerno SpA",
- [3]byte{144, 84, 70}: "TES ELECTRONIC SOLUTIONS",
- [3]byte{144, 85, 174}: "Ericsson, EAB/RWI/K",
- [3]byte{144, 86, 130}: "Lenbrook Industries Limited",
- [3]byte{144, 86, 146}: "Autotalks Ltd.",
- [3]byte{144, 89, 175}: "Texas Instruments",
- [3]byte{144, 92, 68}: "Compal Broadband Networks, Inc.",
- [3]byte{144, 95, 46}: "TCT mobile ltd",
- [3]byte{144, 95, 141}: "modas GmbH",
- [3]byte{144, 96, 241}: "Apple, Inc.",
- [3]byte{144, 97, 12}: "Fida International (S) Pte Ltd",
- [3]byte{144, 97, 174}: "Intel Corporate",
- [3]byte{144, 103, 23}: "Alphion India Private Limited",
- [3]byte{144, 103, 28}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{144, 103, 181}: "Alcatel-Lucent",
- [3]byte{144, 103, 243}: "Alcatel Lucent",
- [3]byte{144, 104, 195}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{144, 108, 172}: "Fortinet, Inc.",
- [3]byte{144, 109, 200}: "DLG Automação Industrial Ltda",
- [3]byte{144, 110, 187}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{144, 111, 24}: "Private",
- [3]byte{144, 111, 169}: "NANJING PUTIAN TELECOMMUNICATIONS TECHNOLOGY CO.,LTD.",
- [3]byte{144, 112, 37}: "Garea Microsys Co.,Ltd.",
- [3]byte{144, 112, 101}: "Texas Instruments",
- [3]byte{144, 114, 64}: "Apple, Inc.",
- [3]byte{144, 114, 130}: "Sagemcom Broadband SAS",
- [3]byte{144, 121, 144}: "Benchmark Electronics Romania SRL",
- [3]byte{144, 122, 10}: "Gebr. Bode GmbH & Co KG",
- [3]byte{144, 122, 40}: "Beijing Morncloud Information And Technology Co. Ltd.",
- [3]byte{144, 122, 241}: "Wally",
- [3]byte{144, 126, 186}: "UTEK TECHNOLOGY (SHENZHEN) CO.,LTD",
- [3]byte{144, 127, 97}: "Chicony Electronics Co., Ltd.",
- [3]byte{144, 130, 96}: "IEEE 1904.1 Working Group",
- [3]byte{144, 131, 122}: "General Electric Water & Process Technologies",
- [3]byte{144, 132, 13}: "Apple, Inc.",
- [3]byte{144, 132, 43}: "LEGO System A/S",
- [3]byte{144, 134, 116}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{144, 136, 162}: "IONICS TECHNOLOGY ME LTDA",
- [3]byte{144, 140, 9}: "Total Phase",
- [3]byte{144, 140, 68}: "H.K ZONGMU TECHNOLOGY CO., LTD.",
- [3]byte{144, 140, 99}: "GZ Weedong Networks Technology Co. , Ltd",
- [3]byte{144, 141, 29}: "GH Technologies",
- [3]byte{144, 141, 108}: "Apple, Inc.",
- [3]byte{144, 141, 120}: "D-Link International",
- [3]byte{144, 143, 207}: "UNO System Co., Ltd",
- [3]byte{144, 144, 60}: "TRISON TECHNOLOGY CORPORATION",
- [3]byte{144, 144, 96}: "RSI VIDEO TECHNOLOGIES",
- [3]byte{144, 146, 180}: "Diehl BGT Defence GmbH & Co. KG",
- [3]byte{144, 148, 228}: "D-Link International",
- [3]byte{144, 151, 213}: "Espressif Inc.",
- [3]byte{144, 151, 243}: "Samsung Electronics Co.,Ltd",
- [3]byte{144, 152, 100}: "Impex-Sat GmbH&amp;Co KG",
- [3]byte{144, 153, 22}: "ELVEES NeoTek OJSC",
- [3]byte{144, 157, 125}: "ARRIS Group, Inc.",
- [3]byte{144, 157, 224}: "Newland Design + Assoc. Inc.",
- [3]byte{144, 159, 51}: "EFM Networks",
- [3]byte{144, 159, 67}: "Accutron Instruments Inc.",
- [3]byte{144, 162, 16}: "United Telecoms Ltd",
- [3]byte{144, 162, 218}: "GHEO SA",
- [3]byte{144, 163, 101}: "HMD Global Oy",
- [3]byte{144, 164, 106}: "SISNET CO., LTD",
- [3]byte{144, 164, 222}: "Wistron Neweb Corporation",
- [3]byte{144, 166, 47}: "NAVER",
- [3]byte{144, 167, 131}: "JSW PACIFIC CORPORATION",
- [3]byte{144, 167, 193}: "Pakedge Device and Software Inc.",
- [3]byte{144, 172, 63}: "BrightSign LLC",
- [3]byte{144, 173, 247}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{144, 174, 27}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{144, 176, 237}: "Apple, Inc.",
- [3]byte{144, 177, 28}: "Dell Inc.",
- [3]byte{144, 177, 52}: "ARRIS Group, Inc.",
- [3]byte{144, 177, 224}: "Beijing Nebula Link Technology Co., Ltd",
- [3]byte{144, 178, 31}: "Apple, Inc.",
- [3]byte{144, 182, 134}: "Murata Manufacturing Co., Ltd.",
- [3]byte{144, 184, 208}: "Joyent, Inc.",
- [3]byte{144, 185, 49}: "Apple, Inc.",
- [3]byte{144, 185, 125}: "Johnson Outdoors Marine Electronics d/b/a Minnkota",
- [3]byte{144, 193, 21}: "Sony Mobile Communications AB",
- [3]byte{144, 193, 198}: "Apple, Inc.",
- [3]byte{144, 195, 95}: "Nanjing Jiahao Technology Co., Ltd.",
- [3]byte{144, 198, 130}: "IEEE Registration Authority",
- [3]byte{144, 199, 146}: "ARRIS Group, Inc.",
- [3]byte{144, 199, 216}: "zte corporation",
- [3]byte{144, 201, 155}: "Recore Systems",
- [3]byte{144, 204, 36}: "Synaptics, Inc",
- [3]byte{144, 205, 182}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{144, 207, 21}: "Nokia Corporation",
- [3]byte{144, 207, 111}: "Dlogixs Co Ltd",
- [3]byte{144, 207, 125}: "Qingdao Hisense Communications Co.,Ltd.",
- [3]byte{144, 209, 27}: "Palomar Medical Technologies",
- [3]byte{144, 215, 79}: "Bookeen",
- [3]byte{144, 215, 190}: "Wavelab Global Inc.",
- [3]byte{144, 215, 235}: "Texas Instruments",
- [3]byte{144, 216, 82}: "Comtec Co., Ltd.",
- [3]byte{144, 216, 243}: "zte corporation",
- [3]byte{144, 217, 44}: "HUG-WITSCHI AG",
- [3]byte{144, 218, 78}: "AVANU",
- [3]byte{144, 218, 106}: "FOCUS H&S Co., Ltd.",
- [3]byte{144, 219, 70}: "E-LEAD ELECTRONIC CO., LTD",
- [3]byte{144, 223, 183}: "s.m.s smart microwave sensors GmbH",
- [3]byte{144, 223, 251}: "HOMERIDER SYSTEMS",
- [3]byte{144, 224, 240}: "IEEE 1722a Working Group",
- [3]byte{144, 226, 186}: "Intel Corporate",
- [3]byte{144, 230, 186}: "ASUSTek COMPUTER INC.",
- [3]byte{144, 231, 196}: "HTC Corporation",
- [3]byte{144, 234, 96}: "SPI Lasers Ltd",
- [3]byte{144, 236, 80}: "C.O.B.O. SPA",
- [3]byte{144, 238, 217}: "UNIVERSAL DE DESARROLLOS ELECTRÓNICOS, SA",
- [3]byte{144, 239, 104}: "Zyxel Communications Corporation",
- [3]byte{144, 240, 82}: "MEIZU Technology Co., Ltd.",
- [3]byte{144, 241, 170}: "Samsung Electronics Co.,Ltd",
- [3]byte{144, 241, 176}: "Hangzhou Anheng Info&Tech CO.,LTD",
- [3]byte{144, 242, 120}: "Radius Gateway",
- [3]byte{144, 243, 5}: "HUMAX Co., Ltd.",
- [3]byte{144, 243, 183}: "Kirisun Communications Co., Ltd.",
- [3]byte{144, 244, 193}: "Rand McNally",
- [3]byte{144, 246, 82}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{144, 247, 47}: "Phillips Machine & Welding Co., Inc.",
- [3]byte{144, 251, 91}: "Avaya Inc",
- [3]byte{144, 251, 166}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{144, 253, 97}: "Apple, Inc.",
- [3]byte{144, 253, 159}: "Silicon Laboratories",
- [3]byte{144, 255, 121}: "Metro Ethernet Forum",
- [3]byte{148, 0, 6}: "jinyoung",
- [3]byte{148, 0, 112}: "Nokia Corporation",
- [3]byte{148, 1, 73}: "AutoHotBox",
- [3]byte{148, 1, 194}: "Samsung Electronics Co.,Ltd",
- [3]byte{148, 4, 156}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{148, 5, 182}: "Liling FullRiver Electronics & Technology Ltd",
- [3]byte{148, 9, 55}: "HUMAX Co., Ltd.",
- [3]byte{148, 11, 45}: "NetView Technologies(Shenzhen) Co., Ltd",
- [3]byte{148, 11, 213}: "Himax Technologies, Inc",
- [3]byte{148, 12, 109}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{148, 14, 107}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{148, 16, 62}: "Belkin International Inc.",
- [3]byte{148, 17, 218}: "ITF Fröschl GmbH",
- [3]byte{148, 20, 122}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{148, 22, 115}: "Point Core SARL",
- [3]byte{148, 24, 130}: "Hewlett Packard Enterprise",
- [3]byte{148, 29, 28}: "TLab West Systems AB",
- [3]byte{148, 32, 83}: "Nokia Corporation",
- [3]byte{148, 33, 151}: "Stalmart Technology Limited",
- [3]byte{148, 35, 110}: "Shenzhen Junlan Electronic Ltd",
- [3]byte{148, 40, 46}: "New H3C Technologies Co., Ltd",
- [3]byte{148, 42, 63}: "Diversey Inc",
- [3]byte{148, 44, 179}: "HUMAX Co., Ltd.",
- [3]byte{148, 46, 23}: "Schneider Electric Canada Inc",
- [3]byte{148, 46, 99}: "Finsécur",
- [3]byte{148, 49, 155}: "Alphatronics BV",
- [3]byte{148, 51, 221}: "Taco Inc",
- [3]byte{148, 53, 10}: "Samsung Electronics Co.,Ltd",
- [3]byte{148, 54, 224}: "Sichuan Bihong Broadcast &amp; Television New Technologies Co.,Ltd",
- [3]byte{148, 57, 229}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{148, 58, 240}: "Nokia Corporation",
- [3]byte{148, 59, 177}: "Kaonmedia CO., LTD.",
- [3]byte{148, 61, 201}: "Asahi Net, Inc.",
- [3]byte{148, 63, 194}: "Hewlett Packard Enterprise",
- [3]byte{148, 64, 162}: "Anywave Communication Technologies, Inc.",
- [3]byte{148, 65, 193}: "Mini-Cam Limited",
- [3]byte{148, 68, 68}: "LG Innotek",
- [3]byte{148, 68, 82}: "Belkin International Inc.",
- [3]byte{148, 70, 150}: "BaudTec Corporation",
- [3]byte{148, 73, 150}: "WiSilica Inc",
- [3]byte{148, 74, 9}: "BitWise Controls",
- [3]byte{148, 74, 12}: "Sercomm Corporation",
- [3]byte{148, 80, 71}: "Rechnerbetriebsgruppe",
- [3]byte{148, 80, 137}: "SimonsVoss Technologies GmbH",
- [3]byte{148, 81, 3}: "Samsung Electronics Co.,Ltd",
- [3]byte{148, 81, 61}: "iSmart Alarm, Inc.",
- [3]byte{148, 81, 191}: "Hyundai ESG",
- [3]byte{148, 83, 48}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{148, 84, 147}: "Rigado, LLC",
- [3]byte{148, 87, 165}: "Hewlett Packard",
- [3]byte{148, 89, 7}: "Shanghai HITE-BELDEN Network Technology Co., Ltd.",
- [3]byte{148, 89, 45}: "EKE Building Technology Systems Ltd",
- [3]byte{148, 91, 126}: "TRILOBIT LTDA.",
- [3]byte{148, 97, 30}: "Wata Electronics Co.,Ltd.",
- [3]byte{148, 97, 36}: "Pason Systems",
- [3]byte{148, 98, 105}: "ARRIS Group, Inc.",
- [3]byte{148, 99, 209}: "Samsung Electronics Co.,Ltd",
- [3]byte{148, 101, 45}: "OnePlus Technology (Shenzhen) Co., Ltd",
- [3]byte{148, 101, 156}: "Intel Corporate",
- [3]byte{148, 102, 231}: "WOM Engineering",
- [3]byte{148, 112, 210}: "WINFIRM TECHNOLOGY",
- [3]byte{148, 113, 172}: "TCT mobile ltd",
- [3]byte{148, 117, 110}: "QinetiQ North America",
- [3]byte{148, 118, 183}: "Samsung Electronics Co.,Ltd",
- [3]byte{148, 119, 43}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{148, 123, 190}: "Ubicquia",
- [3]byte{148, 123, 231}: "Samsung Electronics Co.,Ltd",
- [3]byte{148, 124, 62}: "Polewall Norge AS",
- [3]byte{148, 126, 185}: "National Narrowband Network Communications Pty Ltd",
- [3]byte{148, 129, 164}: "Azuray Technologies",
- [3]byte{148, 133, 122}: "Evantage Industries Corp",
- [3]byte{148, 134, 205}: "SEOUL ELECTRONICS&TELECOM",
- [3]byte{148, 134, 212}: "Surveillance Pro Corporation",
- [3]byte{148, 135, 124}: "ARRIS Group, Inc.",
- [3]byte{148, 136, 21}: "Infinique Worldwide Inc",
- [3]byte{148, 136, 84}: "Texas Instruments",
- [3]byte{148, 136, 94}: "Surfilter Network Technology Co., Ltd.",
- [3]byte{148, 139, 3}: "EAGET Innovation and Technology Co., Ltd.",
- [3]byte{148, 139, 193}: "Samsung Electronics Co.,Ltd",
- [3]byte{148, 141, 80}: "Beamex Oy Ab",
- [3]byte{148, 142, 137}: "INDUSTRIAS UNIDAS SA DE CV",
- [3]byte{148, 143, 238}: "Verizon Telematics",
- [3]byte{148, 146, 188}: "SYNTECH(HK) TECHNOLOGY LIMITED",
- [3]byte{148, 148, 38}: "Apple, Inc.",
- [3]byte{148, 149, 160}: "Google, Inc.",
- [3]byte{148, 152, 162}: "Shanghai LISTEN TECH.LTD",
- [3]byte{148, 153, 1}: "Shenzhen YITOA Digital Appliance CO.,LTD",
- [3]byte{148, 154, 169}: "Microsoft Corporation",
- [3]byte{148, 155, 253}: "Trans New Technology, Inc.",
- [3]byte{148, 156, 85}: "Alta Data Technologies",
- [3]byte{148, 159, 62}: "Sonos, Inc.",
- [3]byte{148, 159, 63}: "Optek Digital Technology company limited",
- [3]byte{148, 159, 180}: "ChengDu JiaFaAnTai Technology Co.,Ltd",
- [3]byte{148, 160, 78}: "Bostex Technology Co., LTD",
- [3]byte{148, 161, 162}: "AMPAK Technology, Inc.",
- [3]byte{148, 167, 183}: "zte corporation",
- [3]byte{148, 167, 188}: "BodyMedia, Inc.",
- [3]byte{148, 170, 184}: "Joview(Beijing) Technology Co. Ltd.",
- [3]byte{148, 171, 222}: "OMX Technology - FZE",
- [3]byte{148, 172, 202}: "trivum technologies GmbH",
- [3]byte{148, 174, 97}: "Alcatel Lucent",
- [3]byte{148, 174, 227}: "Belden Hirschmann Industries (Suzhou) Ltd.",
- [3]byte{148, 177, 10}: "Samsung Electronics Co.,Ltd",
- [3]byte{148, 178, 204}: "PIONEER CORPORATION",
- [3]byte{148, 180, 15}: "Aruba Networks",
- [3]byte{148, 184, 25}: "Nokia",
- [3]byte{148, 184, 197}: "RuggedCom Inc.",
- [3]byte{148, 185, 180}: "Aptos Technology",
- [3]byte{148, 186, 49}: "Visiontec da Amazônia Ltda.",
- [3]byte{148, 186, 86}: "Shenzhen Coship Electronics Co., Ltd.",
- [3]byte{148, 187, 174}: "Husqvarna AB",
- [3]byte{148, 191, 30}: "eflow Inc. / Smart Device Planning and Development Division",
- [3]byte{148, 191, 149}: "Shenzhen Coship Electronics Co., Ltd",
- [3]byte{148, 192, 20}: "Sorter Sp. j. Konrad Grzeszczyk MichaA, Ziomek",
- [3]byte{148, 192, 56}: "Tallac Networks",
- [3]byte{148, 193, 80}: "2Wire Inc",
- [3]byte{148, 195, 228}: "SCA Schucker Gmbh & Co KG",
- [3]byte{148, 196, 233}: "PowerLayer Microsystems HongKong Limited",
- [3]byte{148, 198, 145}: "EliteGroup Computer Systems Co., LTD",
- [3]byte{148, 198, 235}: "NOVA electronics, Inc.",
- [3]byte{148, 199, 175}: "Raylios Technology",
- [3]byte{148, 201, 96}: "Zhongshan B&T technology.co.,ltd",
- [3]byte{148, 201, 98}: "Teseq AG",
- [3]byte{148, 202, 15}: "Honeywell Analytics",
- [3]byte{148, 204, 185}: "ARRIS Group, Inc.",
- [3]byte{148, 205, 172}: "Creowave Oy",
- [3]byte{148, 206, 44}: "Sony Mobile Communications AB",
- [3]byte{148, 206, 49}: "CTS Limited",
- [3]byte{148, 208, 25}: "Cydle Corp.",
- [3]byte{148, 208, 41}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{148, 212, 23}: "GPI KOREA INC.",
- [3]byte{148, 212, 105}: "Cisco Systems, Inc",
- [3]byte{148, 214, 14}: "shenzhen yunmao information technologies co., ltd",
- [3]byte{148, 215, 35}: "Shanghai DareGlobal Technologies Co.,Ltd",
- [3]byte{148, 215, 113}: "Samsung Electronics Co.,Ltd",
- [3]byte{148, 216, 89}: "TCT mobile ltd",
- [3]byte{148, 217, 60}: "ENELPS",
- [3]byte{148, 217, 179}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{148, 219, 73}: "SITCORP",
- [3]byte{148, 219, 201}: "AzureWave Technology Inc.",
- [3]byte{148, 219, 218}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{148, 221, 63}: "A+V Link Technologies, Corp.",
- [3]byte{148, 222, 14}: "SmartOptics AS",
- [3]byte{148, 222, 128}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{148, 223, 78}: "Wistron InfoComm(Kunshan)Co.,Ltd.",
- [3]byte{148, 223, 88}: "IJ Electron CO.,Ltd.",
- [3]byte{148, 224, 208}: "HealthStream Taiwan Inc.",
- [3]byte{148, 226, 38}: "D. ORtiz Consulting, LLC",
- [3]byte{148, 226, 253}: "Boge Kompressoren OTTO Boge GmbH & Co. KG",
- [3]byte{148, 227, 109}: "Texas Instruments",
- [3]byte{148, 231, 17}: "Xirka Dama Persada PT",
- [3]byte{148, 232, 72}: "FYLDE MICRO LTD",
- [3]byte{148, 232, 197}: "ARRIS Group, Inc.",
- [3]byte{148, 233, 106}: "Apple, Inc.",
- [3]byte{148, 233, 121}: "Liteon Technology Corporation",
- [3]byte{148, 233, 140}: "Nokia",
- [3]byte{148, 235, 44}: "Google, Inc.",
- [3]byte{148, 235, 205}: "BlackBerry RTS",
- [3]byte{148, 241, 40}: "Hewlett Packard Enterprise",
- [3]byte{148, 241, 158}: "HUIZHOU MAORONG INTELLIGENT TECHNOLOGY CO.,LTD",
- [3]byte{148, 242, 120}: "Elma Electronic",
- [3]byte{148, 245, 81}: "Cadi Scientific Pte Ltd",
- [3]byte{148, 246, 101}: "Ruckus Wireless",
- [3]byte{148, 246, 146}: "Geminico co.,Ltd.",
- [3]byte{148, 246, 163}: "Apple, Inc.",
- [3]byte{148, 247, 32}: "Tianjin Deviser Electronics Instrument Co., Ltd",
- [3]byte{148, 250, 232}: "Shenzhen Eycom Technology Co., Ltd",
- [3]byte{148, 251, 41}: "Zebra Technologies Inc.",
- [3]byte{148, 251, 178}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{148, 253, 29}: "WhereWhen Corp",
- [3]byte{148, 253, 46}: "Shanghai Uniscope Technologies Co.,Ltd",
- [3]byte{148, 254, 34}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{148, 254, 244}: "Sagemcom Broadband SAS",
- [3]byte{152, 0, 116}: "Raisecom Technology CO., LTD",
- [3]byte{152, 0, 193}: "GuangZhou CREATOR Technology Co.,Ltd.(CHINA)",
- [3]byte{152, 0, 198}: "Apple, Inc.",
- [3]byte{152, 1, 167}: "Apple, Inc.",
- [3]byte{152, 2, 132}: "Theobroma Systems GmbH",
- [3]byte{152, 2, 216}: "IEEE Registration Authority",
- [3]byte{152, 3, 160}: "ABB n.v. Power Quality Products",
- [3]byte{152, 3, 216}: "Apple, Inc.",
- [3]byte{152, 7, 45}: "Texas Instruments",
- [3]byte{152, 12, 130}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{152, 12, 165}: "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
- [3]byte{152, 13, 46}: "HTC Corporation",
- [3]byte{152, 14, 228}: "Private",
- [3]byte{152, 16, 148}: "Shenzhen Vsun communication technology Co.,ltd",
- [3]byte{152, 16, 232}: "Apple, Inc.",
- [3]byte{152, 19, 51}: "zte corporation",
- [3]byte{152, 22, 236}: "IC Intracom",
- [3]byte{152, 29, 250}: "Samsung Electronics Co.,Ltd",
- [3]byte{152, 30, 15}: "Jeelan (Shanghai Jeelan Technology Information Inc",
- [3]byte{152, 31, 177}: "Shenzhen Lemon Network Technology Co.,Ltd",
- [3]byte{152, 32, 142}: "Definium Technologies",
- [3]byte{152, 34, 239}: "Liteon Technology Corporation",
- [3]byte{152, 35, 78}: "Micromedia AG",
- [3]byte{152, 38, 42}: "Applied Research Associates, Inc",
- [3]byte{152, 40, 166}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{152, 41, 29}: "Jaguar de Mexico, SA de CV",
- [3]byte{152, 41, 63}: "Fujian Start Computer Equipment Co.,Ltd",
- [3]byte{152, 41, 166}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{152, 44, 190}: "2Wire Inc",
- [3]byte{152, 45, 86}: "Resolution Audio",
- [3]byte{152, 45, 104}: "Samsung Electronics Co., Ltd",
- [3]byte{152, 45, 186}: "Fibergate Inc.",
- [3]byte{152, 47, 60}: "Sichuan Changhong Electric Ltd.",
- [3]byte{152, 48, 0}: "Beijing KEMACOM Technologies Co., Ltd.",
- [3]byte{152, 48, 113}: "DAIKYUNG VASCOM",
- [3]byte{152, 52, 157}: "Krauss Maffei Technologies GmbH",
- [3]byte{152, 53, 113}: "Sub10 Systems Ltd",
- [3]byte{152, 53, 184}: "Assembled Products Corporation",
- [3]byte{152, 55, 19}: "PT.Navicom Indonesia",
- [3]byte{152, 57, 142}: "Samsung Electronics Co.,Ltd",
- [3]byte{152, 59, 22}: "AMPAK Technology, Inc.",
- [3]byte{152, 63, 159}: "China SSJ (Suzhou) Network Technology Inc.",
- [3]byte{152, 64, 187}: "Dell Inc.",
- [3]byte{152, 66, 70}: "SOL INDUSTRY PTE., LTD",
- [3]byte{152, 67, 218}: "INTERTECH",
- [3]byte{152, 71, 60}: "SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD",
- [3]byte{152, 74, 71}: "CHG Hospital Beds",
- [3]byte{152, 75, 74}: "ARRIS Group, Inc.",
- [3]byte{152, 75, 225}: "Hewlett Packard",
- [3]byte{152, 76, 4}: "Zhangzhou Keneng Electrical Equipment Co Ltd",
- [3]byte{152, 76, 211}: "Mantis Deposition",
- [3]byte{152, 78, 151}: "Starlight Marketing (H. K.) Ltd.",
- [3]byte{152, 79, 238}: "Intel Corporate",
- [3]byte{152, 82, 177}: "Samsung Electronics Co.,Ltd",
- [3]byte{152, 84, 27}: "Intel Corporate",
- [3]byte{152, 87, 211}: "HON HAI-CCPBG PRECISION IND.CO.,LTD.",
- [3]byte{152, 88, 138}: "SYSGRATION Ltd.",
- [3]byte{152, 89, 69}: "Texas Instruments",
- [3]byte{152, 90, 235}: "Apple, Inc.",
- [3]byte{152, 91, 176}: "KMDATA INC.",
- [3]byte{152, 92, 147}: "SBG Systems SAS",
- [3]byte{152, 93, 70}: "PeopleNet Communication",
- [3]byte{152, 93, 173}: "Texas Instruments",
- [3]byte{152, 94, 27}: "ConversDigital Co., Ltd.",
- [3]byte{152, 95, 211}: "Microsoft Corporation",
- [3]byte{152, 96, 34}: "EMW Co., Ltd.",
- [3]byte{152, 102, 234}: "Industrial Control Communications, Inc.",
- [3]byte{152, 107, 61}: "ARRIS Group, Inc.",
- [3]byte{152, 108, 92}: "Jiangxi Gosun Guard Security Co.,Ltd",
- [3]byte{152, 108, 245}: "zte corporation",
- [3]byte{152, 109, 53}: "IEEE Registration Authority",
- [3]byte{152, 109, 200}: "TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION",
- [3]byte{152, 111, 96}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{152, 112, 232}: "INNATECH SDN BHD",
- [3]byte{152, 115, 196}: "Sage Electronic Engineering LLC",
- [3]byte{152, 116, 61}: "Shenzhen Jun Kai Hengye Technology Co. Ltd",
- [3]byte{152, 116, 218}: "Infinix mobility limited",
- [3]byte{152, 118, 182}: "Adafruit",
- [3]byte{152, 119, 112}: "Pep Digital Technology (Guangzhou) Co., Ltd",
- [3]byte{152, 123, 243}: "Texas Instruments",
- [3]byte{152, 126, 70}: "Emizon Networks Limited",
- [3]byte{152, 130, 23}: "Disruptive Ltd",
- [3]byte{152, 131, 137}: "Samsung Electronics Co.,Ltd",
- [3]byte{152, 132, 227}: "Texas Instruments",
- [3]byte{152, 134, 177}: "Flyaudio corporation (China)",
- [3]byte{152, 135, 68}: "Wuxi Hongda Science and Technology Co.,LTD",
- [3]byte{152, 137, 237}: "Anadem Information Inc.",
- [3]byte{152, 139, 93}: "Sagemcom Broadband SAS",
- [3]byte{152, 139, 173}: "Corintech Ltd.",
- [3]byte{152, 142, 52}: "ZHEJIANG BOXSAM ELECTRONIC CO.,LTD",
- [3]byte{152, 142, 74}: "NOXUS(BEIJING) TECHNOLOGY CO.,LTD",
- [3]byte{152, 142, 221}: "TE Connectivity Limerick",
- [3]byte{152, 144, 128}: "Linkpower Network System Inc Ltd.",
- [3]byte{152, 144, 150}: "Dell Inc.",
- [3]byte{152, 147, 204}: "LG ELECTRONICS INC",
- [3]byte{152, 148, 73}: "Skyworth Wireless Technology Ltd.",
- [3]byte{152, 151, 209}: "MitraStar Technology Corp.",
- [3]byte{152, 156, 87}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{152, 158, 99}: "Apple, Inc.",
- [3]byte{152, 164, 14}: "Snap, Inc.",
- [3]byte{152, 167, 176}: "MCST ZAO",
- [3]byte{152, 170, 60}: "Will i-tech Co., Ltd.",
- [3]byte{152, 170, 215}: "BLUE WAVE NETWORKING CO LTD",
- [3]byte{152, 170, 252}: "IEEE Registration Authority",
- [3]byte{152, 176, 57}: "Nokia",
- [3]byte{152, 182, 233}: "Nintendo Co.,Ltd",
- [3]byte{152, 184, 227}: "Apple, Inc.",
- [3]byte{152, 187, 30}: "BYD Precision Manufacture Company Ltd.",
- [3]byte{152, 188, 87}: "SVA TECHNOLOGIES CO.LTD",
- [3]byte{152, 188, 153}: "Edeltech Co.,Ltd.",
- [3]byte{152, 190, 148}: "IBM",
- [3]byte{152, 192, 235}: "Global Regency Ltd",
- [3]byte{152, 197, 219}: "Ericsson AB",
- [3]byte{152, 200, 69}: "PacketAccess",
- [3]byte{152, 203, 39}: "Galore Networks Pvt. Ltd.",
- [3]byte{152, 205, 180}: "Virident Systems, Inc.",
- [3]byte{152, 207, 83}: "BBK EDUCATIONAL ELECTRONICS CORP.,LTD.",
- [3]byte{152, 210, 147}: "Google, Inc.",
- [3]byte{152, 211, 49}: "Shenzhen Bolutek Technology Co.,Ltd.",
- [3]byte{152, 211, 210}: "MEKRA Lang GmbH & Co. KG",
- [3]byte{152, 214, 134}: "Chyi Lee industry Co., ltd.",
- [3]byte{152, 214, 187}: "Apple, Inc.",
- [3]byte{152, 214, 247}: "LG Electronics (Mobile Communications)",
- [3]byte{152, 216, 140}: "Nortel Networks",
- [3]byte{152, 218, 146}: "Vuzix Corporation",
- [3]byte{152, 220, 217}: "UNITEC Co., Ltd.",
- [3]byte{152, 221, 234}: "Infinix mobility limited",
- [3]byte{152, 222, 208}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{152, 224, 217}: "Apple, Inc.",
- [3]byte{152, 225, 101}: "Accutome",
- [3]byte{152, 228, 118}: "Zentan",
- [3]byte{152, 231, 154}: "Foxconn(NanJing) Communication Co.,Ltd.",
- [3]byte{152, 231, 244}: "Hewlett Packard",
- [3]byte{152, 231, 245}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{152, 232, 72}: "Axiim",
- [3]byte{152, 236, 101}: "Cosesy ApS",
- [3]byte{152, 238, 203}: "Wistron Infocomm (Zhongshan) Corporation",
- [3]byte{152, 239, 155}: "OHSUNG",
- [3]byte{152, 240, 88}: "Lynxspring, Incl.",
- [3]byte{152, 240, 171}: "Apple, Inc.",
- [3]byte{152, 241, 112}: "Murata Manufacturing Co., Ltd.",
- [3]byte{152, 241, 153}: "NEC Platforms, Ltd.",
- [3]byte{152, 242, 179}: "Hewlett Packard Enterprise",
- [3]byte{152, 244, 40}: "zte corporation",
- [3]byte{152, 245, 55}: "zte corporation",
- [3]byte{152, 245, 169}: "OHSUNG",
- [3]byte{152, 247, 215}: "ARRIS Group, Inc.",
- [3]byte{152, 248, 193}: "IDT Technology Limited",
- [3]byte{152, 248, 219}: "Marini Impianti Industriali s.r.l.",
- [3]byte{152, 250, 227}: "Xiaomi Communications Co Ltd",
- [3]byte{152, 251, 18}: "Grand Electronics (HK) Ltd",
- [3]byte{152, 252, 17}: "Cisco-Linksys, LLC",
- [3]byte{152, 253, 116}: "ACT.CO.LTD",
- [3]byte{152, 253, 180}: "Primax Electronics Ltd.",
- [3]byte{152, 254, 3}: "Ericsson - North America",
- [3]byte{152, 254, 148}: "Apple, Inc.",
- [3]byte{152, 255, 106}: "OTEC(Shanghai)Technology Co.,Ltd.",
- [3]byte{152, 255, 208}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{156, 1, 17}: "Shenzhen Newabel Electronic Co., Ltd.",
- [3]byte{156, 2, 152}: "Samsung Electronics Co.,Ltd",
- [3]byte{156, 3, 158}: "Beijing Winchannel Software Technology Co., Ltd",
- [3]byte{156, 4, 115}: "Tecmobile (International) Ltd.",
- [3]byte{156, 4, 235}: "Apple, Inc.",
- [3]byte{156, 6, 27}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{156, 6, 110}: "Hytera Communications Corporation Limited",
- [3]byte{156, 13, 172}: "Tymphany HK Limited",
- [3]byte{156, 14, 74}: "Shenzhen Vastking Electronic Co.,Ltd.",
- [3]byte{156, 19, 171}: "Chanson Water Co., Ltd.",
- [3]byte{156, 20, 101}: "Edata Elektronik San. ve Tic. A.Ş.",
- [3]byte{156, 24, 116}: "Nokia Danmark A/S",
- [3]byte{156, 28, 18}: "Aruba Networks",
- [3]byte{156, 29, 88}: "Texas Instruments",
- [3]byte{156, 30, 149}: "Actiontec Electronics, Inc",
- [3]byte{156, 31, 221}: "Accupix Inc.",
- [3]byte{156, 32, 123}: "Apple, Inc.",
- [3]byte{156, 33, 106}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{156, 34, 14}: "TASCAN Systems GmbH",
- [3]byte{156, 40, 64}: "Discovery Technology,LTD..",
- [3]byte{156, 40, 191}: "Continental Automotive Czech Republic s.r.o.",
- [3]byte{156, 40, 239}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{156, 41, 63}: "Apple, Inc.",
- [3]byte{156, 42, 112}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{156, 42, 131}: "Samsung Electronics Co.,Ltd",
- [3]byte{156, 48, 91}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{156, 48, 102}: "RWE Effizienz GmbH",
- [3]byte{156, 49, 120}: "Foshan Huadian Intelligent Communications Teachnologies Co.,Ltd",
- [3]byte{156, 49, 182}: "Kulite Semiconductor Products Inc",
- [3]byte{156, 50, 169}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{156, 52, 38}: "ARRIS Group, Inc.",
- [3]byte{156, 53, 131}: "Nipro Diagnostics, Inc",
- [3]byte{156, 53, 235}: "Apple, Inc.",
- [3]byte{156, 55, 244}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{156, 58, 175}: "Samsung Electronics Co.,Ltd",
- [3]byte{156, 61, 207}: "NETGEAR",
- [3]byte{156, 62, 170}: "EnvyLogic Co.,Ltd.",
- [3]byte{156, 65, 124}: "Hame Technology Co., Limited",
- [3]byte{156, 68, 61}: "CHENGDU XUGUANG TECHNOLOGY CO, LTD",
- [3]byte{156, 68, 166}: "SwiftTest, Inc.",
- [3]byte{156, 69, 99}: "DIMEP Sistemas",
- [3]byte{156, 74, 123}: "Nokia Corporation",
- [3]byte{156, 76, 174}: "Mesa Labs",
- [3]byte{156, 78, 32}: "Cisco Systems, Inc",
- [3]byte{156, 78, 54}: "Intel Corporate",
- [3]byte{156, 78, 142}: "ALT Systems Ltd",
- [3]byte{156, 78, 191}: "BoxCast",
- [3]byte{156, 79, 207}: "TCT mobile ltd",
- [3]byte{156, 79, 218}: "Apple, Inc.",
- [3]byte{156, 80, 238}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{156, 82, 248}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{156, 83, 205}: "ENGICAM s.r.l.",
- [3]byte{156, 84, 28}: "Shenzhen My-power Technology Co.,Ltd",
- [3]byte{156, 84, 202}: "Zhengzhou VCOM Science and Technology Co.,Ltd",
- [3]byte{156, 85, 180}: "I.S.E. S.r.l.",
- [3]byte{156, 87, 17}: "Feitian Xunda(Beijing) Aeronautical Information Technology Co., Ltd.",
- [3]byte{156, 87, 173}: "Cisco Systems, Inc",
- [3]byte{156, 91, 150}: "NMR Corporation",
- [3]byte{156, 92, 141}: "FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS LTDA",
- [3]byte{156, 92, 142}: "ASUSTek COMPUTER INC.",
- [3]byte{156, 92, 249}: "Sony Mobile Communications AB",
- [3]byte{156, 93, 18}: "Aerohive Networks Inc.",
- [3]byte{156, 93, 149}: "VTC Electronics Corp.",
- [3]byte{156, 94, 115}: "Calibre UK LTD",
- [3]byte{156, 97, 29}: "Omni-ID USA, Inc.",
- [3]byte{156, 97, 33}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{156, 98, 171}: "Sumavision Technologies Co.,Ltd",
- [3]byte{156, 99, 237}: "zte corporation",
- [3]byte{156, 100, 94}: "Harman Consumer Group",
- [3]byte{156, 101, 176}: "Samsung Electronics Co.,Ltd",
- [3]byte{156, 101, 238}: "DASAN Network Solutions",
- [3]byte{156, 101, 249}: "AcSiP Technology Corp.",
- [3]byte{156, 102, 80}: "Glodio Technolies Co.,Ltd Tianjin Branch",
- [3]byte{156, 104, 91}: "Octonion SA",
- [3]byte{156, 106, 190}: "QEES ApS.",
- [3]byte{156, 108, 21}: "Microsoft Corporation",
- [3]byte{156, 111, 82}: "zte corporation",
- [3]byte{156, 116, 26}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{156, 117, 20}: "Wildix srl",
- [3]byte{156, 119, 170}: "NADASNV",
- [3]byte{156, 121, 172}: "Suntec Software(Shanghai) Co., Ltd.",
- [3]byte{156, 122, 3}: "Ciena Corporation",
- [3]byte{156, 123, 210}: "NEOLAB Convergence",
- [3]byte{156, 125, 163}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{156, 128, 125}: "SYSCABLE Korea Inc.",
- [3]byte{156, 128, 223}: "Arcadyan Technology Corporation",
- [3]byte{156, 131, 191}: "PRO-VISION, Inc.",
- [3]byte{156, 132, 191}: "Apple, Inc.",
- [3]byte{156, 134, 218}: "Phoenix Geophysics Ltd.",
- [3]byte{156, 136, 136}: "Simac Techniek NV",
- [3]byte{156, 136, 173}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{156, 139, 160}: "Apple, Inc.",
- [3]byte{156, 139, 241}: "The Warehouse Limited",
- [3]byte{156, 140, 110}: "Samsung Electronics Co.,Ltd",
- [3]byte{156, 141, 26}: "INTEG process group inc",
- [3]byte{156, 141, 124}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{156, 141, 211}: "Leonton Technologies",
- [3]byte{156, 142, 153}: "Hewlett Packard",
- [3]byte{156, 142, 205}: "Amcrest Technologies",
- [3]byte{156, 142, 220}: "Teracom Limited",
- [3]byte{156, 147, 78}: "Xerox Corporation",
- [3]byte{156, 147, 228}: "Private",
- [3]byte{156, 149, 248}: "SmartDoor Systems, LLC",
- [3]byte{156, 151, 38}: "Technicolor",
- [3]byte{156, 152, 17}: "Guangzhou Sunrise Electronics Development Co., Ltd",
- [3]byte{156, 153, 160}: "Xiaomi Communications Co Ltd",
- [3]byte{156, 156, 29}: "Starkey Labs Inc.",
- [3]byte{156, 156, 64}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{156, 157, 93}: "Raden Inc",
- [3]byte{156, 161, 10}: "SCLE SFE",
- [3]byte{156, 161, 52}: "Nike, Inc.",
- [3]byte{156, 163, 169}: "Guangzhou Juan Optical and Electronical Tech Joint Stock Co., Ltd",
- [3]byte{156, 163, 186}: "SAKURA Internet Inc.",
- [3]byte{156, 165, 119}: "Osorno Enterprises Inc.",
- [3]byte{156, 165, 192}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{156, 166, 157}: "Whaley Technology Co.Ltd",
- [3]byte{156, 169, 228}: "zte corporation",
- [3]byte{156, 172, 109}: "Universal Electronics, Inc.",
- [3]byte{156, 173, 151}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{156, 173, 239}: "Obihai Technology, Inc.",
- [3]byte{156, 174, 211}: "Seiko Epson Corporation",
- [3]byte{156, 175, 111}: "ITEL MOBILE LIMITED",
- [3]byte{156, 175, 202}: "Cisco Systems, Inc",
- [3]byte{156, 176, 8}: "Ubiquitous Computing Technology Corporation",
- [3]byte{156, 178, 6}: "PROCENTEC",
- [3]byte{156, 178, 178}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{156, 182, 84}: "Hewlett Packard",
- [3]byte{156, 182, 208}: "Rivet Networks",
- [3]byte{156, 183, 13}: "Liteon Technology Corporation",
- [3]byte{156, 183, 147}: "Creatcomm Technology Inc.",
- [3]byte{156, 187, 152}: "Shen Zhen RND Electronic Co.,LTD",
- [3]byte{156, 189, 157}: "SkyDisk, Inc.",
- [3]byte{156, 190, 224}: "Biosoundlab Co., Ltd.",
- [3]byte{156, 192, 119}: "PrintCounts, LLC",
- [3]byte{156, 192, 210}: "Conductix-Wampfler GmbH",
- [3]byte{156, 193, 114}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{156, 199, 166}: "AVM GmbH",
- [3]byte{156, 199, 209}: "SHARP Corporation",
- [3]byte{156, 200, 174}: "Becton, Dickinson and Company",
- [3]byte{156, 202, 217}: "Nokia Corporation",
- [3]byte{156, 204, 131}: "Juniper Networks",
- [3]byte{156, 205, 130}: "CHENG UEI PRECISION INDUSTRY CO.,LTD",
- [3]byte{156, 210, 30}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{156, 210, 75}: "zte corporation",
- [3]byte{156, 211, 50}: "PLC Technology Ltd",
- [3]byte{156, 211, 91}: "Samsung Electronics Co.,Ltd",
- [3]byte{156, 211, 109}: "NETGEAR",
- [3]byte{156, 212, 139}: "Innolux Technology Europe BV",
- [3]byte{156, 214, 67}: "D-Link International",
- [3]byte{156, 217, 23}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{156, 217, 203}: "Lesira Manufacturing Pty Ltd",
- [3]byte{156, 218, 62}: "Intel Corporate",
- [3]byte{156, 220, 113}: "Hewlett Packard Enterprise",
- [3]byte{156, 221, 31}: "Intelligent Steward Co.,Ltd",
- [3]byte{156, 223, 3}: "Harman/Becker Automotive Systems GmbH",
- [3]byte{156, 223, 177}: "Shenzhen Crave Communication Co., LTD",
- [3]byte{156, 224, 99}: "Samsung Electronics Co.,Ltd",
- [3]byte{156, 225, 14}: "NCTech Ltd",
- [3]byte{156, 225, 214}: "Junger Audio-Studiotechnik GmbH",
- [3]byte{156, 226, 48}: "JULONG CO,.LTD.",
- [3]byte{156, 227, 63}: "Apple, Inc.",
- [3]byte{156, 227, 116}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{156, 230, 53}: "Nintendo Co., Ltd.",
- [3]byte{156, 230, 231}: "Samsung Electronics Co.,Ltd",
- [3]byte{156, 231, 189}: "Winduskorea co., Ltd",
- [3]byte{156, 233, 81}: "Shenzhen Sang Fei Consumer Communications Ltd., Co.",
- [3]byte{156, 235, 232}: "BizLink (Kunshan) Co.,Ltd",
- [3]byte{156, 239, 213}: "Panda Wireless, Inc.",
- [3]byte{156, 243, 135}: "Apple, Inc.",
- [3]byte{156, 244, 142}: "Apple, Inc.",
- [3]byte{156, 246, 26}: "UTC Fire and Security",
- [3]byte{156, 246, 125}: "Ricardo Prague, s.r.o.",
- [3]byte{156, 248, 219}: "shenzhen eyunmei technology co,.ltd",
- [3]byte{156, 249, 56}: "AREVA NP GmbH",
- [3]byte{156, 251, 213}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{156, 251, 241}: "MESOMATIC GmbH & Co.KG",
- [3]byte{156, 252, 1}: "Apple, Inc.",
- [3]byte{156, 252, 209}: "Aetheris Technology (Shanghai) Co., Ltd.",
- [3]byte{156, 255, 190}: "OTSL Inc.",
- [3]byte{160, 2, 220}: "Amazon Technologies Inc.",
- [3]byte{160, 3, 99}: "Robert Bosch Healthcare GmbH",
- [3]byte{160, 4, 62}: "Parker Hannifin Manufacturing Germany GmbH & Co. KG",
- [3]byte{160, 4, 96}: "NETGEAR",
- [3]byte{160, 6, 39}: "NEXPA System",
- [3]byte{160, 7, 152}: "Samsung Electronics Co.,Ltd",
- [3]byte{160, 7, 182}: "Advanced Technical Support, Inc.",
- [3]byte{160, 8, 111}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{160, 9, 76}: "CenturyLink",
- [3]byte{160, 9, 237}: "Avaya Inc",
- [3]byte{160, 10, 191}: "Wieson Technologies Co., Ltd.",
- [3]byte{160, 11, 186}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{160, 12, 161}: "SKTB SKiT",
- [3]byte{160, 16, 129}: "Samsung Electronics Co.,Ltd",
- [3]byte{160, 18, 144}: "Avaya Inc",
- [3]byte{160, 18, 219}: "TABUCHI ELECTRIC CO.,LTD",
- [3]byte{160, 19, 59}: "HiTi Digital, Inc.",
- [3]byte{160, 19, 203}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{160, 20, 61}: "PARROT SA",
- [3]byte{160, 22, 92}: "Triteka LTD",
- [3]byte{160, 24, 40}: "Apple, Inc.",
- [3]byte{160, 24, 89}: "Shenzhen Yidashi Electronics Co Ltd",
- [3]byte{160, 25, 23}: "Bertel S.p.a.",
- [3]byte{160, 27, 41}: "Sagemcom Broadband SAS",
- [3]byte{160, 28, 5}: "NIMAX TELECOM CO.,LTD.",
- [3]byte{160, 29, 72}: "Hewlett Packard",
- [3]byte{160, 30, 11}: "MINIX Technology Limited",
- [3]byte{160, 32, 166}: "Espressif Inc.",
- [3]byte{160, 33, 149}: "Samsung Electronics Co.,Ltd",
- [3]byte{160, 33, 183}: "NETGEAR",
- [3]byte{160, 35, 27}: "TeleComp R&D Corp.",
- [3]byte{160, 35, 159}: "Cisco Systems, Inc",
- [3]byte{160, 43, 184}: "Hewlett Packard",
- [3]byte{160, 44, 54}: "FN-LINK TECHNOLOGY LIMITED",
- [3]byte{160, 46, 243}: "United Integrated Services Co., Led.",
- [3]byte{160, 50, 153}: "Lenovo (Beijing) Co., Ltd.",
- [3]byte{160, 52, 27}: "TrackR, Inc",
- [3]byte{160, 54, 159}: "Intel Corporate",
- [3]byte{160, 54, 240}: "Comprehensive Power",
- [3]byte{160, 54, 250}: "Ettus Research LLC",
- [3]byte{160, 57, 247}: "LG Electronics (Mobile Communications)",
- [3]byte{160, 58, 117}: "PSS Belgium N.V.",
- [3]byte{160, 59, 27}: "Inspire Tech",
- [3]byte{160, 59, 227}: "Apple, Inc.",
- [3]byte{160, 61, 111}: "Cisco Systems, Inc",
- [3]byte{160, 62, 107}: "IEEE Registration Authority",
- [3]byte{160, 64, 37}: "Actioncable, Inc.",
- [3]byte{160, 64, 65}: "SAMWONFA Co.,Ltd.",
- [3]byte{160, 64, 160}: "NETGEAR",
- [3]byte{160, 65, 94}: "Opsens Solution Inc.",
- [3]byte{160, 65, 167}: "NL Ministry of Defense",
- [3]byte{160, 66, 63}: "Tyan Computer Corp",
- [3]byte{160, 67, 219}: "Sitael S.p.A.",
- [3]byte{160, 72, 28}: "Hewlett Packard",
- [3]byte{160, 76, 91}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{160, 76, 193}: "Helixtech Corp.",
- [3]byte{160, 78, 1}: "CENTRAL ENGINEERING co.,ltd.",
- [3]byte{160, 78, 4}: "Nokia Corporation",
- [3]byte{160, 78, 167}: "Apple, Inc.",
- [3]byte{160, 79, 212}: "ADB Broadband Italia",
- [3]byte{160, 81, 198}: "Avaya Inc",
- [3]byte{160, 85, 79}: "Cisco Systems, Inc",
- [3]byte{160, 85, 222}: "ARRIS Group, Inc.",
- [3]byte{160, 86, 178}: "Harman/Becker Automotive Systems GmbH",
- [3]byte{160, 89, 58}: "V.D.S. Video Display Systems srl",
- [3]byte{160, 90, 164}: "Grand Products Nevada, Inc.",
- [3]byte{160, 91, 33}: "ENVINET GmbH",
- [3]byte{160, 93, 193}: "TMCT Co., LTD.",
- [3]byte{160, 93, 231}: "DIRECTV, Inc.",
- [3]byte{160, 94, 107}: "MELPER Co., Ltd.",
- [3]byte{160, 96, 144}: "Samsung Electronics Co.,Ltd",
- [3]byte{160, 99, 145}: "NETGEAR",
- [3]byte{160, 100, 143}: "ASKEY COMPUTER CORP",
- [3]byte{160, 101, 24}: "VNPT TECHNOLOGY",
- [3]byte{160, 103, 190}: "Sicon srl",
- [3]byte{160, 105, 134}: "Wellav Technologies Ltd",
- [3]byte{160, 106, 0}: "Verilink Corporation",
- [3]byte{160, 106, 68}: "Vizio, Inc",
- [3]byte{160, 108, 236}: "RIM",
- [3]byte{160, 109, 9}: "Intelcan Technosystems Inc.",
- [3]byte{160, 110, 80}: "Nanotek Elektronik Sistemler Ltd. Sti.",
- [3]byte{160, 111, 170}: "LG Innotek",
- [3]byte{160, 112, 153}: "Beijing Huacan Electronics Co., Ltd",
- [3]byte{160, 113, 169}: "Nokia Corporation",
- [3]byte{160, 114, 44}: "HUMAX Co., Ltd.",
- [3]byte{160, 114, 228}: "NJ SYSTEM CO.,LTD",
- [3]byte{160, 115, 50}: "Cashmaster International Limited",
- [3]byte{160, 115, 252}: "Rancore Technologies Private Limited",
- [3]byte{160, 117, 145}: "Samsung Electronics Co.,Ltd",
- [3]byte{160, 119, 113}: "Vialis BV",
- [3]byte{160, 120, 186}: "Pantech Co., Ltd.",
- [3]byte{160, 130, 31}: "Samsung Electronics Co.,Ltd",
- [3]byte{160, 130, 172}: "Linear DMS Solutions Sdn. Bhd.",
- [3]byte{160, 130, 199}: "P.T.I Co.,LTD",
- [3]byte{160, 132, 203}: "SonicSensory,Inc.",
- [3]byte{160, 134, 29}: "Chengdu Fuhuaxin Technology co.,Ltd",
- [3]byte{160, 134, 198}: "Xiaomi Communications Co Ltd",
- [3]byte{160, 134, 236}: "SAEHAN HITEC Co., Ltd",
- [3]byte{160, 136, 105}: "Intel Corporate",
- [3]byte{160, 136, 180}: "Intel Corporate",
- [3]byte{160, 137, 228}: "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
- [3]byte{160, 138, 135}: "HuiZhou KaiYue Electronic Co.,Ltd",
- [3]byte{160, 140, 21}: "Gerhard D. Wempe KG",
- [3]byte{160, 140, 155}: "Xtreme Technologies Corp",
- [3]byte{160, 140, 248}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{160, 140, 253}: "Hewlett Packard",
- [3]byte{160, 141, 22}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{160, 142, 120}: "Sagemcom Broadband SAS",
- [3]byte{160, 144, 222}: "VEEDIMS,LLC",
- [3]byte{160, 145, 105}: "LG Electronics (Mobile Communications)",
- [3]byte{160, 145, 200}: "zte corporation",
- [3]byte{160, 147, 71}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{160, 149, 12}: "China Mobile IOTCompany Limited",
- [3]byte{160, 152, 5}: "OpenVox Communication Co Ltd",
- [3]byte{160, 152, 237}: "Shandong Intelligent Optical Communication Development Co., Ltd.",
- [3]byte{160, 153, 155}: "Apple, Inc.",
- [3]byte{160, 154, 90}: "Time Domain",
- [3]byte{160, 155, 189}: "Total Aviation Solutions Pty Ltd",
- [3]byte{160, 157, 134}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{160, 157, 145}: "SoundBridge",
- [3]byte{160, 157, 193}: "China Dragon Technology Limited",
- [3]byte{160, 158, 26}: "Polar Electro Oy",
- [3]byte{160, 161, 48}: "DLI Taiwan Branch office",
- [3]byte{160, 162, 60}: "GPMS",
- [3]byte{160, 163, 59}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{160, 163, 226}: "Actiontec Electronics, Inc",
- [3]byte{160, 166, 92}: "Supercomputing Systems AG",
- [3]byte{160, 167, 99}: "Polytron Vertrieb GmbH",
- [3]byte{160, 168, 205}: "Intel Corporate",
- [3]byte{160, 170, 253}: "EraThink Technologies Corp.",
- [3]byte{160, 171, 27}: "D-Link International",
- [3]byte{160, 173, 161}: "JMR Electronics, Inc",
- [3]byte{160, 175, 189}: "Intel Corporate",
- [3]byte{160, 177, 0}: "ShenZhen Cando Electronics Co.,Ltd",
- [3]byte{160, 179, 204}: "Hewlett Packard",
- [3]byte{160, 180, 55}: "GD Mission Systems",
- [3]byte{160, 180, 165}: "Samsung Electronics Co.,Ltd",
- [3]byte{160, 181, 218}: "HongKong THTF Co., Ltd",
- [3]byte{160, 182, 98}: "Acutvista Innovation Co., Ltd.",
- [3]byte{160, 184, 248}: "Amgen U.S.A. Inc.",
- [3]byte{160, 185, 237}: "Skytap",
- [3]byte{160, 186, 184}: "Pixon Imaging",
- [3]byte{160, 187, 62}: "IEEE Registration Authority",
- [3]byte{160, 189, 205}: "BSkyB Ltd",
- [3]byte{160, 191, 80}: "S.C. ADD-PRODUCTION S.R.L.",
- [3]byte{160, 191, 165}: "CORESYS",
- [3]byte{160, 194, 222}: "Costar Video Systems",
- [3]byte{160, 195, 222}: "Triton Electronic Systems Ltd.",
- [3]byte{160, 196, 165}: "SYGN HOUSE CO.,LTD",
- [3]byte{160, 197, 98}: "ARRIS Group, Inc.",
- [3]byte{160, 197, 137}: "Intel Corporate",
- [3]byte{160, 197, 242}: "IEEE Registration Authority",
- [3]byte{160, 198, 236}: "ShenZhen ANYK Technology Co.,LTD",
- [3]byte{160, 201, 160}: "Murata Manufacturing Co., Ltd.",
- [3]byte{160, 203, 253}: "Samsung Electronics Co.,Ltd",
- [3]byte{160, 204, 43}: "Murata Manufacturing Co., Ltd.",
- [3]byte{160, 206, 200}: "CE LINK LIMITED",
- [3]byte{160, 207, 91}: "Cisco Systems, Inc",
- [3]byte{160, 209, 42}: "AXPRO Technology Inc.",
- [3]byte{160, 211, 122}: "Intel Corporate",
- [3]byte{160, 211, 133}: "AUMA Riester GmbH & Co. KG",
- [3]byte{160, 211, 193}: "Hewlett Packard",
- [3]byte{160, 215, 149}: "Apple, Inc.",
- [3]byte{160, 216, 111}: "Private",
- [3]byte{160, 218, 146}: "Nanjing Glarun Atten Technology Co. Ltd.",
- [3]byte{160, 220, 4}: "Becker-Antriebe GmbH",
- [3]byte{160, 221, 151}: "PolarLink Technologies, Ltd",
- [3]byte{160, 221, 229}: "SHARP Corporation",
- [3]byte{160, 222, 5}: "JSC Irbis-T",
- [3]byte{160, 224, 175}: "Cisco Systems, Inc",
- [3]byte{160, 226, 1}: "AVTrace Ltd.(China)",
- [3]byte{160, 226, 90}: "Amicus SK, s.r.o.",
- [3]byte{160, 226, 149}: "DAT System Co.,Ltd",
- [3]byte{160, 228, 83}: "Sony Mobile Communications AB",
- [3]byte{160, 228, 203}: "Zyxel Communications Corporation",
- [3]byte{160, 229, 52}: "Stratec Biomedical AG",
- [3]byte{160, 229, 233}: "enimai Inc",
- [3]byte{160, 230, 248}: "Texas Instruments",
- [3]byte{160, 233, 219}: "Ningbo FreeWings Technologies Co.,Ltd",
- [3]byte{160, 235, 118}: "AirCUVE Inc.",
- [3]byte{160, 236, 128}: "zte corporation",
- [3]byte{160, 236, 249}: "Cisco Systems, Inc",
- [3]byte{160, 237, 205}: "Apple, Inc.",
- [3]byte{160, 239, 132}: "Seine Image Int'l Co., Ltd",
- [3]byte{160, 242, 23}: "GE Medical System(China) Co., Ltd.",
- [3]byte{160, 243, 193}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{160, 243, 228}: "Alcatel-Lucent IPD",
- [3]byte{160, 244, 25}: "Nokia Corporation",
- [3]byte{160, 244, 80}: "HTC Corporation",
- [3]byte{160, 244, 89}: "FN-LINK TECHNOLOGY LIMITED",
- [3]byte{160, 244, 121}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{160, 246, 253}: "Texas Instruments",
- [3]byte{160, 248, 73}: "Cisco Systems, Inc",
- [3]byte{160, 248, 149}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{160, 249, 224}: "VIVATEL COMPANY LIMITED",
- [3]byte{160, 252, 110}: "Telegrafia a.s.",
- [3]byte{160, 254, 97}: "Vivint Wireless Inc.",
- [3]byte{160, 254, 145}: "AVAT Automation GmbH",
- [3]byte{164, 1, 48}: "ABIsystems Co., LTD",
- [3]byte{164, 2, 185}: "Intel Corporate",
- [3]byte{164, 4, 80}: "nFore Technology Inc.",
- [3]byte{164, 5, 158}: "STA Infinity LLP",
- [3]byte{164, 7, 182}: "Samsung Electronics Co.,Ltd",
- [3]byte{164, 8, 234}: "Murata Manufacturing Co., Ltd.",
- [3]byte{164, 8, 245}: "Sagemcom Broadband SAS",
- [3]byte{164, 9, 203}: "Alfred Kaercher GmbH &amp; Co KG",
- [3]byte{164, 11, 237}: "Carry Technology Co.,Ltd",
- [3]byte{164, 12, 195}: "Cisco Systems, Inc",
- [3]byte{164, 13, 188}: "Xiamen Intretech Inc.",
- [3]byte{164, 14, 43}: "Facebook Inc",
- [3]byte{164, 17, 21}: "Robert Bosch Engineering and Business Solutions pvt. Ltd.",
- [3]byte{164, 17, 99}: "IEEE Registration Authority",
- [3]byte{164, 18, 66}: "NEC Platforms, Ltd.",
- [3]byte{164, 19, 78}: "Luxul",
- [3]byte{164, 20, 55}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
- [3]byte{164, 21, 102}: "Weifang GoerTek Technology Co.,Ltd.",
- [3]byte{164, 21, 136}: "ARRIS Group, Inc.",
- [3]byte{164, 23, 49}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{164, 24, 117}: "Cisco Systems, Inc",
- [3]byte{164, 27, 192}: "Fastec Imaging Corporation",
- [3]byte{164, 31, 114}: "Dell Inc.",
- [3]byte{164, 33, 138}: "Nortel Networks",
- [3]byte{164, 35, 5}: "Open Networking Laboratory",
- [3]byte{164, 36, 179}: "FlatFrog Laboratories AB",
- [3]byte{164, 36, 221}: "Cambrionix Ltd",
- [3]byte{164, 37, 27}: "Avaya Inc",
- [3]byte{164, 41, 64}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{164, 41, 131}: "Boeing Defence Australia",
- [3]byte{164, 41, 183}: "bluesky",
- [3]byte{164, 43, 140}: "NETGEAR",
- [3]byte{164, 43, 176}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{164, 44, 8}: "Masterwork Automodules",
- [3]byte{164, 49, 17}: "ZIV",
- [3]byte{164, 49, 53}: "Apple, Inc.",
- [3]byte{164, 51, 209}: "Fibrlink Communications Co.,Ltd.",
- [3]byte{164, 52, 18}: "Thales Alenia Space",
- [3]byte{164, 52, 217}: "Intel Corporate",
- [3]byte{164, 52, 241}: "Texas Instruments",
- [3]byte{164, 56, 49}: "RF elements s.r.o.",
- [3]byte{164, 56, 252}: "Plastic Logic",
- [3]byte{164, 58, 105}: "Vers Inc",
- [3]byte{164, 59, 250}: "IEEE Registration Authority",
- [3]byte{164, 61, 120}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{164, 62, 81}: "ANOV FRANCE",
- [3]byte{164, 68, 209}: "Wingtech Group (HongKong)Limited",
- [3]byte{164, 70, 107}: "EOC Technology",
- [3]byte{164, 70, 250}: "AmTRAN Video Corporation",
- [3]byte{164, 74, 211}: "ST Electronics(Shanghai) Co.,Ltd",
- [3]byte{164, 75, 21}: "Sun Cupid Technology (HK) LTD",
- [3]byte{164, 76, 17}: "Cisco Systems, Inc",
- [3]byte{164, 76, 200}: "Dell Inc.",
- [3]byte{164, 78, 45}: "Adaptive Wireless Solutions, LLC",
- [3]byte{164, 78, 49}: "Intel Corporate",
- [3]byte{164, 79, 41}: "IEEE Registration Authority",
- [3]byte{164, 80, 85}: "busware.de",
- [3]byte{164, 81, 111}: "Microsoft Mobile Oy",
- [3]byte{164, 82, 111}: "ADB Broadband Italia",
- [3]byte{164, 83, 133}: "Weifang GoerTek Technology Co.,Ltd.",
- [3]byte{164, 86, 2}: "fenglian Technology Co.,Ltd.",
- [3]byte{164, 86, 27}: "MCOT Corporation",
- [3]byte{164, 86, 48}: "Cisco Systems, Inc",
- [3]byte{164, 88, 15}: "IEEE Registration Authority",
- [3]byte{164, 90, 28}: "smart-electronic GmbH",
- [3]byte{164, 92, 39}: "Nintendo Co., Ltd.",
- [3]byte{164, 93, 54}: "Hewlett Packard",
- [3]byte{164, 93, 161}: "ADB Broadband Italia",
- [3]byte{164, 94, 96}: "Apple, Inc.",
- [3]byte{164, 96, 17}: "Verifone",
- [3]byte{164, 96, 50}: "MRV Communications (Networks) LTD",
- [3]byte{164, 98, 223}: "DS Global. Co., LTD",
- [3]byte{164, 103, 6}: "Apple, Inc.",
- [3]byte{164, 104, 188}: "Private",
- [3]byte{164, 108, 42}: "Cisco Systems, Inc",
- [3]byte{164, 108, 193}: "LTi REEnergy GmbH",
- [3]byte{164, 110, 121}: "DFT System Co.Ltd",
- [3]byte{164, 112, 214}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{164, 113, 116}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{164, 119, 51}: "Google, Inc.",
- [3]byte{164, 119, 88}: "Ningbo Freewings Technologies Co.,Ltd",
- [3]byte{164, 119, 96}: "Nokia Corporation",
- [3]byte{164, 120, 134}: "Avaya Inc",
- [3]byte{164, 121, 228}: "KLINFO Corp",
- [3]byte{164, 122, 164}: "ARRIS Group, Inc.",
- [3]byte{164, 122, 207}: "VIBICOM COMMUNICATIONS INC.",
- [3]byte{164, 123, 44}: "Nokia",
- [3]byte{164, 123, 133}: "ULTIMEDIA Co Ltd,",
- [3]byte{164, 123, 157}: "Espressif Inc.",
- [3]byte{164, 124, 20}: "ChargeStorm AB",
- [3]byte{164, 124, 31}: "Cobham plc",
- [3]byte{164, 126, 57}: "zte corporation",
- [3]byte{164, 129, 238}: "Nokia Corporation",
- [3]byte{164, 130, 105}: "Datrium, Inc.",
- [3]byte{164, 132, 49}: "Samsung Electronics Co.,Ltd",
- [3]byte{164, 133, 107}: "Q Electronics Ltd",
- [3]byte{164, 134, 174}: "Quectel Wireless Solutions",
- [3]byte{164, 137, 91}: "ARK INFOSOLUTIONS PVT LTD",
- [3]byte{164, 140, 219}: "Lenovo",
- [3]byte{164, 141, 59}: "Vizio, Inc",
- [3]byte{164, 142, 10}: "DeLaval International AB",
- [3]byte{164, 144, 5}: "CHINA GREATWALL COMPUTER SHENZHEN CO.,LTD",
- [3]byte{164, 145, 177}: "Technicolor",
- [3]byte{164, 147, 76}: "Cisco Systems, Inc",
- [3]byte{164, 151, 187}: "Hitachi Industrial Equipment Systems Co.,Ltd",
- [3]byte{164, 153, 71}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{164, 153, 129}: "FuJian Elite Power Tech CO.,LTD.",
- [3]byte{164, 154, 88}: "Samsung Electronics Co.,Ltd",
- [3]byte{164, 155, 19}: "Digital Check",
- [3]byte{164, 155, 245}: "Hybridserver Tec GmbH",
- [3]byte{164, 157, 73}: "Ketra, Inc.",
- [3]byte{164, 158, 219}: "AutoCrib, Inc.",
- [3]byte{164, 159, 133}: "Lyve Minds, Inc",
- [3]byte{164, 159, 137}: "Shanghai Rui Rui Communication Technology Co.Ltd.",
- [3]byte{164, 161, 194}: "Ericsson AB",
- [3]byte{164, 161, 228}: "Innotube, Inc.",
- [3]byte{164, 162, 74}: "Cisco SPVTG",
- [3]byte{164, 164, 211}: "Bluebank Communication Technology Co.Ltd",
- [3]byte{164, 166, 169}: "Private",
- [3]byte{164, 168, 15}: "Shenzhen Coship Electronics Co., Ltd.",
- [3]byte{164, 173, 0}: "Ragsdale Technology",
- [3]byte{164, 173, 184}: "Vitec Group, Camera Dynamics Ltd",
- [3]byte{164, 174, 154}: "Maestro Wireless Solutions ltd.",
- [3]byte{164, 177, 33}: "Arantia 2010 S.L.",
- [3]byte{164, 177, 151}: "Apple, Inc.",
- [3]byte{164, 177, 233}: "Technicolor",
- [3]byte{164, 177, 238}: "H. ZANDER GmbH & Co. KG",
- [3]byte{164, 178, 167}: "Adaxys Solutions AG",
- [3]byte{164, 179, 106}: "JSC SDO Chromatec",
- [3]byte{164, 181, 46}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{164, 184, 5}: "Apple, Inc.",
- [3]byte{164, 184, 24}: "PENTA Gesellschaft für elektronische Industriedatenverarbeitung mbH",
- [3]byte{164, 185, 128}: "Parking BOXX Inc.",
- [3]byte{164, 186, 118}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{164, 186, 219}: "Dell Inc.",
- [3]byte{164, 187, 175}: "Lime Instruments",
- [3]byte{164, 190, 97}: "EutroVision System, Inc.",
- [3]byte{164, 191, 1}: "Intel Corporate",
- [3]byte{164, 192, 199}: "ShenZhen Hitom Communication Technology Co..LTD",
- [3]byte{164, 192, 225}: "Nintendo Co., Ltd.",
- [3]byte{164, 193, 56}: "Telink Semiconductor (Taipei) Co. Ltd.",
- [3]byte{164, 194, 171}: "Hangzhou LEAD-IT Information & Technology Co.,Ltd",
- [3]byte{164, 195, 97}: "Apple, Inc.",
- [3]byte{164, 196, 148}: "Intel Corporate",
- [3]byte{164, 198, 79}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{164, 199, 222}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{164, 202, 160}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{164, 204, 50}: "Inficomm Co., Ltd",
- [3]byte{164, 208, 148}: "Erwin Peters Systemtechnik GmbH",
- [3]byte{164, 209, 140}: "Apple, Inc.",
- [3]byte{164, 209, 143}: "Shenzhen Skyee Optical Fiber Communication Technology Ltd.",
- [3]byte{164, 209, 209}: "ECOtality North America",
- [3]byte{164, 209, 210}: "Apple, Inc.",
- [3]byte{164, 211, 181}: "GLITEL Stropkov, s.r.o.",
- [3]byte{164, 213, 120}: "Texas Instruments",
- [3]byte{164, 216, 86}: "Gimbal, Inc",
- [3]byte{164, 216, 202}: "HONG KONG WATER WORLD TECHNOLOGY CO. LIMITED",
- [3]byte{164, 217, 164}: "neXus ID Solutions AB",
- [3]byte{164, 218, 63}: "Bionics Corp.",
- [3]byte{164, 219, 46}: "Kingspan Environmental Ltd",
- [3]byte{164, 219, 48}: "Liteon Technology Corporation",
- [3]byte{164, 220, 190}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{164, 222, 80}: "Total Walther GmbH",
- [3]byte{164, 222, 201}: "QLove Mobile Intelligence Information Technology (W.H.) Co. Ltd.",
- [3]byte{164, 224, 230}: "FILIZOLA S.A. PESAGEM E AUTOMACAO",
- [3]byte{164, 227, 46}: "Silicon & Software Systems Ltd.",
- [3]byte{164, 227, 145}: "DENY FONTAINE",
- [3]byte{164, 228, 184}: "BlackBerry RTS",
- [3]byte{164, 229, 151}: "Gessler GmbH",
- [3]byte{164, 230, 177}: "Shanghai Joindata Technology Co.,Ltd.",
- [3]byte{164, 231, 49}: "Nokia Corporation",
- [3]byte{164, 231, 228}: "Connex GmbH",
- [3]byte{164, 233, 117}: "Apple, Inc.",
- [3]byte{164, 233, 145}: "SISTEMAS AUDIOVISUALES ITELSIS S.L.",
- [3]byte{164, 233, 163}: "Honest Technology Co., Ltd",
- [3]byte{164, 235, 211}: "Samsung Electronics Co.,Ltd",
- [3]byte{164, 237, 78}: "ARRIS Group, Inc.",
- [3]byte{164, 238, 87}: "Seiko Epson Corporation",
- [3]byte{164, 239, 82}: "Telewave Co., Ltd.",
- [3]byte{164, 241, 232}: "Apple, Inc.",
- [3]byte{164, 243, 193}: "Open Source Robotics Foundation, Inc.",
- [3]byte{164, 243, 231}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{164, 244, 194}: "VNPT TECHNOLOGY",
- [3]byte{164, 245, 34}: "CHOFU SEISAKUSHO CO.,LTD",
- [3]byte{164, 247, 208}: "LAN Accessories Co., Ltd.",
- [3]byte{164, 251, 141}: "Hangzhou Dunchong Technology Co.Ltd",
- [3]byte{164, 252, 206}: "Security Expert Ltd.",
- [3]byte{168, 1, 128}: "IMAGO Technologies GmbH",
- [3]byte{168, 6, 0}: "Samsung Electronics Co.,Ltd",
- [3]byte{168, 12, 13}: "Cisco Systems, Inc",
- [3]byte{168, 12, 99}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{168, 12, 202}: "Shenzhen Sundray Technologies Company Limited",
- [3]byte{168, 17, 252}: "ARRIS Group, Inc.",
- [3]byte{168, 19, 116}: "Panasonic Corporation AVC Networks Company",
- [3]byte{168, 21, 77}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{168, 21, 89}: "Breathometer, Inc.",
- [3]byte{168, 21, 214}: "Shenzhen Meione Technology CO., LTD",
- [3]byte{168, 22, 178}: "LG Electronics (Mobile Communications)",
- [3]byte{168, 23, 88}: "Elektronik System i Umeå AB",
- [3]byte{168, 27, 24}: "XTS CORP",
- [3]byte{168, 27, 90}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{168, 27, 93}: "Foxtel Management Pty Ltd",
- [3]byte{168, 27, 106}: "Texas Instruments",
- [3]byte{168, 29, 22}: "AzureWave Technology Inc.",
- [3]byte{168, 30, 132}: "QUANTA COMPUTER INC.",
- [3]byte{168, 31, 175}: "KRYPTON POLSKA",
- [3]byte{168, 32, 102}: "Apple, Inc.",
- [3]byte{168, 36, 235}: "ZAO NPO Introtest",
- [3]byte{168, 37, 235}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{168, 38, 217}: "HTC Corporation",
- [3]byte{168, 41, 76}: "Precision Optical Transceivers, Inc.",
- [3]byte{168, 43, 181}: "Edgecore Networks Corporation",
- [3]byte{168, 43, 214}: "Shina System Co., Ltd",
- [3]byte{168, 48, 173}: "Weifang GoerTek Technology Co.,Ltd.",
- [3]byte{168, 50, 154}: "Digicom Futuristic Technologies Ltd.",
- [3]byte{168, 57, 68}: "Actiontec Electronics, Inc",
- [3]byte{168, 64, 65}: "Dragino Technology Co., Limited",
- [3]byte{168, 68, 129}: "Nokia Corporation",
- [3]byte{168, 69, 205}: "Siselectron Technology LTD.",
- [3]byte{168, 69, 233}: "Firich Enterprises CO., LTD.",
- [3]byte{168, 71, 74}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{168, 73, 165}: "Lisantech Co., Ltd.",
- [3]byte{168, 78, 63}: "Hitron Technologies. Inc",
- [3]byte{168, 84, 178}: "Wistron Neweb Corporation",
- [3]byte{168, 85, 106}: "Pocketnet Technology Inc.",
- [3]byte{168, 87, 78}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{168, 88, 64}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{168, 91, 120}: "Apple, Inc.",
- [3]byte{168, 91, 176}: "Shenzhen Dehoo Technology Co.,Ltd",
- [3]byte{168, 91, 243}: "Audivo GmbH",
- [3]byte{168, 92, 44}: "Apple, Inc.",
- [3]byte{168, 94, 228}: "12Sided Technology, LLC",
- [3]byte{168, 96, 182}: "Apple, Inc.",
- [3]byte{168, 97, 170}: "Cloudview Limited",
- [3]byte{168, 98, 162}: "JIWUMEDIA CO., LTD.",
- [3]byte{168, 99, 223}: "DISPLAIRE CORPORATION",
- [3]byte{168, 99, 242}: "Texas Instruments",
- [3]byte{168, 100, 5}: "nimbus 9, Inc",
- [3]byte{168, 101, 178}: "DONGGUAN YISHANG ELECTRONIC TECHNOLOGY CO., LIMITED",
- [3]byte{168, 102, 127}: "Apple, Inc.",
- [3]byte{168, 106, 111}: "RIM",
- [3]byte{168, 106, 193}: "HanbitEDS Co., Ltd.",
- [3]byte{168, 107, 124}: "SHENZHEN FENGLIAN TECHNOLOGY CO., LTD.",
- [3]byte{168, 107, 173}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{168, 112, 165}: "UniComm Inc.",
- [3]byte{168, 114, 133}: "IDT, INC.",
- [3]byte{168, 116, 29}: "PHOENIX CONTACT Electronics GmbH",
- [3]byte{168, 117, 214}: "FreeTek International Co., Ltd.",
- [3]byte{168, 117, 226}: "Aventura Technologies, Inc.",
- [3]byte{168, 119, 111}: "Zonoff",
- [3]byte{168, 123, 57}: "Nokia Corporation",
- [3]byte{168, 124, 1}: "Samsung Electronics Co.,Ltd",
- [3]byte{168, 126, 51}: "Nokia Danmark A/S",
- [3]byte{168, 128, 56}: "ShenZhen MovingComm Technology Co., Limited",
- [3]byte{168, 129, 149}: "Samsung Electronics Co.,Ltd",
- [3]byte{168, 129, 241}: "BMEYE B.V.",
- [3]byte{168, 130, 0}: "Hisense Electric Co.,Ltd",
- [3]byte{168, 130, 127}: "CIBN Oriental Network(Beijing) CO.,Ltd",
- [3]byte{168, 134, 221}: "Apple, Inc.",
- [3]byte{168, 135, 146}: "Broadband Antenna Tracking Systems",
- [3]byte{168, 135, 237}: "ARC Wireless LLC",
- [3]byte{168, 136, 8}: "Apple, Inc.",
- [3]byte{168, 140, 238}: "MicroMade Galka i Drozdz sp.j.",
- [3]byte{168, 141, 123}: "SunDroid Global limited.",
- [3]byte{168, 142, 36}: "Apple, Inc.",
- [3]byte{168, 144, 8}: "Beijing Yuecheng Technology Co. Ltd.",
- [3]byte{168, 146, 44}: "LG Electronics (Mobile Communications)",
- [3]byte{168, 147, 82}: "SHANGHAI ZHONGMI COMMUNICATION TECHNOLOGY CO.,LTD",
- [3]byte{168, 147, 230}: "JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LTD",
- [3]byte{168, 149, 176}: "Aker Subsea Ltd",
- [3]byte{168, 150, 117}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{168, 150, 138}: "Apple, Inc.",
- [3]byte{168, 151, 220}: "IBM",
- [3]byte{168, 152, 198}: "Shinbo Co., Ltd.",
- [3]byte{168, 153, 92}: "aizo ag",
- [3]byte{168, 155, 16}: "inMotion Ltd.",
- [3]byte{168, 157, 33}: "Cisco Systems, Inc",
- [3]byte{168, 157, 210}: "Shanghai DareGlobal Technologies Co.,Ltd",
- [3]byte{168, 159, 186}: "Samsung Electronics Co.,Ltd",
- [3]byte{168, 159, 236}: "ARRIS Group, Inc.",
- [3]byte{168, 160, 137}: "Tactical Communications",
- [3]byte{168, 161, 152}: "TCT mobile ltd",
- [3]byte{168, 165, 226}: "MSF-Vathauer Antriebstechnik GmbH & Co KG",
- [3]byte{168, 166, 72}: "Qingdao Hisense Communications Co.,Ltd.",
- [3]byte{168, 166, 104}: "zte corporation",
- [3]byte{168, 167, 149}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{168, 173, 61}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{168, 176, 174}: "LEONI",
- [3]byte{168, 177, 212}: "Cisco Systems, Inc",
- [3]byte{168, 178, 218}: "FUJITSU LIMITED",
- [3]byte{168, 184, 110}: "LG Electronics (Mobile Communications)",
- [3]byte{168, 185, 179}: "ESSYS",
- [3]byte{168, 187, 80}: "WiZ IoT Company Limited",
- [3]byte{168, 187, 207}: "Apple, Inc.",
- [3]byte{168, 189, 26}: "Honey Bee (Hong Kong) Limited",
- [3]byte{168, 189, 39}: "Hewlett Packard Enterprise",
- [3]byte{168, 189, 58}: "UNIONMAN TECHNOLOGY CO.,LTD",
- [3]byte{168, 190, 39}: "Apple, Inc.",
- [3]byte{168, 194, 34}: "TM-Research Inc.",
- [3]byte{168, 200, 58}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{168, 200, 127}: "Roqos, Inc.",
- [3]byte{168, 202, 123}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{168, 203, 149}: "EAST BEST CO., LTD.",
- [3]byte{168, 204, 197}: "Saab AB (publ)",
- [3]byte{168, 206, 144}: "CVC",
- [3]byte{168, 208, 227}: "Systech Electronics Ltd.",
- [3]byte{168, 208, 229}: "Juniper Networks",
- [3]byte{168, 210, 54}: "Lightware Visual Engineering",
- [3]byte{168, 211, 200}: "Topcon Electronics GmbH & Co. KG",
- [3]byte{168, 211, 247}: "Arcadyan Technology Corporation",
- [3]byte{168, 212, 9}: "USA 111 Inc",
- [3]byte{168, 213, 121}: "Beijing Chushang Science and Technology Co.,Ltd",
- [3]byte{168, 216, 40}: "Ascensia Diabetes Care",
- [3]byte{168, 216, 138}: "Wyconn",
- [3]byte{168, 224, 24}: "Nokia Corporation",
- [3]byte{168, 227, 238}: "Sony Interactive Entertainment Inc.",
- [3]byte{168, 229, 57}: "Moimstone Co.,Ltd",
- [3]byte{168, 231, 5}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{168, 232, 36}: "INIM ELECTRONICS S.R.L.",
- [3]byte{168, 238, 198}: "Muuselabs NV/SA",
- [3]byte{168, 239, 38}: "Tritonwave",
- [3]byte{168, 240, 56}: "SHEN ZHEN SHI JIN HUA TAI ELECTRONICS CO.,LTD",
- [3]byte{168, 242, 116}: "Samsung Electronics Co.,Ltd",
- [3]byte{168, 244, 112}: "Fujian Newland Communication Science Technologies Co.,Ltd.",
- [3]byte{168, 247, 224}: "PLANET Technology Corporation",
- [3]byte{168, 249, 75}: "Eltex Enterprise Ltd.",
- [3]byte{168, 250, 216}: "Apple, Inc.",
- [3]byte{168, 251, 112}: "WiseSec L.t.d",
- [3]byte{168, 252, 183}: "Consolidated Resource Imaging",
- [3]byte{170, 0, 0}: "DIGITAL EQUIPMENT CORPORATION",
- [3]byte{170, 0, 1}: "DIGITAL EQUIPMENT CORPORATION",
- [3]byte{170, 0, 2}: "DIGITAL EQUIPMENT CORPORATION",
- [3]byte{170, 0, 3}: "DIGITAL EQUIPMENT CORPORATION",
- [3]byte{170, 0, 4}: "DIGITAL EQUIPMENT CORPORATION",
- [3]byte{172, 1, 66}: "Uriel Technologies SIA",
- [3]byte{172, 2, 202}: "HI Solutions, Inc.",
- [3]byte{172, 2, 207}: "RW Tecnologia Industria e Comercio Ltda",
- [3]byte{172, 2, 239}: "Comsis",
- [3]byte{172, 4, 11}: "Peloton Interactive, Inc",
- [3]byte{172, 4, 129}: "Jiangsu Huaxing Electronics Co., Ltd.",
- [3]byte{172, 6, 19}: "Senselogix Ltd",
- [3]byte{172, 6, 199}: "ServerNet S.r.l.",
- [3]byte{172, 10, 97}: "Labor S.r.L.",
- [3]byte{172, 13, 27}: "LG Electronics (Mobile Communications)",
- [3]byte{172, 13, 254}: "Ekon GmbH - myGEKKO",
- [3]byte{172, 17, 211}: "Suzhou HOTEK Video Technology Co. Ltd",
- [3]byte{172, 20, 97}: "ATAW Co., Ltd.",
- [3]byte{172, 20, 210}: "wi-daq, inc.",
- [3]byte{172, 22, 45}: "Hewlett Packard",
- [3]byte{172, 23, 2}: "Fibar Group sp. z o.o.",
- [3]byte{172, 24, 38}: "Seiko Epson Corporation",
- [3]byte{172, 25, 159}: "SUNGROW POWER SUPPLY CO.,LTD.",
- [3]byte{172, 29, 223}: "IEEE Registration Authority",
- [3]byte{172, 31, 107}: "Super Micro Computer, Inc.",
- [3]byte{172, 31, 116}: "Apple, Inc.",
- [3]byte{172, 31, 215}: "Real Vision Technology Co.,Ltd.",
- [3]byte{172, 32, 46}: "Hitron Technologies. Inc",
- [3]byte{172, 32, 62}: "Wuhan Tianyu Information Industry Co., Ltd.",
- [3]byte{172, 32, 170}: "DMATEK Co., Ltd.",
- [3]byte{172, 34, 5}: "Compal Broadband Networks, Inc.",
- [3]byte{172, 34, 11}: "ASUSTek COMPUTER INC.",
- [3]byte{172, 35, 63}: "Shenzhen Minew Technologies Co., Ltd.",
- [3]byte{172, 41, 58}: "Apple, Inc.",
- [3]byte{172, 42, 12}: "CSR ZHUZHOU INSTITUTE CO.,LTD.",
- [3]byte{172, 43, 110}: "Intel Corporate",
- [3]byte{172, 45, 163}: "TXTR GmbH",
- [3]byte{172, 47, 168}: "Humannix Co.,Ltd.",
- [3]byte{172, 49, 157}: "Shenzhen TG-NET Botone Technology Co.,Ltd.",
- [3]byte{172, 52, 203}: "Shanhai GBCOM Communication Technology Co. Ltd",
- [3]byte{172, 54, 19}: "Samsung Electronics Co.,Ltd",
- [3]byte{172, 55, 67}: "HTC Corporation",
- [3]byte{172, 56, 112}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{172, 58, 122}: "Roku, Inc.",
- [3]byte{172, 60, 11}: "Apple, Inc.",
- [3]byte{172, 60, 180}: "Nilan A/S",
- [3]byte{172, 61, 5}: "Instorescreen Aisa",
- [3]byte{172, 61, 117}: "HANGZHOU ZHIWAY TECHNOLOGIES CO.,LTD.",
- [3]byte{172, 63, 164}: "TAIYO YUDEN CO.,LTD",
- [3]byte{172, 64, 234}: "C&T Solution Inc.",
- [3]byte{172, 65, 34}: "Eclipse Electronic Systems Inc.",
- [3]byte{172, 68, 242}: "YAMAHA CORPORATION",
- [3]byte{172, 71, 35}: "Genelec",
- [3]byte{172, 72, 45}: "Ralinwi Nanjing Electronic Technology Co., Ltd.",
- [3]byte{172, 74, 254}: "Hisense Broadband Multimedia Technology Co.,Ltd.",
- [3]byte{172, 75, 200}: "Juniper Networks",
- [3]byte{172, 78, 46}: "Shenzhen JingHanDa Electronics Co.Ltd",
- [3]byte{172, 78, 145}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{172, 79, 252}: "SVS-VISTEK GmbH",
- [3]byte{172, 80, 54}: "Pi-Coral Inc",
- [3]byte{172, 81, 44}: "Infinix mobility limited",
- [3]byte{172, 81, 53}: "MPI TECH",
- [3]byte{172, 81, 238}: "Cambridge Communication Systems Ltd",
- [3]byte{172, 84, 236}: "IEEE P1823 Standards Working Group",
- [3]byte{172, 86, 44}: "LAVA INTERNATIONAL(H.K) LIMITED",
- [3]byte{172, 88, 59}: "Human Assembler, Inc.",
- [3]byte{172, 88, 123}: "JCT Healthcare",
- [3]byte{172, 90, 20}: "Samsung Electronics Co.,Ltd",
- [3]byte{172, 93, 16}: "Pace Americas",
- [3]byte{172, 94, 140}: "Utillink",
- [3]byte{172, 95, 62}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{172, 96, 182}: "Ericsson AB",
- [3]byte{172, 97, 35}: "Drivven, Inc.",
- [3]byte{172, 97, 117}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{172, 97, 234}: "Apple, Inc.",
- [3]byte{172, 98, 13}: "Jabil Circuit(Wuxi) Co.,Ltd",
- [3]byte{172, 99, 190}: "Amazon Technologies Inc.",
- [3]byte{172, 100, 23}: "Siemens AG - Industrial Automation - EWA",
- [3]byte{172, 100, 98}: "zte corporation",
- [3]byte{172, 100, 221}: "IEEE Registration Authority",
- [3]byte{172, 103, 6}: "Ruckus Wireless",
- [3]byte{172, 103, 111}: "Electrocompaniet A.S.",
- [3]byte{172, 107, 15}: "CADENCE DESIGN SYSTEMS INC",
- [3]byte{172, 107, 172}: "Jenny Science AG",
- [3]byte{172, 110, 26}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{172, 111, 79}: "Enspert Inc",
- [3]byte{172, 111, 187}: "TATUNG Technology Inc.",
- [3]byte{172, 111, 217}: "Valueplus Inc.",
- [3]byte{172, 114, 54}: "Lexking Technology Co., Ltd.",
- [3]byte{172, 114, 137}: "Intel Corporate",
- [3]byte{172, 116, 9}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{172, 122, 66}: "iConnectivity",
- [3]byte{172, 122, 77}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{172, 123, 161}: "Intel Corporate",
- [3]byte{172, 126, 138}: "Cisco Systems, Inc",
- [3]byte{172, 127, 62}: "Apple, Inc.",
- [3]byte{172, 128, 214}: "Hexatronic AB",
- [3]byte{172, 129, 18}: "Gemtek Technology Co., Ltd.",
- [3]byte{172, 129, 243}: "Nokia Corporation",
- [3]byte{172, 131, 23}: "Shenzhen Furtunetel Communication Co., Ltd",
- [3]byte{172, 131, 240}: "ImmediaTV Corporation",
- [3]byte{172, 131, 243}: "AMPAK Technology, Inc.",
- [3]byte{172, 132, 198}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{172, 132, 201}: "Sagemcom Broadband SAS",
- [3]byte{172, 133, 61}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{172, 134, 116}: "Open Mesh, Inc.",
- [3]byte{172, 134, 126}: "Create New Technology (HK) Limited Company",
- [3]byte{172, 135, 163}: "Apple, Inc.",
- [3]byte{172, 137, 149}: "AzureWave Technology Inc.",
- [3]byte{172, 138, 205}: "ROGER D.Wensker, G.Wensker sp.j.",
- [3]byte{172, 141, 20}: "Smartrove Inc",
- [3]byte{172, 147, 47}: "Nokia Corporation",
- [3]byte{172, 148, 3}: "Envision Peripherals Inc",
- [3]byte{172, 154, 34}: "NXP Semiconductors",
- [3]byte{172, 154, 150}: "Lantiq Deutschland GmbH",
- [3]byte{172, 155, 10}: "Sony Corporation",
- [3]byte{172, 155, 132}: "Smak Tecnologia e Automacao",
- [3]byte{172, 156, 228}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{172, 158, 23}: "ASUSTek COMPUTER INC.",
- [3]byte{172, 160, 22}: "Cisco Systems, Inc",
- [3]byte{172, 162, 19}: "Shenzhen Bilian electronic CO.,LTD",
- [3]byte{172, 162, 44}: "Baycity Technologies Ltd",
- [3]byte{172, 163, 30}: "Aruba Networks",
- [3]byte{172, 164, 48}: "Peerless AV",
- [3]byte{172, 166, 103}: "Electronic Systems Protection, Inc.",
- [3]byte{172, 169, 25}: "TrekStor GmbH",
- [3]byte{172, 169, 160}: "Audioengine, Ltd.",
- [3]byte{172, 171, 46}: "Beijing LasNubes Technology Co., Ltd.",
- [3]byte{172, 171, 141}: "Lyngso Marine A/S",
- [3]byte{172, 171, 191}: "AthenTek Inc.",
- [3]byte{172, 175, 185}: "Samsung Electronics Co.,Ltd",
- [3]byte{172, 179, 19}: "ARRIS Group, Inc.",
- [3]byte{172, 181, 125}: "Liteon Technology Corporation",
- [3]byte{172, 183, 79}: "METEL s.r.o.",
- [3]byte{172, 184, 89}: "Uniband Electronic Corp,",
- [3]byte{172, 188, 50}: "Apple, Inc.",
- [3]byte{172, 189, 11}: "IMAC CO.,LTD",
- [3]byte{172, 190, 117}: "Ufine Technologies Co.,Ltd.",
- [3]byte{172, 190, 182}: "Visualedge Technology Co., Ltd.",
- [3]byte{172, 193, 238}: "Xiaomi Communications Co Ltd",
- [3]byte{172, 194, 236}: "CLT INT'L IND. CORP.",
- [3]byte{172, 195, 58}: "Samsung Electronics Co.,Ltd",
- [3]byte{172, 197, 27}: "Zhuhai Pantum Electronics Co., Ltd.",
- [3]byte{172, 197, 149}: "Graphite Systems",
- [3]byte{172, 198, 98}: "MitraStar Technology Corp.",
- [3]byte{172, 198, 152}: "Kohzu Precision Co., Ltd.",
- [3]byte{172, 199, 63}: "VITSMO CO., LTD.",
- [3]byte{172, 201, 53}: "Ness Corporation",
- [3]byte{172, 202, 84}: "Telldus Technologies AB",
- [3]byte{172, 202, 142}: "ODA Technologies",
- [3]byte{172, 202, 171}: "Virtual Electric Inc",
- [3]byte{172, 202, 186}: "Midokura Co., Ltd.",
- [3]byte{172, 203, 9}: "Hefcom Metering (Pty) Ltd",
- [3]byte{172, 204, 142}: "Axis Communications AB",
- [3]byte{172, 206, 143}: "HWA YAO TECHNOLOGIES CO., LTD",
- [3]byte{172, 207, 35}: "Hi-flying electronics technology Co.,Ltd",
- [3]byte{172, 207, 92}: "Apple, Inc.",
- [3]byte{172, 207, 133}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{172, 208, 116}: "Espressif Inc.",
- [3]byte{172, 209, 128}: "Crexendo Business Solutions, Inc.",
- [3]byte{172, 209, 184}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{172, 211, 100}: "ABB SPA, ABB SACE DIV.",
- [3]byte{172, 214, 87}: "Shaanxi GuoLian Digital TV Technology Co.,Ltd.",
- [3]byte{172, 217, 214}: "tci GmbH",
- [3]byte{172, 219, 218}: "Shenzhen Geniatech Inc, Ltd",
- [3]byte{172, 220, 229}: "Procter & Gamble Company",
- [3]byte{172, 222, 72}: "Private",
- [3]byte{172, 224, 16}: "Liteon Technology Corporation",
- [3]byte{172, 224, 105}: "ISAAC Instruments",
- [3]byte{172, 226, 21}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{172, 226, 211}: "Hewlett Packard",
- [3]byte{172, 227, 72}: "MadgeTech, Inc",
- [3]byte{172, 228, 46}: "SK hynix",
- [3]byte{172, 228, 181}: "Apple, Inc.",
- [3]byte{172, 229, 240}: "Doppler Labs",
- [3]byte{172, 230, 75}: "Shenzhen Baojia Battery Technology Co., Ltd.",
- [3]byte{172, 231, 123}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{172, 232, 123}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{172, 232, 126}: "Bytemark Computer Consulting Ltd",
- [3]byte{172, 233, 127}: "IoT Tech Limited",
- [3]byte{172, 233, 170}: "Hay Systems Ltd",
- [3]byte{172, 234, 106}: "GENIX INFOCOMM CO., LTD.",
- [3]byte{172, 236, 128}: "ARRIS Group, Inc.",
- [3]byte{172, 237, 92}: "Intel Corporate",
- [3]byte{172, 238, 59}: "6harmonics Inc",
- [3]byte{172, 238, 158}: "Samsung Electronics Co.,Ltd",
- [3]byte{172, 240, 178}: "Becker Electronics Taiwan Ltd.",
- [3]byte{172, 241, 223}: "D-Link International",
- [3]byte{172, 242, 197}: "Cisco Systems, Inc",
- [3]byte{172, 247, 243}: "Xiaomi Communications Co Ltd",
- [3]byte{172, 248, 92}: "Private",
- [3]byte{172, 249, 126}: "ELESYS INC.",
- [3]byte{172, 253, 147}: "Weifang GoerTek Technology Co.,Ltd.",
- [3]byte{172, 253, 206}: "Intel Corporate",
- [3]byte{172, 253, 236}: "Apple, Inc.",
- [3]byte{176, 0, 180}: "Cisco Systems, Inc",
- [3]byte{176, 5, 148}: "Liteon Technology Corporation",
- [3]byte{176, 8, 191}: "Vital Connect, Inc.",
- [3]byte{176, 9, 211}: "Avizia",
- [3]byte{176, 9, 218}: "Ring Solutions",
- [3]byte{176, 16, 65}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{176, 18, 3}: "Dynamics Hong Kong Limited",
- [3]byte{176, 18, 102}: "Futaba-Kikaku",
- [3]byte{176, 20, 8}: "LIGHTSPEED INTERNATIONAL CO.",
- [3]byte{176, 23, 67}: "EDISON GLOBAL CIRCUITS LLC",
- [3]byte{176, 25, 198}: "Apple, Inc.",
- [3]byte{176, 27, 124}: "Ontrol A.S.",
- [3]byte{176, 27, 210}: "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited",
- [3]byte{176, 28, 145}: "Elim Co",
- [3]byte{176, 31, 41}: "Helvetia INC.",
- [3]byte{176, 31, 129}: "IEEE Registration Authority",
- [3]byte{176, 36, 243}: "Progeny Systems",
- [3]byte{176, 37, 170}: "Private",
- [3]byte{176, 38, 40}: "Broadcom Limited",
- [3]byte{176, 52, 149}: "Apple, Inc.",
- [3]byte{176, 53, 11}: "MOBIWIRE MOBILES (NINGBO) CO.,LTD",
- [3]byte{176, 53, 141}: "Nokia Corporation",
- [3]byte{176, 53, 159}: "Intel Corporate",
- [3]byte{176, 56, 41}: "Siliconware Precision Industries Co., Ltd.",
- [3]byte{176, 56, 80}: "Nanjing CAS-ZDC IOT SYSTEM CO.,LTD",
- [3]byte{176, 57, 86}: "NETGEAR",
- [3]byte{176, 61, 150}: "Vision Valley FZ LLC",
- [3]byte{176, 62, 176}: "MICRODIA Ltd.",
- [3]byte{176, 64, 137}: "Senient Systems LTD",
- [3]byte{176, 65, 29}: "ITTIM Technologies",
- [3]byte{176, 67, 93}: "NuLEDs, Inc.",
- [3]byte{176, 69, 21}: "mira fitness,LLC.",
- [3]byte{176, 69, 25}: "TCT mobile ltd",
- [3]byte{176, 69, 69}: "YACOUB Automation GmbH",
- [3]byte{176, 70, 252}: "MitraStar Technology Corp.",
- [3]byte{176, 71, 191}: "Samsung Electronics Co.,Ltd",
- [3]byte{176, 72, 26}: "Apple, Inc.",
- [3]byte{176, 72, 122}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{176, 73, 95}: "OMRON HEALTHCARE Co., Ltd.",
- [3]byte{176, 75, 191}: "PT HAN SUNG ELECTORONICS INDONESIA",
- [3]byte{176, 76, 5}: "Fresenius Medical Care Deutschland GmbH",
- [3]byte{176, 78, 38}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{176, 80, 188}: "SHENZHEN BASICOM ELECTRONIC CO.,LTD.",
- [3]byte{176, 81, 142}: "Holl technology CO.Ltd.",
- [3]byte{176, 82, 22}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{176, 85, 8}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{176, 87, 6}: "Vallox Oy",
- [3]byte{176, 88, 196}: "Broadcast Microwave Services, Inc",
- [3]byte{176, 89, 71}: "Shenzhen Qihu Intelligent Technology Company Limited",
- [3]byte{176, 90, 218}: "Hewlett Packard",
- [3]byte{176, 91, 31}: "THERMO FISHER SCIENTIFIC S.P.A.",
- [3]byte{176, 91, 103}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{176, 92, 229}: "Nokia Corporation",
- [3]byte{176, 97, 199}: "Ericsson-LG Enterprise",
- [3]byte{176, 101, 99}: "Shanghai Railway Communication Factory",
- [3]byte{176, 101, 189}: "Apple, Inc.",
- [3]byte{176, 104, 182}: "Hangzhou OYE Technology Co. Ltd",
- [3]byte{176, 105, 113}: "DEI Sales, Inc.",
- [3]byte{176, 108, 191}: "3ality Digital Systems GmbH",
- [3]byte{176, 110, 191}: "ASUSTek COMPUTER INC.",
- [3]byte{176, 112, 45}: "Apple, Inc.",
- [3]byte{176, 114, 191}: "Murata Manufacturing Co., Ltd.",
- [3]byte{176, 117, 12}: "QA Cafe",
- [3]byte{176, 117, 77}: "Nokia",
- [3]byte{176, 117, 213}: "zte corporation",
- [3]byte{176, 119, 172}: "ARRIS Group, Inc.",
- [3]byte{176, 120, 112}: "Wi-NEXT, Inc.",
- [3]byte{176, 120, 240}: "Beijing HuaqinWorld Technology Co.,Ltd.",
- [3]byte{176, 121, 8}: "Cummings Engineering",
- [3]byte{176, 121, 60}: "Revolv Inc",
- [3]byte{176, 121, 148}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{176, 125, 71}: "Cisco Systems, Inc",
- [3]byte{176, 125, 98}: "Dipl.-Ing. H. Horstmann GmbH",
- [3]byte{176, 126, 112}: "Zadara Storage Ltd.",
- [3]byte{176, 127, 185}: "NETGEAR",
- [3]byte{176, 128, 140}: "Laser Light Engines",
- [3]byte{176, 129, 216}: "I-sys Corp",
- [3]byte{176, 131, 254}: "Dell Inc.",
- [3]byte{176, 134, 158}: "Chloride S.r.L",
- [3]byte{176, 136, 7}: "Strata Worldwide",
- [3]byte{176, 137, 0}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{176, 137, 145}: "LGE",
- [3]byte{176, 137, 194}: "Zyptonite",
- [3]byte{176, 142, 26}: "URadio Systems Co., Ltd",
- [3]byte{176, 144, 116}: "Fulan Electronics Limited",
- [3]byte{176, 144, 212}: "Shenzhen Hoin Internet Technology Co., Ltd",
- [3]byte{176, 145, 34}: "Texas Instruments",
- [3]byte{176, 145, 52}: "Taleo",
- [3]byte{176, 145, 55}: "ISis ImageStream Internet Solutions, Inc",
- [3]byte{176, 147, 91}: "ARRIS Group, Inc.",
- [3]byte{176, 149, 142}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{176, 150, 108}: "Lanbowan Technology Ltd.",
- [3]byte{176, 151, 58}: "E-Fuel Corporation",
- [3]byte{176, 152, 43}: "Sagemcom Broadband SAS",
- [3]byte{176, 152, 159}: "LG CNS",
- [3]byte{176, 153, 40}: "FUJITSU LIMITED",
- [3]byte{176, 154, 226}: "STEMMER IMAGING GmbH",
- [3]byte{176, 155, 212}: "GNH Software India Private Limited",
- [3]byte{176, 159, 186}: "Apple, Inc.",
- [3]byte{176, 161, 10}: "Pivotal Systems Corporation",
- [3]byte{176, 162, 231}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{176, 163, 126}: "Qingdao Haier Telecom Co.,Ltd",
- [3]byte{176, 167, 42}: "Ensemble Designs, Inc.",
- [3]byte{176, 167, 55}: "Roku, Inc.",
- [3]byte{176, 168, 110}: "Juniper Networks",
- [3]byte{176, 170, 54}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{176, 170, 119}: "Cisco Systems, Inc",
- [3]byte{176, 172, 250}: "FUJITSU LIMITED",
- [3]byte{176, 173, 170}: "Avaya Inc",
- [3]byte{176, 178, 143}: "Sagemcom Broadband SAS",
- [3]byte{176, 178, 220}: "Zyxel Communications Corporation",
- [3]byte{176, 179, 43}: "Slican Sp. z o.o.",
- [3]byte{176, 180, 72}: "Texas Instruments",
- [3]byte{176, 184, 213}: "Nanjing Nengrui Auto Equipment CO.,Ltd",
- [3]byte{176, 185, 138}: "NETGEAR",
- [3]byte{176, 189, 109}: "Echostreams Innovative Solutions",
- [3]byte{176, 189, 161}: "ZAKLAD ELEKTRONICZNY SIMS",
- [3]byte{176, 191, 153}: "WIZITDONGDO",
- [3]byte{176, 192, 144}: "Chicony Electronics Co., Ltd.",
- [3]byte{176, 193, 40}: "Adler ELREHA GmbH",
- [3]byte{176, 193, 158}: "zte corporation",
- [3]byte{176, 194, 5}: "BIONIME",
- [3]byte{176, 194, 135}: "Technicolor CH USA Inc.",
- [3]byte{176, 196, 108}: "Senseit",
- [3]byte{176, 196, 231}: "Samsung Electronics Co.,Ltd",
- [3]byte{176, 197, 84}: "D-Link International",
- [3]byte{176, 197, 89}: "Samsung Electronics Co.,Ltd",
- [3]byte{176, 197, 202}: "IEEE Registration Authority",
- [3]byte{176, 198, 154}: "Juniper Networks",
- [3]byte{176, 199, 69}: "BUFFALO.INC",
- [3]byte{176, 200, 63}: "Jiangsu Cynray IOT Co., Ltd.",
- [3]byte{176, 200, 173}: "People Power Company",
- [3]byte{176, 201, 91}: "Beijing Symtech CO.,LTD",
- [3]byte{176, 202, 104}: "Apple, Inc.",
- [3]byte{176, 206, 24}: "Zhejiang shenghui lighting co.,Ltd",
- [3]byte{176, 207, 77}: "MI-Zone Technology Ireland",
- [3]byte{176, 208, 156}: "Samsung Electronics Co.,Ltd",
- [3]byte{176, 210, 245}: "Vello Systems, Inc.",
- [3]byte{176, 213, 157}: "Shenzhen Zowee Technology Co., Ltd",
- [3]byte{176, 213, 204}: "Texas Instruments",
- [3]byte{176, 215, 197}: "Logipix Ltd",
- [3]byte{176, 215, 204}: "Tridonic GmbH & Co KG",
- [3]byte{176, 218, 0}: "CERA ELECTRONIQUE",
- [3]byte{176, 218, 249}: "ARRIS Group, Inc.",
- [3]byte{176, 223, 58}: "Samsung Electronics Co.,Ltd",
- [3]byte{176, 223, 193}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{176, 224, 60}: "TCT mobile ltd",
- [3]byte{176, 225, 126}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{176, 226, 53}: "Xiaomi Communications Co Ltd",
- [3]byte{176, 226, 229}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{176, 227, 157}: "CAT SYSTEM CO.,LTD.",
- [3]byte{176, 229, 14}: "NRG SYSTEMS INC",
- [3]byte{176, 229, 237}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{176, 231, 84}: "2Wire Inc",
- [3]byte{176, 232, 146}: "Seiko Epson Corporation",
- [3]byte{176, 233, 126}: "Advanced Micro Peripherals",
- [3]byte{176, 234, 188}: "ASKEY COMPUTER CORP",
- [3]byte{176, 236, 113}: "Samsung Electronics Co.,Ltd",
- [3]byte{176, 236, 143}: "GMX SAS",
- [3]byte{176, 236, 225}: "Private",
- [3]byte{176, 238, 69}: "AzureWave Technology Inc.",
- [3]byte{176, 238, 123}: "Roku, Inc",
- [3]byte{176, 241, 163}: "Fengfan (BeiJing) Technology Co., Ltd.",
- [3]byte{176, 241, 188}: "Dhemax Ingenieros Ltda",
- [3]byte{176, 241, 236}: "AMPAK Technology, Inc.",
- [3]byte{176, 248, 147}: "Shanghai MXCHIP Information Technology Co., Ltd.",
- [3]byte{176, 249, 99}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{176, 250, 235}: "Cisco Systems, Inc",
- [3]byte{176, 252, 54}: "CyberTAN Technology Inc.",
- [3]byte{176, 254, 189}: "Private",
- [3]byte{180, 0, 22}: "INGENICO TERMINALS SAS",
- [3]byte{180, 0, 156}: "CableWorld Ltd.",
- [3]byte{180, 1, 66}: "GCI Science & Technology Co.,LTD",
- [3]byte{180, 4, 24}: "Smartchip Integrated Inc.",
- [3]byte{180, 5, 102}: "SP Best Corporation Co., LTD.",
- [3]byte{180, 7, 249}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{180, 8, 50}: "TC Communications",
- [3]byte{180, 10, 198}: "DEXON Systems Ltd.",
- [3]byte{180, 11, 68}: "Smartisan Technology Co., Ltd.",
- [3]byte{180, 11, 122}: "Brusa Elektronik AG",
- [3]byte{180, 12, 37}: "Palo Alto Networks",
- [3]byte{180, 14, 150}: "HERAN",
- [3]byte{180, 14, 220}: "LG-Ericsson Co.,Ltd.",
- [3]byte{180, 15, 59}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{180, 20, 137}: "Cisco Systems, Inc",
- [3]byte{180, 21, 19}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{180, 23, 128}: "DTI Group Ltd",
- [3]byte{180, 24, 209}: "Apple, Inc.",
- [3]byte{180, 29, 239}: "Internet Laboratories, Inc.",
- [3]byte{180, 33, 29}: "Beijing GuangXin Technology Co., Ltd",
- [3]byte{180, 33, 138}: "Dog Hunter LLC",
- [3]byte{180, 36, 231}: "Codetek Technology Co.,Ltd",
- [3]byte{180, 40, 241}: "E-Prime Co., Ltd.",
- [3]byte{180, 41, 61}: "Shenzhen Urovo Technology Co.,Ltd.",
- [3]byte{180, 42, 14}: "Technicolor CH USA Inc.",
- [3]byte{180, 42, 57}: "ORBIT MERRET, spol. s r. o.",
- [3]byte{180, 44, 146}: "Zhejiang Weirong Electronic Co., Ltd",
- [3]byte{180, 44, 190}: "Direct Payment Solutions Limited",
- [3]byte{180, 45, 86}: "Extreme Networks, Inc.",
- [3]byte{180, 48, 82}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{180, 48, 192}: "York Instruments Ltd",
- [3]byte{180, 49, 184}: "Aviwest",
- [3]byte{180, 52, 108}: "MATSUNICHI DIGITAL TECHNOLOGY (HONG KONG) LIMITED",
- [3]byte{180, 53, 100}: "Fujian Tian Cheng Electron Science & Technical Development Co.,Ltd.",
- [3]byte{180, 53, 247}: "Zhejiang Pearmain Electronics Co.ltd.",
- [3]byte{180, 54, 169}: "Fibocom Wireless Inc.",
- [3]byte{180, 54, 227}: "KBVISION GROUP",
- [3]byte{180, 55, 65}: "Consert, Inc.",
- [3]byte{180, 55, 209}: "IEEE Registration Authority",
- [3]byte{180, 57, 52}: "Pen Generations, Inc.",
- [3]byte{180, 57, 214}: "ProCurve Networking by HP",
- [3]byte{180, 58, 40}: "Samsung Electronics Co.,Ltd",
- [3]byte{180, 61, 178}: "Degreane Horizon",
- [3]byte{180, 62, 59}: "Viableware, Inc",
- [3]byte{180, 65, 122}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{180, 67, 13}: "Broadlink Pty Ltd",
- [3]byte{180, 71, 94}: "Avaya Inc",
- [3]byte{180, 75, 210}: "Apple, Inc.",
- [3]byte{180, 76, 194}: "NR ELECTRIC CO., LTD",
- [3]byte{180, 79, 150}: "Zhejiang Xinzailing Technology co., ltd",
- [3]byte{180, 81, 249}: "NB Software",
- [3]byte{180, 82, 83}: "Seagate Technology",
- [3]byte{180, 82, 125}: "Sony Mobile Communications AB",
- [3]byte{180, 82, 126}: "Sony Mobile Communications AB",
- [3]byte{180, 85, 112}: "Borea",
- [3]byte{180, 86, 185}: "Teraspek Technologies Co.,Ltd",
- [3]byte{180, 88, 97}: "CRemote, LLC",
- [3]byte{180, 92, 164}: "Thing-talk Wireless Communication Technologies Corporation Limited",
- [3]byte{180, 93, 80}: "Aruba Networks",
- [3]byte{180, 97, 255}: "Lumigon A/S",
- [3]byte{180, 98, 56}: "Exablox",
- [3]byte{180, 98, 147}: "Samsung Electronics Co.,Ltd",
- [3]byte{180, 98, 173}: "Elysia Germany GmbH",
- [3]byte{180, 102, 152}: "Zealabs srl",
- [3]byte{180, 103, 233}: "Qingdao GoerTek Technology Co., Ltd.",
- [3]byte{180, 109, 53}: "Dalian Seasky Automation Co;Ltd",
- [3]byte{180, 109, 131}: "Intel Corporate",
- [3]byte{180, 115, 86}: "Hangzhou Treebear Networking Co., Ltd.",
- [3]byte{180, 116, 67}: "Samsung Electronics Co.,Ltd",
- [3]byte{180, 116, 71}: "CoreOS",
- [3]byte{180, 116, 159}: "ASKEY COMPUTER CORP",
- [3]byte{180, 117, 14}: "Belkin International Inc.",
- [3]byte{180, 121, 167}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{180, 124, 41}: "Shenzhen Guzidi Technology Co.,Ltd",
- [3]byte{180, 124, 156}: "Amazon Technologies Inc.",
- [3]byte{180, 127, 94}: "Foresight Manufacture (S) Pte Ltd",
- [3]byte{180, 130, 85}: "Research Products Corporation",
- [3]byte{180, 130, 123}: "AKG Acoustics GmbH",
- [3]byte{180, 130, 197}: "Relay2, Inc.",
- [3]byte{180, 130, 254}: "ASKEY COMPUTER CORP",
- [3]byte{180, 133, 71}: "Amptown System Company GmbH",
- [3]byte{180, 137, 16}: "Coster T.E. S.P.A.",
- [3]byte{180, 139, 25}: "Apple, Inc.",
- [3]byte{180, 148, 78}: "WeTelecom Co., Ltd.",
- [3]byte{180, 150, 145}: "Intel Corporate",
- [3]byte{180, 152, 66}: "zte corporation",
- [3]byte{180, 153, 76}: "Texas Instruments",
- [3]byte{180, 153, 186}: "Hewlett Packard",
- [3]byte{180, 156, 223}: "Apple, Inc.",
- [3]byte{180, 157, 11}: "BQ",
- [3]byte{180, 157, 180}: "Axion Technologies Inc.",
- [3]byte{180, 158, 172}: "Imagik Int'l Corp",
- [3]byte{180, 158, 230}: "SHENZHEN TECHNOLOGY CO LTD",
- [3]byte{180, 163, 130}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
- [3]byte{180, 164, 181}: "Zen Eye Co.,Ltd",
- [3]byte{180, 164, 227}: "Cisco Systems, Inc",
- [3]byte{180, 165, 169}: "MODI GmbH",
- [3]byte{180, 165, 239}: "Sercomm Corporation.",
- [3]byte{180, 168, 40}: "Shenzhen Concox Information Technology Co., Ltd",
- [3]byte{180, 168, 43}: "Histar Digital Electronics Co., Ltd.",
- [3]byte{180, 169, 90}: "Avaya Inc",
- [3]byte{180, 169, 132}: "Symantec Corporation",
- [3]byte{180, 169, 254}: "GHIA Technology (Shenzhen) LTD",
- [3]byte{180, 170, 77}: "Ensequence, Inc.",
- [3]byte{180, 171, 44}: "MtM Technology Corporation",
- [3]byte{180, 174, 43}: "Microsoft",
- [3]byte{180, 174, 111}: "Circle Reliance, Inc DBA Cranberry Networks",
- [3]byte{180, 176, 23}: "Avaya Inc",
- [3]byte{180, 177, 90}: "Siemens AG Energy Management Division",
- [3]byte{180, 178, 101}: "DAEHO I&T",
- [3]byte{180, 179, 98}: "zte corporation",
- [3]byte{180, 179, 132}: "ShenZhen Figigantic Electronic Co.,Ltd",
- [3]byte{180, 181, 47}: "Hewlett Packard",
- [3]byte{180, 181, 66}: "Hubbell Power Systems, Inc.",
- [3]byte{180, 181, 175}: "Minsung Electronics",
- [3]byte{180, 182, 118}: "Intel Corporate",
- [3]byte{180, 184, 89}: "Texa Spa",
- [3]byte{180, 184, 141}: "Thuh Company",
- [3]byte{180, 191, 246}: "Samsung Electronics Co.,Ltd",
- [3]byte{180, 193, 112}: "Yi chip Microelectronics (Hangzhou) Co., Ltd",
- [3]byte{180, 196, 78}: "VXL eTech Pvt Ltd",
- [3]byte{180, 198, 248}: "Axilspot Communication",
- [3]byte{180, 199, 153}: "Extreme Networks, Inc.",
- [3]byte{180, 200, 16}: "UMPI Elettronica",
- [3]byte{180, 204, 233}: "PROSYST",
- [3]byte{180, 206, 246}: "HTC Corporation",
- [3]byte{180, 207, 219}: "Shenzhen Jiuzhou Electric Co.,LTD",
- [3]byte{180, 209, 53}: "Cloudistics",
- [3]byte{180, 213, 189}: "Intel Corporate",
- [3]byte{180, 214, 78}: "Caldero Limited",
- [3]byte{180, 216, 169}: "BetterBots",
- [3]byte{180, 216, 222}: "iota Computing, Inc.",
- [3]byte{180, 221, 21}: "ControlThings Oy Ab",
- [3]byte{180, 223, 59}: "Chromlech",
- [3]byte{180, 223, 250}: "Litemax Electronics Inc.",
- [3]byte{180, 224, 205}: "Fusion-io, Inc",
- [3]byte{180, 225, 15}: "Dell Inc.",
- [3]byte{180, 225, 196}: "Microsoft Mobile Oy",
- [3]byte{180, 225, 235}: "Private",
- [3]byte{180, 230, 42}: "LG Innotek",
- [3]byte{180, 231, 130}: "Vivalnk",
- [3]byte{180, 233, 176}: "Cisco Systems, Inc",
- [3]byte{180, 237, 25}: "Pie Digital, Inc.",
- [3]byte{180, 237, 84}: "Wohler Technologies",
- [3]byte{180, 238, 180}: "ASKEY COMPUTER CORP",
- [3]byte{180, 238, 212}: "Texas Instruments",
- [3]byte{180, 239, 4}: "DAIHAN Scientific Co., Ltd.",
- [3]byte{180, 239, 57}: "Samsung Electronics Co.,Ltd",
- [3]byte{180, 239, 250}: "Lemobile Information Technology (Beijing) Co., Ltd.",
- [3]byte{180, 240, 171}: "Apple, Inc.",
- [3]byte{180, 241, 218}: "LG Electronics (Mobile Communications)",
- [3]byte{180, 242, 232}: "ARRIS Group, Inc.",
- [3]byte{180, 243, 35}: "PETATEL INC.",
- [3]byte{180, 246, 28}: "Apple, Inc.",
- [3]byte{180, 248, 30}: "Kinova",
- [3]byte{180, 251, 228}: "Ubiquiti Networks Inc.",
- [3]byte{180, 252, 117}: "SEMA Electronics(HK) CO.,LTD",
- [3]byte{180, 254, 140}: "Centro Sicurezza Italia SpA",
- [3]byte{184, 0, 24}: "Htel",
- [3]byte{184, 3, 5}: "Intel Corporate",
- [3]byte{184, 4, 21}: "Bayan Audio",
- [3]byte{184, 5, 171}: "zte corporation",
- [3]byte{184, 7, 22}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{184, 8, 207}: "Intel Corporate",
- [3]byte{184, 8, 215}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{184, 9, 138}: "Apple, Inc.",
- [3]byte{184, 11, 157}: "ROPEX Industrie-Elektronik GmbH",
- [3]byte{184, 19, 233}: "Trace Live Network",
- [3]byte{184, 20, 19}: "Keen High Holding(HK) Ltd.",
- [3]byte{184, 22, 25}: "ARRIS Group, Inc.",
- [3]byte{184, 22, 219}: "CHANT SINCERE CO.,LTD",
- [3]byte{184, 23, 194}: "Apple, Inc.",
- [3]byte{184, 24, 111}: "ORIENTAL MOTOR CO., LTD.",
- [3]byte{184, 25, 153}: "Nesys",
- [3]byte{184, 29, 170}: "LG Electronics (Mobile Communications)",
- [3]byte{184, 32, 231}: "Guangzhou Horizontal Information & Network Integration Co. Ltd",
- [3]byte{184, 34, 79}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{184, 36, 16}: "Magneti Marelli Slovakia s.r.o.",
- [3]byte{184, 36, 26}: "SWEDA INFORMATICA LTDA",
- [3]byte{184, 36, 240}: "SOYO Technology Development Co., Ltd.",
- [3]byte{184, 38, 108}: "ANOV France",
- [3]byte{184, 38, 212}: "Furukawa Industrial S.A. Produtos Elétricos",
- [3]byte{184, 39, 235}: "Raspberry Pi Foundation",
- [3]byte{184, 40, 139}: "Parker Hannifin Manufacturing (UK) Ltd",
- [3]byte{184, 41, 247}: "Blaster Tech",
- [3]byte{184, 42, 114}: "Dell Inc.",
- [3]byte{184, 42, 220}: "EFR Europäische Funk-Rundsteuerung GmbH",
- [3]byte{184, 44, 160}: "Honeywell HomMed",
- [3]byte{184, 48, 168}: "Road-Track Telematics Development",
- [3]byte{184, 50, 65}: "Wuhan Tianyu Information Industry Co., Ltd.",
- [3]byte{184, 54, 216}: "Videoswitch",
- [3]byte{184, 55, 101}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{184, 56, 97}: "Cisco Systems, Inc",
- [3]byte{184, 56, 202}: "Kyokko Tsushin System CO.,LTD",
- [3]byte{184, 58, 8}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{184, 58, 123}: "Worldplay (Canada) Inc.",
- [3]byte{184, 58, 157}: "Alarm.com",
- [3]byte{184, 61, 78}: "Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch",
- [3]byte{184, 62, 89}: "Roku, Inc.",
- [3]byte{184, 65, 95}: "ASP AG",
- [3]byte{184, 67, 228}: "Vlatacom",
- [3]byte{184, 68, 217}: "Apple, Inc.",
- [3]byte{184, 71, 198}: "SanJet Technology Corp.",
- [3]byte{184, 79, 213}: "Microsoft Corporation",
- [3]byte{184, 80, 1}: "Extreme Networks, Inc.",
- [3]byte{184, 83, 172}: "Apple, Inc.",
- [3]byte{184, 85, 16}: "Zioncom Electronics (Shenzhen) Ltd.",
- [3]byte{184, 86, 189}: "ITT LLC",
- [3]byte{184, 87, 216}: "Samsung Electronics Co.,Ltd",
- [3]byte{184, 88, 16}: "NUMERA, INC.",
- [3]byte{184, 90, 115}: "Samsung Electronics Co.,Ltd",
- [3]byte{184, 90, 247}: "Ouya, Inc",
- [3]byte{184, 90, 254}: "Handaer Communication Technology (Beijing) Co., Ltd",
- [3]byte{184, 94, 123}: "Samsung Electronics Co.,Ltd",
- [3]byte{184, 96, 145}: "Onnet Technologies and Innovations LLC",
- [3]byte{184, 97, 111}: "Accton Technology Corp",
- [3]byte{184, 98, 31}: "Cisco Systems, Inc",
- [3]byte{184, 99, 77}: "Apple, Inc.",
- [3]byte{184, 99, 188}: "ROBOTIS, Co, Ltd",
- [3]byte{184, 100, 145}: "CK Telecom Ltd",
- [3]byte{184, 101, 59}: "Bolymin, Inc.",
- [3]byte{184, 105, 194}: "Sunitec Enterprise Co., Ltd.",
- [3]byte{184, 107, 35}: "Toshiba",
- [3]byte{184, 108, 232}: "Samsung Electronics Co.,Ltd",
- [3]byte{184, 112, 244}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{184, 116, 36}: "Viessmann Elektronik GmbH",
- [3]byte{184, 116, 71}: "Convergence Technologies",
- [3]byte{184, 117, 192}: "PayPal, Inc.",
- [3]byte{184, 118, 63}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{184, 119, 195}: "METER Group",
- [3]byte{184, 120, 46}: "Apple, Inc.",
- [3]byte{184, 120, 121}: "Roche Diagnostics GmbH",
- [3]byte{184, 121, 126}: "Secure Meters (UK) Limited",
- [3]byte{184, 122, 201}: "Siemens Ltd.",
- [3]byte{184, 124, 242}: "Aerohive Networks Inc.",
- [3]byte{184, 129, 152}: "Intel Corporate",
- [3]byte{184, 134, 135}: "Liteon Technology Corporation",
- [3]byte{184, 135, 30}: "Good Mind Industries Co., Ltd.",
- [3]byte{184, 135, 168}: "Step Ahead Innovations Inc.",
- [3]byte{184, 136, 227}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{184, 137, 129}: "Chengdu InnoThings Technology Co., Ltd.",
- [3]byte{184, 137, 202}: "ILJIN ELECTRIC Co., Ltd.",
- [3]byte{184, 138, 96}: "Intel Corporate",
- [3]byte{184, 141, 18}: "Apple, Inc.",
- [3]byte{184, 142, 58}: "Infinite Technologies JLT",
- [3]byte{184, 142, 198}: "Stateless Networks",
- [3]byte{184, 142, 223}: "Zencheer Communication Technology Co., Ltd.",
- [3]byte{184, 143, 20}: "Analytica GmbH",
- [3]byte{184, 146, 29}: "BG T&A",
- [3]byte{184, 148, 210}: "Retail Innovation HTT AB",
- [3]byte{184, 150, 116}: "AllDSP GmbH & Co. KG",
- [3]byte{184, 151, 90}: "BIOSTAR Microtech Int'l Corp.",
- [3]byte{184, 152, 176}: "Atlona Inc.",
- [3]byte{184, 152, 247}: "Gionee Communication Equipment Co,Ltd.ShenZhen",
- [3]byte{184, 153, 25}: "7signal Solutions, Inc",
- [3]byte{184, 153, 176}: "Cohere Technologies",
- [3]byte{184, 154, 205}: "ELITE OPTOELECTRONIC(ASIA)CO.,LTD",
- [3]byte{184, 154, 237}: "OceanServer Technology, Inc",
- [3]byte{184, 155, 201}: "SMC Networks Inc",
- [3]byte{184, 155, 228}: "ABB Power Systems Power Generation",
- [3]byte{184, 161, 117}: "Roku, Inc.",
- [3]byte{184, 163, 134}: "D-Link International",
- [3]byte{184, 163, 224}: "BenRui Technology Co.,Ltd",
- [3]byte{184, 168, 175}: "Logic S.p.A.",
- [3]byte{184, 172, 111}: "Dell Inc.",
- [3]byte{184, 173, 62}: "BLUECOM",
- [3]byte{184, 174, 110}: "Nintendo Co., Ltd.",
- [3]byte{184, 174, 237}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{184, 175, 103}: "Hewlett Packard",
- [3]byte{184, 177, 199}: "BT&COM CO.,LTD",
- [3]byte{184, 178, 235}: "Googol Technology (HK) Limited",
- [3]byte{184, 179, 220}: "DEREK (SHAOGUAN) LIMITED",
- [3]byte{184, 180, 46}: "Gionee Communication Equipment Co,Ltd.ShenZhen",
- [3]byte{184, 183, 215}: "2GIG Technologies",
- [3]byte{184, 184, 30}: "Intel Corporate",
- [3]byte{184, 185, 78}: "Shenzhen iBaby Labs, Inc.",
- [3]byte{184, 186, 104}: "Xi'an Jizhong Digital Communication Co.,Ltd",
- [3]byte{184, 186, 114}: "Cynove",
- [3]byte{184, 187, 35}: "Guangdong Nufront CSC Co., Ltd",
- [3]byte{184, 187, 109}: "ENERES Co.,Ltd.",
- [3]byte{184, 187, 175}: "Samsung Electronics Co.,Ltd",
- [3]byte{184, 188, 27}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{184, 189, 121}: "TrendPoint Systems",
- [3]byte{184, 190, 191}: "Cisco Systems, Inc",
- [3]byte{184, 191, 131}: "Intel Corporate",
- [3]byte{184, 193, 17}: "Apple, Inc.",
- [3]byte{184, 193, 162}: "Dragon Path Technologies Co., Limited",
- [3]byte{184, 195, 191}: "Henan Chengshi NetWork Technology Co.,Ltd",
- [3]byte{184, 196, 111}: "PRIMMCON INDUSTRIES INC",
- [3]byte{184, 198, 142}: "Samsung Electronics Co.,Ltd",
- [3]byte{184, 199, 22}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{184, 199, 93}: "Apple, Inc.",
- [3]byte{184, 200, 85}: "Shanghai GBCOM Communication Technology Co.,Ltd.",
- [3]byte{184, 200, 235}: "ITEL MOBILE LIMITED",
- [3]byte{184, 202, 4}: "Holtek Semiconductor Inc.",
- [3]byte{184, 202, 58}: "Dell Inc.",
- [3]byte{184, 205, 147}: "Penetek, Inc",
- [3]byte{184, 205, 167}: "Maxeler Technologies Ltd.",
- [3]byte{184, 208, 111}: "GUANGZHOU HKUST FOK YING TUNG RESEARCH INSTITUTE",
- [3]byte{184, 212, 157}: "M Seven System Ltd.",
- [3]byte{184, 213, 11}: "Sunitec Enterprise Co.,Ltd",
- [3]byte{184, 215, 175}: "Murata Manufacturing Co., Ltd.",
- [3]byte{184, 216, 18}: "IEEE Registration Authority",
- [3]byte{184, 217, 77}: "Sagemcom Broadband SAS",
- [3]byte{184, 217, 206}: "Samsung Electronics Co.,Ltd",
- [3]byte{184, 218, 241}: "Strahlenschutz- Entwicklungs- und Ausruestungsgesellschaft mbH",
- [3]byte{184, 218, 247}: "Advanced Photonics, Inc.",
- [3]byte{184, 219, 28}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{184, 220, 135}: "IAI Corporation",
- [3]byte{184, 223, 107}: "SpotCam Co., Ltd.",
- [3]byte{184, 229, 137}: "Payter BV",
- [3]byte{184, 230, 37}: "2Wire Inc",
- [3]byte{184, 231, 121}: "9Solutions Oy",
- [3]byte{184, 232, 86}: "Apple, Inc.",
- [3]byte{184, 233, 55}: "Sonos, Inc.",
- [3]byte{184, 234, 170}: "ICG NETWORKS CO.,ltd",
- [3]byte{184, 236, 163}: "Zyxel Communications Corporation",
- [3]byte{184, 238, 14}: "Sagemcom Broadband SAS",
- [3]byte{184, 238, 101}: "Liteon Technology Corporation",
- [3]byte{184, 238, 121}: "YWire Technologies, Inc.",
- [3]byte{184, 240, 128}: "SPS, INC.",
- [3]byte{184, 243, 23}: "iSun Smasher Communications Private Limited",
- [3]byte{184, 244, 208}: "Herrmann Ultraschalltechnik GmbH & Co. Kg",
- [3]byte{184, 245, 231}: "WayTools, LLC",
- [3]byte{184, 246, 177}: "Apple, Inc.",
- [3]byte{184, 247, 50}: "Aryaka Networks Inc",
- [3]byte{184, 247, 74}: "RCNTEC",
- [3]byte{184, 248, 40}: "Changshu Gaoshida Optoelectronic Technology Co. Ltd.",
- [3]byte{184, 248, 131}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{184, 248, 190}: "BLUECOM",
- [3]byte{184, 249, 52}: "Sony Mobile Communications AB",
- [3]byte{184, 252, 154}: "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited",
- [3]byte{184, 253, 50}: "Zhejiang ROICX Microelectronics",
- [3]byte{184, 255, 97}: "Apple, Inc.",
- [3]byte{184, 255, 111}: "Shanghai Typrotech Technology Co.Ltd",
- [3]byte{184, 255, 179}: "MitraStar Technology Corp.",
- [3]byte{184, 255, 254}: "Texas Instruments",
- [3]byte{188, 2, 0}: "Stewart Audio",
- [3]byte{188, 2, 74}: "HMD Global Oy",
- [3]byte{188, 5, 67}: "AVM GmbH",
- [3]byte{188, 13, 165}: "Texas Instruments",
- [3]byte{188, 15, 43}: "FORTUNE TECHGROUP CO.,LTD",
- [3]byte{188, 15, 100}: "Intel Corporate",
- [3]byte{188, 18, 94}: "Beijing WisVideo INC.",
- [3]byte{188, 20, 1}: "Hitron Technologies. Inc",
- [3]byte{188, 20, 133}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 20, 239}: "ITON Technology Limited",
- [3]byte{188, 21, 166}: "Taiwan Jantek Electronics,Ltd.",
- [3]byte{188, 21, 172}: "Vodafone Italia S.p.A.",
- [3]byte{188, 22, 101}: "Cisco Systems, Inc",
- [3]byte{188, 22, 245}: "Cisco Systems, Inc",
- [3]byte{188, 26, 103}: "YF Technology Co., Ltd",
- [3]byte{188, 28, 129}: "Sichuan iLink Technology Co., Ltd.",
- [3]byte{188, 32, 164}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 32, 186}: "Inspur (Shandong) Electronic Information Co., Ltd",
- [3]byte{188, 37, 224}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{188, 37, 240}: "3D Display Technologies Co., Ltd.",
- [3]byte{188, 38, 29}: "HONG KONG TECON TECHNOLOGY",
- [3]byte{188, 40, 44}: "e-Smart Systems Pvt. Ltd",
- [3]byte{188, 40, 70}: "NextBIT Computing Pvt. Ltd.",
- [3]byte{188, 40, 214}: "Rowley Associates Limited",
- [3]byte{188, 43, 107}: "Beijing Haier IC Design Co.,Ltd",
- [3]byte{188, 43, 215}: "Revogi Innovation Co., Ltd.",
- [3]byte{188, 44, 85}: "Bear Flag Design, Inc.",
- [3]byte{188, 45, 152}: "ThinGlobal LLC",
- [3]byte{188, 46, 72}: "ARRIS Group, Inc.",
- [3]byte{188, 47, 61}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{188, 48, 91}: "Dell Inc.",
- [3]byte{188, 48, 125}: "Wistron Neweb Corporation",
- [3]byte{188, 48, 126}: "Wistron Neweb Corporation",
- [3]byte{188, 52, 0}: "IEEE Registration Authority",
- [3]byte{188, 53, 229}: "Hydro Systems Company",
- [3]byte{188, 56, 210}: "Pandachip Limited",
- [3]byte{188, 57, 166}: "CSUN System Technology Co.,LTD",
- [3]byte{188, 57, 217}: "Z-TEC",
- [3]byte{188, 58, 234}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{188, 59, 175}: "Apple, Inc.",
- [3]byte{188, 61, 133}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{188, 62, 19}: "Accordance Systems Inc.",
- [3]byte{188, 63, 143}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{188, 65, 0}: "CODACO ELECTRONIC s.r.o.",
- [3]byte{188, 65, 1}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{188, 67, 119}: "Hang Zhou Huite Technology Co.,ltd.",
- [3]byte{188, 68, 52}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{188, 68, 134}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 68, 176}: "Elastifile",
- [3]byte{188, 69, 46}: "Knowledge Development for POF S.L.",
- [3]byte{188, 70, 153}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{188, 71, 96}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 75, 121}: "SensingTek",
- [3]byte{188, 76, 196}: "Apple, Inc.",
- [3]byte{188, 77, 251}: "Hitron Technologies. Inc",
- [3]byte{188, 78, 60}: "CORE STAFF CO., LTD.",
- [3]byte{188, 78, 93}: "ZhongMiao Technology Co., Ltd.",
- [3]byte{188, 81, 254}: "Swann communications Pty Ltd",
- [3]byte{188, 82, 180}: "Nokia",
- [3]byte{188, 82, 183}: "Apple, Inc.",
- [3]byte{188, 84, 54}: "Apple, Inc.",
- [3]byte{188, 84, 81}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 84, 249}: "Drogoo Technology Co., Ltd.",
- [3]byte{188, 84, 252}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{188, 92, 76}: "ELECOM CO.,LTD.",
- [3]byte{188, 95, 244}: "ASRock Incorporation",
- [3]byte{188, 95, 246}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{188, 96, 16}: "Qingdao Hisense Communications Co.,Ltd.",
- [3]byte{188, 96, 167}: "Sony Interactive Entertainment Inc.",
- [3]byte{188, 98, 14}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{188, 98, 159}: "Telenet Systems P. Ltd.",
- [3]byte{188, 100, 75}: "ARRIS Group, Inc.",
- [3]byte{188, 102, 65}: "IEEE Registration Authority",
- [3]byte{188, 102, 222}: "Shadow Creator Information Technology Co.,Ltd.",
- [3]byte{188, 103, 28}: "Cisco Systems, Inc",
- [3]byte{188, 103, 120}: "Apple, Inc.",
- [3]byte{188, 103, 132}: "Environics Oy",
- [3]byte{188, 106, 22}: "tdvine",
- [3]byte{188, 106, 41}: "Texas Instruments",
- [3]byte{188, 106, 47}: "Henge Docks LLC",
- [3]byte{188, 106, 68}: "Commend International GmbH",
- [3]byte{188, 107, 77}: "Nokia",
- [3]byte{188, 108, 33}: "Apple, Inc.",
- [3]byte{188, 110, 100}: "Sony Mobile Communications AB",
- [3]byte{188, 110, 118}: "Green Energy Options Ltd",
- [3]byte{188, 113, 193}: "XTrillion, Inc.",
- [3]byte{188, 114, 177}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 116, 215}: "HangZhou JuRu Technology CO.,LTD",
- [3]byte{188, 117, 116}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{188, 118, 78}: "Rackspace US, Inc.",
- [3]byte{188, 118, 94}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 118, 112}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{188, 119, 55}: "Intel Corporate",
- [3]byte{188, 119, 159}: "SBM Co., Ltd.",
- [3]byte{188, 121, 173}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 125, 209}: "Radio Data Comms",
- [3]byte{188, 129, 31}: "Ingate Systems",
- [3]byte{188, 129, 153}: "BASIC Co.,Ltd.",
- [3]byte{188, 130, 93}: "MITSUMI ELECTRIC CO.,LTD.",
- [3]byte{188, 131, 133}: "Microsoft Corporation",
- [3]byte{188, 131, 167}: "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
- [3]byte{188, 133, 31}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 133, 86}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{188, 136, 147}: "VILLBAU Ltd.",
- [3]byte{188, 136, 195}: "Ningbo Dooya Mechanic & Electronic Technology Co., Ltd",
- [3]byte{188, 138, 163}: "NHN Entertainment",
- [3]byte{188, 138, 232}: "QING DAO HAIER TELECOM CO.,LTD.",
- [3]byte{188, 139, 85}: "NPP ELIKS America Inc. DBA T&M Atlantic",
- [3]byte{188, 140, 205}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{188, 141, 14}: "Nokia",
- [3]byte{188, 144, 58}: "Robert Bosch GmbH",
- [3]byte{188, 145, 181}: "Infinix mobility limited",
- [3]byte{188, 146, 107}: "Apple, Inc.",
- [3]byte{188, 150, 128}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{188, 152, 137}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{188, 153, 188}: "FonSee Technology Inc.",
- [3]byte{188, 156, 49}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{188, 156, 197}: "Beijing Huafei Technology Co., Ltd.",
- [3]byte{188, 157, 165}: "DASCOM Europe GmbH",
- [3]byte{188, 159, 239}: "Apple, Inc.",
- [3]byte{188, 160, 66}: "SHANGHAI FLYCO ELECTRICAL APPLIANCE CO.,LTD",
- [3]byte{188, 164, 225}: "Nabto",
- [3]byte{188, 168, 166}: "Intel Corporate",
- [3]byte{188, 169, 32}: "Apple, Inc.",
- [3]byte{188, 169, 214}: "Cyber-Rain, Inc.",
- [3]byte{188, 173, 40}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
- [3]byte{188, 173, 171}: "Avaya Inc",
- [3]byte{188, 174, 197}: "ASUSTek COMPUTER INC.",
- [3]byte{188, 177, 129}: "SHARP CORPORATION",
- [3]byte{188, 177, 243}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 179, 8}: "HONGKONG RAGENTEK COMMUNICATION TECHNOLOGY CO.,LIMITED",
- [3]byte{188, 184, 82}: "Cybera, Inc.",
- [3]byte{188, 186, 225}: "AREC Inc.",
- [3]byte{188, 187, 201}: "Kellendonk Elektronik GmbH",
- [3]byte{188, 188, 70}: "SKS Welding Systems GmbH",
- [3]byte{188, 192, 15}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{188, 193, 104}: "DinBox Sverige AB",
- [3]byte{188, 194, 58}: "Thomson Video Networks",
- [3]byte{188, 195, 27}: "Kygo Life AS",
- [3]byte{188, 195, 66}: "Panasonic Communications Co., Ltd.",
- [3]byte{188, 196, 147}: "Cisco Systems, Inc",
- [3]byte{188, 198, 26}: "SPECTRA EMBEDDED SYSTEMS",
- [3]byte{188, 198, 219}: "Nokia Corporation",
- [3]byte{188, 200, 16}: "Cisco SPVTG",
- [3]byte{188, 202, 181}: "ARRIS Group, Inc.",
- [3]byte{188, 205, 69}: "VOISMART",
- [3]byte{188, 207, 204}: "HTC Corporation",
- [3]byte{188, 209, 31}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 209, 101}: "Cisco SPVTG",
- [3]byte{188, 209, 119}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{188, 209, 211}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{188, 213, 182}: "d2d technologies",
- [3]byte{188, 215, 19}: "Owl Labs",
- [3]byte{188, 217, 64}: "ASR Co,.Ltd.",
- [3]byte{188, 224, 157}: "Eoslink",
- [3]byte{188, 229, 159}: "WATERWORLD Technology Co.,LTD",
- [3]byte{188, 230, 63}: "Samsung Electronics Co.,Ltd",
- [3]byte{188, 231, 103}: "Quanzhou TDX Electronics Co., Ltd",
- [3]byte{188, 234, 43}: "CityCom GmbH",
- [3]byte{188, 234, 250}: "Hewlett Packard",
- [3]byte{188, 235, 95}: "Fujian Beifeng Telecom Technology Co., Ltd.",
- [3]byte{188, 236, 35}: "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
- [3]byte{188, 236, 93}: "Apple, Inc.",
- [3]byte{188, 238, 123}: "ASUSTek COMPUTER INC.",
- [3]byte{188, 241, 242}: "Cisco Systems, Inc",
- [3]byte{188, 242, 146}: "PLANTRONICS, INC.",
- [3]byte{188, 242, 175}: "devolo AG",
- [3]byte{188, 245, 172}: "LG Electronics (Mobile Communications)",
- [3]byte{188, 246, 28}: "Geomodeling Wuxi Technology Co. Ltd.",
- [3]byte{188, 246, 133}: "D-Link International",
- [3]byte{188, 248, 17}: "Xiamen DNAKE Technology Co.,Ltd",
- [3]byte{188, 254, 140}: "Altronic, LLC",
- [3]byte{188, 255, 172}: "TOPCON CORPORATION",
- [3]byte{188, 255, 235}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{192, 2, 141}: "WINSTAR Display CO.,Ltd",
- [3]byte{192, 5, 194}: "ARRIS Group, Inc.",
- [3]byte{192, 13, 126}: "Additech, Inc.",
- [3]byte{192, 17, 115}: "Samsung Electronics Co.,Ltd",
- [3]byte{192, 17, 166}: "Fort-Telecom ltd.",
- [3]byte{192, 18, 66}: "Alpha Security Products",
- [3]byte{192, 20, 61}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{192, 23, 77}: "Samsung Electronics Co.,Ltd",
- [3]byte{192, 24, 133}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{192, 26, 218}: "Apple, Inc.",
- [3]byte{192, 30, 155}: "Pixavi AS",
- [3]byte{192, 33, 13}: "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
- [3]byte{192, 34, 80}: "Private",
- [3]byte{192, 37, 6}: "AVM GmbH",
- [3]byte{192, 37, 92}: "Cisco Systems, Inc",
- [3]byte{192, 37, 103}: "Nexxt Solutions",
- [3]byte{192, 37, 162}: "NEC Platforms, Ltd.",
- [3]byte{192, 37, 233}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{192, 39, 185}: "Beijing National Railway Research & Design Institute of Signal & Communication Co., Ltd.",
- [3]byte{192, 40, 141}: "Logitech, Inc",
- [3]byte{192, 41, 115}: "Audyssey Laboratories Inc.",
- [3]byte{192, 41, 243}: "XySystem",
- [3]byte{192, 43, 252}: "iNES. applied informatics GmbH",
- [3]byte{192, 44, 122}: "Shenzhen Horn Audio Co.,Ltd.",
- [3]byte{192, 45, 238}: "Cuff",
- [3]byte{192, 47, 241}: "Volta Networks",
- [3]byte{192, 51, 94}: "Microsoft",
- [3]byte{192, 52, 180}: "Gigastone Corporation",
- [3]byte{192, 53, 128}: "A&R TECH",
- [3]byte{192, 53, 189}: "Velocytech Aps",
- [3]byte{192, 53, 197}: "Prosoft Systems LTD",
- [3]byte{192, 56, 150}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{192, 56, 249}: "Nokia Danmark A/S",
- [3]byte{192, 59, 143}: "Minicom Digital Signage",
- [3]byte{192, 61, 70}: "Shanghai Sango Network Technology Co.,Ltd",
- [3]byte{192, 62, 15}: "BSkyB Ltd",
- [3]byte{192, 63, 14}: "NETGEAR",
- [3]byte{192, 63, 42}: "Biscotti, Inc.",
- [3]byte{192, 63, 213}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{192, 65, 246}: "LG ELECTRONICS INC",
- [3]byte{192, 67, 1}: "Epec Oy",
- [3]byte{192, 68, 227}: "Shenzhen Sinkna Electronics Co., LTD",
- [3]byte{192, 73, 61}: "MAITRISE TECHNOLOGIQUE",
- [3]byte{192, 74, 0}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{192, 74, 9}: "Zhejiang Everbright Communication Equip. Co,. Ltd",
- [3]byte{192, 77, 247}: "SERELEC",
- [3]byte{192, 86, 39}: "Belkin International Inc.",
- [3]byte{192, 86, 227}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
- [3]byte{192, 87, 188}: "Avaya Inc",
- [3]byte{192, 88, 167}: "Pico Systems Co., Ltd.",
- [3]byte{192, 94, 111}: "V. Stonkaus firma Kodinis Raktas",
- [3]byte{192, 94, 121}: "SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD",
- [3]byte{192, 97, 24}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{192, 98, 107}: "Cisco Systems, Inc",
- [3]byte{192, 99, 148}: "Apple, Inc.",
- [3]byte{192, 100, 198}: "Nokia Corporation",
- [3]byte{192, 101, 153}: "Samsung Electronics Co.,Ltd",
- [3]byte{192, 103, 175}: "Cisco Systems, Inc",
- [3]byte{192, 108, 15}: "Dobbs Stanford",
- [3]byte{192, 108, 109}: "MagneMotion, Inc.",
- [3]byte{192, 109, 26}: "Tianjin Henxinhuifeng Technology Co.,Ltd.",
- [3]byte{192, 112, 9}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{192, 116, 43}: "SHENZHEN XUNLONG SOFTWARE CO.,LIMITED",
- [3]byte{192, 123, 188}: "Cisco Systems, Inc",
- [3]byte{192, 124, 209}: "PEGATRON CORPORATION",
- [3]byte{192, 126, 64}: "SHENZHEN XDK COMMUNICATION EQUIPMENT CO.,LTD",
- [3]byte{192, 129, 112}: "Effigis GeoSolutions",
- [3]byte{192, 131, 10}: "2Wire Inc",
- [3]byte{192, 132, 122}: "Apple, Inc.",
- [3]byte{192, 132, 136}: "Finis Inc",
- [3]byte{192, 133, 76}: "Ragentek Technology Group",
- [3]byte{192, 135, 235}: "Samsung Electronics Co.,Ltd",
- [3]byte{192, 136, 91}: "SnD Tech Co., Ltd.",
- [3]byte{192, 137, 151}: "Samsung Electronics Co.,Ltd",
- [3]byte{192, 138, 222}: "Ruckus Wireless",
- [3]byte{192, 139, 111}: "S I Sistemas Inteligentes Eletrônicos Ltda",
- [3]byte{192, 140, 96}: "Cisco Systems, Inc",
- [3]byte{192, 145, 50}: "Patriot Memory",
- [3]byte{192, 145, 52}: "ProCurve Networking by HP",
- [3]byte{192, 151, 39}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{192, 152, 121}: "Acer Inc.",
- [3]byte{192, 152, 229}: "University of Michigan",
- [3]byte{192, 154, 113}: "XIAMEN MEITU MOBILE TECHNOLOGY CO.LTD",
- [3]byte{192, 156, 4}: "Shaanxi GuoLian Digital TV Technology Co.,Ltd.",
- [3]byte{192, 156, 146}: "COBY",
- [3]byte{192, 157, 38}: "Topicon HK Lmd.",
- [3]byte{192, 159, 5}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{192, 159, 66}: "Apple, Inc.",
- [3]byte{192, 160, 13}: "ARRIS Group, Inc.",
- [3]byte{192, 160, 187}: "D-Link International",
- [3]byte{192, 160, 199}: "FAIRFIELD INDUSTRIES",
- [3]byte{192, 160, 222}: "Multi Touch Oy",
- [3]byte{192, 160, 226}: "Eden Innovations",
- [3]byte{192, 161, 162}: "MarqMetrix",
- [3]byte{192, 162, 109}: "Abbott Point of Care",
- [3]byte{192, 163, 100}: "3D Systems Massachusetts",
- [3]byte{192, 163, 158}: "EarthCam, Inc.",
- [3]byte{192, 165, 62}: "Apple, Inc.",
- [3]byte{192, 165, 221}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{192, 170, 104}: "OSASI Technos Inc.",
- [3]byte{192, 172, 84}: "Sagemcom Broadband SAS",
- [3]byte{192, 179, 57}: "Comigo Ltd.",
- [3]byte{192, 179, 87}: "Yoshiki Electronics Industry Ltd.",
- [3]byte{192, 183, 19}: "Beijing Xiaoyuer Technology Co. Ltd.",
- [3]byte{192, 184, 177}: "BitBox Ltd",
- [3]byte{192, 186, 230}: "Application Solutions (Electronics and Vision) Ltd",
- [3]byte{192, 189, 66}: "ZPA Smart Energy a.s.",
- [3]byte{192, 189, 209}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{192, 191, 192}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{192, 193, 192}: "Cisco-Linksys, LLC",
- [3]byte{192, 195, 182}: "Automatic Systems",
- [3]byte{192, 197, 32}: "Ruckus Wireless",
- [3]byte{192, 197, 34}: "ARRIS Group, Inc.",
- [3]byte{192, 197, 105}: "SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD",
- [3]byte{192, 198, 135}: "Cisco SPVTG",
- [3]byte{192, 201, 70}: "MITSUYA LABORATORIES INC.",
- [3]byte{192, 201, 118}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{192, 203, 56}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{192, 204, 248}: "Apple, Inc.",
- [3]byte{192, 206, 205}: "Apple, Inc.",
- [3]byte{192, 207, 163}: "Creative Electronics & Software, Inc.",
- [3]byte{192, 208, 18}: "Apple, Inc.",
- [3]byte{192, 208, 68}: "Sagemcom Broadband SAS",
- [3]byte{192, 211, 145}: "IEEE Registration Authority",
- [3]byte{192, 211, 192}: "Samsung Electronics Co.,Ltd",
- [3]byte{192, 217, 98}: "ASKEY COMPUTER CORP",
- [3]byte{192, 217, 247}: "ShanDong Domor Intelligent S&T CO.,Ltd",
- [3]byte{192, 218, 116}: "Hangzhou Sunyard Technology Co., Ltd.",
- [3]byte{192, 220, 106}: "Qingdao Eastsoft Communication Technology Co.,LTD",
- [3]byte{192, 223, 119}: "Conrad Electronic SE",
- [3]byte{192, 228, 34}: "Texas Instruments",
- [3]byte{192, 228, 45}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{192, 229, 78}: "ARIES Embedded GmbH",
- [3]byte{192, 234, 228}: "Sonicwall",
- [3]byte{192, 238, 64}: "Laird Technologies",
- [3]byte{192, 238, 251}: "OnePlus Tech (Shenzhen) Ltd",
- [3]byte{192, 241, 196}: "Pacidal Corporation Ltd.",
- [3]byte{192, 242, 251}: "Apple, Inc.",
- [3]byte{192, 246, 54}: "Hangzhou Kuaiyue Technologies, Ltd.",
- [3]byte{192, 247, 157}: "Powercode",
- [3]byte{192, 248, 218}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{192, 249, 69}: "Toshiba Toko Meter Systems Co., LTD.",
- [3]byte{192, 249, 145}: "GME Standard Communications P/L",
- [3]byte{192, 255, 212}: "NETGEAR",
- [3]byte{196, 0, 6}: "Lipi Data Systems Ltd.",
- [3]byte{196, 0, 73}: "Kamama",
- [3]byte{196, 1, 66}: "MaxMedia Technology Limited",
- [3]byte{196, 1, 124}: "Ruckus Wireless",
- [3]byte{196, 1, 177}: "SeekTech INC",
- [3]byte{196, 1, 206}: "PRESITION (2000) CO., LTD.",
- [3]byte{196, 4, 21}: "NETGEAR",
- [3]byte{196, 4, 123}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{196, 5, 40}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{196, 7, 47}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{196, 8, 74}: "Nokia",
- [3]byte{196, 8, 128}: "Shenzhen UTEPO Tech Co., Ltd.",
- [3]byte{196, 9, 56}: "FUJIAN STAR-NET COMMUNICATION CO.,LTD",
- [3]byte{196, 10, 203}: "Cisco Systems, Inc",
- [3]byte{196, 11, 203}: "Xiaomi Communications Co Ltd",
- [3]byte{196, 14, 69}: "ACK Networks,Inc.",
- [3]byte{196, 15, 9}: "Hermes electronic GmbH",
- [3]byte{196, 16, 138}: "Ruckus Wireless",
- [3]byte{196, 17, 224}: "Bull Group Co., Ltd",
- [3]byte{196, 18, 245}: "D-Link International",
- [3]byte{196, 19, 226}: "Aerohive Networks Inc.",
- [3]byte{196, 20, 60}: "Cisco Systems, Inc",
- [3]byte{196, 22, 250}: "Prysm Inc",
- [3]byte{196, 23, 254}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{196, 25, 139}: "Dominion Voting Systems Corporation",
- [3]byte{196, 25, 236}: "Qualisys AB",
- [3]byte{196, 28, 255}: "Vizio, Inc",
- [3]byte{196, 30, 206}: "HMI Sources Ltd.",
- [3]byte{196, 33, 200}: "KYOCERA CORPORATION",
- [3]byte{196, 35, 122}: "WhizNets Inc.",
- [3]byte{196, 36, 46}: "Galvanic Applied Sciences Inc",
- [3]byte{196, 38, 40}: "Airo Wireless",
- [3]byte{196, 39, 149}: "Technicolor CH USA Inc.",
- [3]byte{196, 40, 45}: "Embedded Intellect Pty Ltd",
- [3]byte{196, 41, 29}: "KLEMSAN ELEKTRIK ELEKTRONIK SAN.VE TIC.AS.",
- [3]byte{196, 44, 3}: "Apple, Inc.",
- [3]byte{196, 47, 144}: "Hangzhou Hikvision Digital Technology Co.,Ltd.",
- [3]byte{196, 48, 24}: "MCS Logic Inc.",
- [3]byte{196, 52, 107}: "Hewlett Packard",
- [3]byte{196, 54, 85}: "Shenzhen Fenglian Technology Co., Ltd.",
- [3]byte{196, 54, 108}: "LG Innotek",
- [3]byte{196, 54, 218}: "Rusteletech Ltd.",
- [3]byte{196, 56, 211}: "TAGATEC CO.,LTD",
- [3]byte{196, 57, 58}: "SMC Networks Inc",
- [3]byte{196, 58, 159}: "Siconix Inc.",
- [3]byte{196, 58, 190}: "Sony Mobile Communications AB",
- [3]byte{196, 60, 60}: "CYBELEC SA",
- [3]byte{196, 61, 199}: "NETGEAR",
- [3]byte{196, 64, 68}: "RackTop Systems Inc.",
- [3]byte{196, 66, 2}: "Samsung Electronics Co.,Ltd",
- [3]byte{196, 67, 143}: "LG Electronics (Mobile Communications)",
- [3]byte{196, 68, 160}: "Cisco Systems, Inc",
- [3]byte{196, 69, 103}: "SAMBON PRECISON and ELECTRONICS",
- [3]byte{196, 69, 236}: "Shanghai Yali Electron Co.,LTD",
- [3]byte{196, 70, 25}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{196, 71, 63}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{196, 72, 56}: "Satcom Direct, Inc.",
- [3]byte{196, 73, 187}: "MITSUMI ELECTRIC CO.,LTD.",
- [3]byte{196, 74, 208}: "FIREFLIES SYSTEMS",
- [3]byte{196, 75, 68}: "Omniprint Inc.",
- [3]byte{196, 75, 209}: "Wallys Communications Teachnologies Co.,Ltd.",
- [3]byte{196, 78, 31}: "BlueN",
- [3]byte{196, 78, 172}: "Shenzhen Shiningworth Technology Co., Ltd.",
- [3]byte{196, 80, 6}: "Samsung Electronics Co.,Ltd",
- [3]byte{196, 84, 68}: "QUANTA COMPUTER INC.",
- [3]byte{196, 85, 166}: "Cadac Holdings Ltd",
- [3]byte{196, 85, 194}: "Bach-Simpson",
- [3]byte{196, 86, 0}: "Galleon Embedded Computing",
- [3]byte{196, 86, 254}: "Lava International Ltd.",
- [3]byte{196, 87, 31}: "June Life Inc",
- [3]byte{196, 87, 110}: "Samsung Electronics Co.,Ltd",
- [3]byte{196, 88, 194}: "Shenzhen TATFOOK Technology Co., Ltd.",
- [3]byte{196, 89, 118}: "Fugoo Coorporation",
- [3]byte{196, 93, 216}: "HDMI Forum",
- [3]byte{196, 96, 68}: "Everex Electronics Limited",
- [3]byte{196, 98, 107}: "ZPT Vigantice",
- [3]byte{196, 98, 234}: "Samsung Electronics Co.,Ltd",
- [3]byte{196, 99, 84}: "U-Raku, Inc.",
- [3]byte{196, 100, 19}: "Cisco Systems, Inc",
- [3]byte{196, 102, 153}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{196, 103, 181}: "Libratone A/S",
- [3]byte{196, 104, 208}: "VTech Telecommunications Ltd.",
- [3]byte{196, 105, 62}: "Turbulence Design Inc.",
- [3]byte{196, 106, 183}: "Xiaomi Communications Co Ltd",
- [3]byte{196, 107, 180}: "myIDkey",
- [3]byte{196, 109, 241}: "DataGravity",
- [3]byte{196, 110, 31}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{196, 112, 11}: "GUANGZHOU CHIP TECHNOLOGIES CO.,LTD",
- [3]byte{196, 113, 48}: "Fon Technology S.L.",
- [3]byte{196, 113, 84}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{196, 113, 254}: "Cisco Systems, Inc",
- [3]byte{196, 114, 149}: "Cisco Systems, Inc",
- [3]byte{196, 115, 30}: "Samsung Electronics Co.,Ltd",
- [3]byte{196, 119, 171}: "Beijing ASU Tech Co.,Ltd",
- [3]byte{196, 119, 175}: "Advanced Digital Broadcast SA",
- [3]byte{196, 123, 47}: "Beijing JoinHope Image Technology Ltd.",
- [3]byte{196, 123, 163}: "NAVIS Inc.",
- [3]byte{196, 124, 141}: "IEEE Registration Authority",
- [3]byte{196, 125, 70}: "FUJITSU LIMITED",
- [3]byte{196, 125, 79}: "Cisco Systems, Inc",
- [3]byte{196, 125, 204}: "Zebra Technologies Inc",
- [3]byte{196, 125, 254}: "A.N. Solutions GmbH",
- [3]byte{196, 127, 81}: "Inventek Systems",
- [3]byte{196, 130, 63}: "Fujian Newland Auto-ID Tech. Co,.Ltd.",
- [3]byte{196, 130, 78}: "Changzhou Uchip Electronics Co., LTD.",
- [3]byte{196, 131, 111}: "Ciena Corporation",
- [3]byte{196, 133, 8}: "Intel Corporate",
- [3]byte{196, 134, 233}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{196, 136, 229}: "Samsung Electronics Co.,Ltd",
- [3]byte{196, 142, 143}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{196, 143, 7}: "Shenzhen Yihao Hulian Science and Technology Co., Ltd.",
- [3]byte{196, 145, 58}: "Shenzhen Sanland Electronic Co., ltd.",
- [3]byte{196, 146, 76}: "KEISOKUKI CENTER CO.,LTD.",
- [3]byte{196, 147, 0}: "8Devices",
- [3]byte{196, 147, 19}: "100fio networks technology llc",
- [3]byte{196, 147, 128}: "Speedytel technology",
- [3]byte{196, 149, 162}: "SHENZHEN WEIJIU INDUSTRY AND TRADE DEVELOPMENT CO., LTD",
- [3]byte{196, 152, 5}: "Minieum Networks, Inc",
- [3]byte{196, 154, 2}: "LG Electronics (Mobile Communications)",
- [3]byte{196, 157, 237}: "Microsoft Corporation",
- [3]byte{196, 158, 65}: "G24 Power Limited",
- [3]byte{196, 159, 243}: "Mciao Technologies, Inc.",
- [3]byte{196, 163, 102}: "zte corporation",
- [3]byte{196, 168, 29}: "D-Link International",
- [3]byte{196, 170, 161}: "SUMMIT DEVELOPMENT, spol.s r.o.",
- [3]byte{196, 171, 178}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{196, 173, 33}: "MEDIAEDGE Corporation",
- [3]byte{196, 173, 241}: "GOPEACE Inc.",
- [3]byte{196, 174, 18}: "Samsung Electronics Co.,Ltd",
- [3]byte{196, 179, 1}: "Apple, Inc.",
- [3]byte{196, 181, 18}: "General Electric Digital Energy",
- [3]byte{196, 185, 205}: "Cisco Systems, Inc",
- [3]byte{196, 186, 153}: "I+ME Actia Informatik und Mikro-Elektronik GmbH",
- [3]byte{196, 186, 163}: "Beijing Winicssec Technologies Co., Ltd.",
- [3]byte{196, 187, 76}: "Zebra Information Tech Co. Ltd",
- [3]byte{196, 187, 234}: "Pakedge Device and Software Inc",
- [3]byte{196, 189, 106}: "SKF GmbH",
- [3]byte{196, 190, 132}: "Texas Instruments",
- [3]byte{196, 190, 212}: "Avaya Inc",
- [3]byte{196, 192, 174}: "MIDORI ELECTRONIC CO., LTD.",
- [3]byte{196, 193, 159}: "National Oilwell Varco Instrumentation, Monitoring, and Optimization (NOV IMO)",
- [3]byte{196, 197, 99}: "TECNO MOBILE LIMITED",
- [3]byte{196, 199, 85}: "Beijing HuaqinWorld Technology Co.,Ltd",
- [3]byte{196, 201, 25}: "Energy Imports Ltd",
- [3]byte{196, 201, 236}: "Gugaoo HK Limited",
- [3]byte{196, 202, 217}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{196, 203, 107}: "Airista Flow, Inc.",
- [3]byte{196, 205, 69}: "Beijing Boomsense Technology CO.,LTD.",
- [3]byte{196, 205, 130}: "Hangzhou Lowan Information Technology Co., Ltd.",
- [3]byte{196, 209, 151}: "Ventia Utility Services",
- [3]byte{196, 212, 137}: "JiangSu Joyque Information Industry Co.,Ltd",
- [3]byte{196, 214, 85}: "Tercel technology co.,ltd",
- [3]byte{196, 217, 135}: "Intel Corporate",
- [3]byte{196, 218, 38}: "NOBLEX SA",
- [3]byte{196, 218, 125}: "Ivium Technologies B.V.",
- [3]byte{196, 224, 50}: "IEEE 1904.1 Working Group",
- [3]byte{196, 225, 124}: "U2S co.",
- [3]byte{196, 229, 16}: "Mechatro, Inc.",
- [3]byte{196, 231, 190}: "SCSpro Co.,Ltd",
- [3]byte{196, 233, 47}: "AB Sciex",
- [3]byte{196, 233, 132}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{196, 234, 29}: "Technicolor",
- [3]byte{196, 235, 227}: "RRCN SAS",
- [3]byte{196, 237, 186}: "Texas Instruments",
- [3]byte{196, 238, 174}: "VSS Monitoring",
- [3]byte{196, 238, 245}: "II-VI Incorporated",
- [3]byte{196, 239, 112}: "Home Skinovations",
- [3]byte{196, 240, 129}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{196, 241, 209}: "BEIJING SOGOU TECHNOLOGY DEVELOPMENT CO., LTD.",
- [3]byte{196, 243, 18}: "Texas Instruments",
- [3]byte{196, 244, 100}: "Spica international",
- [3]byte{196, 245, 124}: "Brocade Communications Systems, Inc.",
- [3]byte{196, 245, 165}: "Kumalift Co., Ltd.",
- [3]byte{196, 252, 228}: "DishTV NZ Ltd",
- [3]byte{196, 255, 31}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{200, 0, 132}: "Cisco Systems, Inc",
- [3]byte{200, 2, 16}: "LG Innotek",
- [3]byte{200, 2, 88}: "ITW GSE ApS",
- [3]byte{200, 2, 143}: "Nova Electronics (Shanghai) Co., Ltd.",
- [3]byte{200, 2, 166}: "Beijing Newmine Technology",
- [3]byte{200, 7, 24}: "TDSi",
- [3]byte{200, 8, 233}: "LG Electronics",
- [3]byte{200, 10, 169}: "QUANTA COMPUTER INC.",
- [3]byte{200, 12, 200}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{200, 14, 20}: "AVM Audiovisuelles Marketing und Computersysteme GmbH",
- [3]byte{200, 14, 119}: "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited",
- [3]byte{200, 14, 149}: "OmniLync Inc.",
- [3]byte{200, 16, 115}: "CENTURY OPTICOMM CO.,LTD",
- [3]byte{200, 20, 81}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{200, 20, 121}: "Samsung Electronics Co.,Ltd",
- [3]byte{200, 22, 165}: "Masimo Corporation",
- [3]byte{200, 22, 189}: "Qingdao Hisense Communications Co.,Ltd.",
- [3]byte{200, 25, 247}: "Samsung Electronics Co.,Ltd",
- [3]byte{200, 26, 254}: "DLOGIC GmbH",
- [3]byte{200, 27, 92}: "BCTech",
- [3]byte{200, 27, 107}: "Innova Security",
- [3]byte{200, 30, 142}: "ADV Security (S) Pte Ltd",
- [3]byte{200, 30, 231}: "Apple, Inc.",
- [3]byte{200, 31, 102}: "Dell Inc.",
- [3]byte{200, 31, 190}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{200, 31, 234}: "Avaya Inc",
- [3]byte{200, 32, 142}: "Storagedata",
- [3]byte{200, 33, 88}: "Intel Corporate",
- [3]byte{200, 37, 225}: "Lemobile Information Technology (Beijing) Co., Ltd",
- [3]byte{200, 41, 42}: "Barun Electronics",
- [3]byte{200, 42, 20}: "Apple, Inc.",
- [3]byte{200, 46, 148}: "Halfa Enterprise Co., Ltd.",
- [3]byte{200, 49, 104}: "eZEX corporation",
- [3]byte{200, 50, 50}: "Hunting Innova",
- [3]byte{200, 51, 75}: "Apple, Inc.",
- [3]byte{200, 52, 142}: "Intel Corporate",
- [3]byte{200, 53, 184}: "Ericsson, EAB/RWI/K",
- [3]byte{200, 56, 112}: "Samsung Electronics Co.,Ltd",
- [3]byte{200, 58, 53}: "Tenda Technology Co., Ltd.",
- [3]byte{200, 58, 107}: "Roku, Inc",
- [3]byte{200, 59, 69}: "JRI",
- [3]byte{200, 60, 133}: "Apple, Inc.",
- [3]byte{200, 61, 151}: "Nokia Corporation",
- [3]byte{200, 61, 212}: "CyberTAN Technology Inc.",
- [3]byte{200, 61, 252}: "Pioneer DJ Corporation",
- [3]byte{200, 62, 153}: "Texas Instruments",
- [3]byte{200, 62, 167}: "KUNBUS GmbH",
- [3]byte{200, 63, 38}: "Microsoft Corporation",
- [3]byte{200, 63, 180}: "ARRIS Group, Inc.",
- [3]byte{200, 64, 41}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{200, 69, 41}: "IMK Networks Co.,Ltd",
- [3]byte{200, 69, 68}: "Asia Pacific CIS (Wuxi) Co, Ltd",
- [3]byte{200, 69, 143}: "Wyler AG",
- [3]byte{200, 71, 140}: "Beken Corporation",
- [3]byte{200, 72, 245}: "MEDISON Xray Co., Ltd",
- [3]byte{200, 76, 117}: "Cisco Systems, Inc",
- [3]byte{200, 80, 233}: "Raisecom Technology CO., LTD",
- [3]byte{200, 81, 149}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{200, 86, 69}: "Intermas France",
- [3]byte{200, 86, 99}: "Sunflex Europe GmbH",
- [3]byte{200, 91, 118}: "LCFC(HeFei) Electronics Technology co., ltd",
- [3]byte{200, 96, 0}: "ASUSTek COMPUTER INC.",
- [3]byte{200, 99, 241}: "Sony Interactive Entertainment Inc.",
- [3]byte{200, 100, 199}: "zte corporation",
- [3]byte{200, 102, 44}: "Beijing Haitai Fangyuan High Technology Co,.Ltd.",
- [3]byte{200, 102, 93}: "Aerohive Networks Inc.",
- [3]byte{200, 103, 94}: "Aerohive Networks Inc.",
- [3]byte{200, 105, 205}: "Apple, Inc.",
- [3]byte{200, 108, 30}: "Display Systems Ltd",
- [3]byte{200, 108, 135}: "Zyxel Communications Corporation",
- [3]byte{200, 108, 182}: "Optcom Co., Ltd.",
- [3]byte{200, 111, 29}: "Apple, Inc.",
- [3]byte{200, 114, 72}: "Aplicom Oy",
- [3]byte{200, 115, 36}: "Sow Cheng Technology Co. Ltd.",
- [3]byte{200, 117, 91}: "Quantify Technology Pty. Ltd.",
- [3]byte{200, 119, 139}: "Themis Computer",
- [3]byte{200, 123, 91}: "zte corporation",
- [3]byte{200, 124, 188}: "Valink Co., Ltd.",
- [3]byte{200, 125, 119}: "Shenzhen Kingtech Communication Equipment Co.,Ltd",
- [3]byte{200, 126, 117}: "Samsung Electronics Co.,Ltd",
- [3]byte{200, 132, 57}: "Sunrise Technologies",
- [3]byte{200, 132, 71}: "Beautiful Enterprise Co., Ltd",
- [3]byte{200, 133, 80}: "Apple, Inc.",
- [3]byte{200, 135, 34}: "Lumenpulse",
- [3]byte{200, 135, 59}: "Net Optics",
- [3]byte{200, 138, 131}: "Dongguan HuaHong Electronics Co.,Ltd",
- [3]byte{200, 139, 71}: "Nolangroup S.P.A con Socio Unico",
- [3]byte{200, 141, 131}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{200, 142, 209}: "IEEE Registration Authority",
- [3]byte{200, 144, 62}: "Pakton Technologies",
- [3]byte{200, 145, 249}: "Sagemcom Broadband SAS",
- [3]byte{200, 147, 70}: "MXCHIP Company Limited",
- [3]byte{200, 147, 131}: "Embedded Automation, Inc.",
- [3]byte{200, 148, 187}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{200, 148, 210}: "Jiangsu Datang Electronic Products Co., Ltd",
- [3]byte{200, 151, 159}: "Nokia Corporation",
- [3]byte{200, 156, 29}: "Cisco Systems, Inc",
- [3]byte{200, 156, 220}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{200, 159, 29}: "SHENZHEN COMMUNICATION TECHNOLOGIES CO.,LTD",
- [3]byte{200, 159, 66}: "VDII Innovation AB",
- [3]byte{200, 160, 48}: "Texas Instruments",
- [3]byte{200, 161, 182}: "Shenzhen Longway Technologies Co., Ltd",
- [3]byte{200, 161, 186}: "Neul Ltd",
- [3]byte{200, 162, 206}: "Oasis Media Systems LLC",
- [3]byte{200, 166, 32}: "Nebula, Inc",
- [3]byte{200, 167, 10}: "Verizon Business",
- [3]byte{200, 167, 41}: "SYStronics Co., Ltd.",
- [3]byte{200, 168, 35}: "Samsung Electronics Co.,Ltd",
- [3]byte{200, 169, 252}: "Goyoo Networks Inc.",
- [3]byte{200, 170, 33}: "ARRIS Group, Inc.",
- [3]byte{200, 170, 85}: "Hunan Comtom Electronic Incorporated Co.,Ltd",
- [3]byte{200, 170, 204}: "Private",
- [3]byte{200, 174, 156}: "Shanghai TYD Elecronic Technology Co. Ltd",
- [3]byte{200, 175, 64}: "marco Systemanalyse und Entwicklung GmbH",
- [3]byte{200, 175, 227}: "Hefei Radio Communication Technology Co., Ltd",
- [3]byte{200, 178, 30}: "CHIPSEA TECHNOLOGIES (SHENZHEN) CORP.",
- [3]byte{200, 179, 115}: "Cisco-Linksys, LLC",
- [3]byte{200, 181, 173}: "Hewlett Packard Enterprise",
- [3]byte{200, 181, 183}: "Apple, Inc.",
- [3]byte{200, 186, 148}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{200, 187, 211}: "Embrane",
- [3]byte{200, 188, 200}: "Apple, Inc.",
- [3]byte{200, 190, 25}: "D-Link International",
- [3]byte{200, 193, 38}: "ZPM Industria e Comercio Ltda",
- [3]byte{200, 193, 60}: "RuggedTek Hangzhou Co., Ltd",
- [3]byte{200, 194, 198}: "Shanghai Airm2m Communication Technology Co., Ltd",
- [3]byte{200, 197, 14}: "Shenzhen Primestone Network Technologies.Co., Ltd.",
- [3]byte{200, 199, 145}: "Zero1.tv GmbH",
- [3]byte{200, 203, 184}: "Hewlett Packard",
- [3]byte{200, 205, 114}: "Sagemcom Broadband SAS",
- [3]byte{200, 208, 25}: "Shanghai Tigercel Communication Technology Co.,Ltd",
- [3]byte{200, 209, 11}: "Nokia Corporation",
- [3]byte{200, 209, 42}: "Comtrend Corporation",
- [3]byte{200, 209, 94}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{200, 209, 209}: "AGAiT Technology Corporation",
- [3]byte{200, 210, 193}: "Jetlun (Shenzhen) Corporation",
- [3]byte{200, 211, 163}: "D-Link International",
- [3]byte{200, 211, 255}: "Hewlett Packard",
- [3]byte{200, 212, 41}: "Muehlbauer AG",
- [3]byte{200, 213, 144}: "FLIGHT DATA SYSTEMS",
- [3]byte{200, 213, 254}: "Shenzhen Zowee Technology Co., Ltd",
- [3]byte{200, 215, 25}: "Cisco-Linksys, LLC",
- [3]byte{200, 215, 121}: "Qingdao Haier Telecom Co.,Ltd",
- [3]byte{200, 215, 176}: "Samsung Electronics Co.,Ltd",
- [3]byte{200, 219, 38}: "Logitech",
- [3]byte{200, 221, 201}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{200, 222, 81}: "IntegraOptics",
- [3]byte{200, 222, 201}: "Coriant",
- [3]byte{200, 223, 124}: "Nokia Corporation",
- [3]byte{200, 223, 132}: "Texas Instruments",
- [3]byte{200, 224, 235}: "Apple, Inc.",
- [3]byte{200, 225, 48}: "Milkyway Group Ltd",
- [3]byte{200, 225, 167}: "Vertu Corporation Limited",
- [3]byte{200, 228, 47}: "Technical Research Design and Development",
- [3]byte{200, 231, 118}: "PTCOM Technology",
- [3]byte{200, 231, 216}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{200, 231, 240}: "Juniper Networks",
- [3]byte{200, 238, 8}: "TANGTOP TECHNOLOGY CO.,LTD",
- [3]byte{200, 238, 117}: "Pishion International Co. Ltd",
- [3]byte{200, 238, 166}: "Shenzhen SHX Technology Co., Ltd",
- [3]byte{200, 239, 46}: "Beijing Gefei Tech. Co., Ltd",
- [3]byte{200, 242, 48}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{200, 243, 107}: "Yamato Scale Co.,Ltd.",
- [3]byte{200, 243, 134}: "Shenzhen Xiaoniao Technology Co.,Ltd",
- [3]byte{200, 244, 6}: "Avaya Inc",
- [3]byte{200, 246, 80}: "Apple, Inc.",
- [3]byte{200, 246, 141}: "S.E.TECHNOLOGIES LIMITED",
- [3]byte{200, 247, 4}: "Building Block Video",
- [3]byte{200, 247, 51}: "Intel Corporate",
- [3]byte{200, 248, 109}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{200, 249, 70}: "LOCOSYS Technology Inc.",
- [3]byte{200, 249, 129}: "Seneca s.r.l.",
- [3]byte{200, 249, 200}: "NewSharp Technology(SuZhou)Co,Ltd",
- [3]byte{200, 249, 249}: "Cisco Systems, Inc",
- [3]byte{200, 251, 38}: "Cisco SPVTG",
- [3]byte{200, 253, 25}: "Texas Instruments",
- [3]byte{200, 254, 48}: "Bejing DAYO Mobile Communication Technology Ltd.",
- [3]byte{200, 255, 40}: "Liteon Technology Corporation",
- [3]byte{200, 255, 119}: "Dyson Limited",
- [3]byte{204, 0, 128}: "BETTINI SRL",
- [3]byte{204, 3, 217}: "Cisco Meraki",
- [3]byte{204, 3, 250}: "Technicolor CH USA Inc.",
- [3]byte{204, 4, 124}: "G-WAY Microwave",
- [3]byte{204, 4, 180}: "Select Comfort",
- [3]byte{204, 5, 27}: "Samsung Electronics Co.,Ltd",
- [3]byte{204, 6, 119}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{204, 7, 171}: "Samsung Electronics Co.,Ltd",
- [3]byte{204, 7, 228}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{204, 8, 141}: "Apple, Inc.",
- [3]byte{204, 8, 224}: "Apple, Inc.",
- [3]byte{204, 9, 200}: "IMAQLIQ LTD",
- [3]byte{204, 12, 218}: "Miljovakt AS",
- [3]byte{204, 13, 236}: "Cisco SPVTG",
- [3]byte{204, 16, 163}: "Beijing Nan Bao Technology Co., Ltd.",
- [3]byte{204, 20, 166}: "Yichun MyEnergy Domain, Inc",
- [3]byte{204, 22, 126}: "Cisco Systems, Inc",
- [3]byte{204, 24, 123}: "Manzanita Systems, Inc.",
- [3]byte{204, 25, 168}: "PT Inovação e Sistemas SA",
- [3]byte{204, 26, 250}: "zte corporation",
- [3]byte{204, 27, 224}: "IEEE Registration Authority",
- [3]byte{204, 30, 255}: "Metrological Group BV",
- [3]byte{204, 31, 196}: "InVue",
- [3]byte{204, 32, 232}: "Apple, Inc.",
- [3]byte{204, 34, 24}: "InnoDigital Co., Ltd.",
- [3]byte{204, 34, 55}: "IEEE Registration Authority",
- [3]byte{204, 37, 239}: "Apple, Inc.",
- [3]byte{204, 38, 45}: "Verifi, LLC",
- [3]byte{204, 41, 245}: "Apple, Inc.",
- [3]byte{204, 42, 128}: "Micro-Biz intelligence solutions Co.,Ltd",
- [3]byte{204, 45, 33}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{204, 45, 131}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{204, 45, 140}: "LG ELECTRONICS INC",
- [3]byte{204, 45, 224}: "Routerboard.com",
- [3]byte{204, 47, 113}: "Intel Corporate",
- [3]byte{204, 48, 128}: "VAIO Corporation",
- [3]byte{204, 51, 187}: "Sagemcom Broadband SAS",
- [3]byte{204, 52, 41}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{204, 52, 215}: "GEWISS S.P.A.",
- [3]byte{204, 53, 64}: "Technicolor CH USA Inc.",
- [3]byte{204, 55, 171}: "Edgecore Networks Corportation",
- [3]byte{204, 57, 140}: "Shiningtek",
- [3]byte{204, 58, 97}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{204, 58, 223}: "Private",
- [3]byte{204, 59, 62}: "Lester Electrical",
- [3]byte{204, 60, 63}: "SA.S.S. Datentechnik AG",
- [3]byte{204, 61, 130}: "Intel Corporate",
- [3]byte{204, 62, 95}: "Hewlett Packard",
- [3]byte{204, 63, 29}: "Intesis Software SL",
- [3]byte{204, 64, 208}: "NETGEAR",
- [3]byte{204, 67, 227}: "Trump s.a.",
- [3]byte{204, 68, 99}: "Apple, Inc.",
- [3]byte{204, 70, 57}: "WAAV, Inc.",
- [3]byte{204, 70, 214}: "Cisco Systems, Inc",
- [3]byte{204, 71, 3}: "Intercon Systems Co., Ltd.",
- [3]byte{204, 74, 225}: "fourtec -Fourier Technologies",
- [3]byte{204, 75, 115}: "AMPAK Technology, Inc.",
- [3]byte{204, 75, 251}: "Hellberg Safety AB",
- [3]byte{204, 78, 36}: "Brocade Communications Systems, Inc.",
- [3]byte{204, 78, 236}: "HUMAX Co., Ltd.",
- [3]byte{204, 80, 10}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{204, 80, 28}: "KVH Industries, Inc.",
- [3]byte{204, 80, 118}: "Ocom Communications, Inc.",
- [3]byte{204, 82, 175}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{204, 83, 181}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{204, 84, 89}: "OnTime Networks AS",
- [3]byte{204, 85, 173}: "RIM",
- [3]byte{204, 89, 62}: "TOUMAZ LTD",
- [3]byte{204, 90, 83}: "Cisco Systems, Inc",
- [3]byte{204, 92, 117}: "Weightech Com. Imp. Exp. Equip. Pesagem Ltda",
- [3]byte{204, 93, 78}: "Zyxel Communications Corporation",
- [3]byte{204, 93, 87}: "Information System Research Institute,Inc.",
- [3]byte{204, 95, 191}: "Topwise 3G Communication Co., Ltd.",
- [3]byte{204, 96, 187}: "Empower RF Systems",
- [3]byte{204, 97, 229}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{204, 101, 173}: "ARRIS Group, Inc.",
- [3]byte{204, 102, 178}: "Nokia",
- [3]byte{204, 105, 176}: "Global Traffic Technologies, LLC",
- [3]byte{204, 107, 152}: "Minetec Wireless Technologies",
- [3]byte{204, 107, 241}: "Sound Masking Inc.",
- [3]byte{204, 109, 160}: "Roku, Inc.",
- [3]byte{204, 109, 239}: "TJK Tietolaite Oy",
- [3]byte{204, 110, 164}: "Samsung Electronics Co.,Ltd",
- [3]byte{204, 114, 15}: "Viscount Systems Inc.",
- [3]byte{204, 115, 20}: "HONG KONG WHEATEK TECHNOLOGY LIMITED",
- [3]byte{204, 116, 152}: "Filmetrics Inc.",
- [3]byte{204, 118, 105}: "SEETECH",
- [3]byte{204, 120, 95}: "Apple, Inc.",
- [3]byte{204, 120, 171}: "Texas Instruments",
- [3]byte{204, 121, 74}: "BLU Products Inc.",
- [3]byte{204, 121, 207}: "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
- [3]byte{204, 122, 48}: "CMAX Wireless Co., Ltd.",
- [3]byte{204, 123, 53}: "zte corporation",
- [3]byte{204, 125, 55}: "ARRIS Group, Inc.",
- [3]byte{204, 126, 231}: "Panasonic Corporation AVC Networks Company",
- [3]byte{204, 129, 218}: "Phicomm (Shanghai) Co., Ltd.",
- [3]byte{204, 130, 235}: "KYOCERA CORPORATION",
- [3]byte{204, 133, 108}: "SHENZHEN MDK DIGITAL TECHNOLOGY CO.,LTD",
- [3]byte{204, 137, 253}: "Nokia Corporation",
- [3]byte{204, 140, 218}: "Shenzhen Wei Da Intelligent Technology Go.,Ltd",
- [3]byte{204, 140, 227}: "Texas Instruments",
- [3]byte{204, 144, 147}: "Hansong Tehnologies",
- [3]byte{204, 144, 232}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{204, 145, 43}: "TE Connectivity Touch Solutions",
- [3]byte{204, 148, 74}: "Pfeiffer Vacuum GmbH",
- [3]byte{204, 148, 112}: "Kinestral Technologies, Inc.",
- [3]byte{204, 149, 215}: "Vizio, Inc",
- [3]byte{204, 150, 53}: "LVS Co.,Ltd.",
- [3]byte{204, 150, 160}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{204, 152, 145}: "Cisco Systems, Inc",
- [3]byte{204, 158, 0}: "Nintendo Co., Ltd.",
- [3]byte{204, 159, 53}: "Transbit Sp. z o.o.",
- [3]byte{204, 159, 122}: "Chiun Mai Communication Systems, Inc",
- [3]byte{204, 160, 229}: "DZG Metering GmbH",
- [3]byte{204, 162, 25}: "SHENZHEN ALONG INVESTMENT CO.,LTD",
- [3]byte{204, 162, 35}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{204, 162, 96}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{204, 163, 116}: "Guangdong Guanglian Electronic Technology Co.Ltd",
- [3]byte{204, 164, 98}: "ARRIS Group, Inc.",
- [3]byte{204, 164, 175}: "Shenzhen Sowell Technology Co., LTD",
- [3]byte{204, 166, 20}: "AIFA TECHNOLOGY CORP.",
- [3]byte{204, 175, 120}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{204, 176, 218}: "Liteon Technology Corporation",
- [3]byte{204, 177, 26}: "Samsung Electronics Co.,Ltd",
- [3]byte{204, 178, 85}: "D-Link International",
- [3]byte{204, 179, 171}: "shenzhen Biocare Bio-Medical Equipment Co.,Ltd.",
- [3]byte{204, 179, 248}: "FUJITSU ISOTEC LIMITED",
- [3]byte{204, 181, 90}: "Fraunhofer ITWM",
- [3]byte{204, 182, 145}: "NECMagnusCommunications",
- [3]byte{204, 184, 136}: "AnB Securite s.a.",
- [3]byte{204, 184, 168}: "AMPAK Technology, Inc.",
- [3]byte{204, 184, 241}: "EAGLE KINGDOM TECHNOLOGIES LIMITED",
- [3]byte{204, 189, 53}: "Steinel GmbH",
- [3]byte{204, 189, 211}: "Ultimaker B.V.",
- [3]byte{204, 190, 89}: "Calix Inc.",
- [3]byte{204, 190, 113}: "OptiLogix BV",
- [3]byte{204, 193, 4}: "Applied Technical Systems",
- [3]byte{204, 195, 234}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{204, 197, 10}: "SHENZHEN DAJIAHAO TECHNOLOGY CO.,LTD",
- [3]byte{204, 197, 239}: "Co-Comm Servicios Telecomunicaciones S.L.",
- [3]byte{204, 198, 43}: "Tri-Systems Corporation",
- [3]byte{204, 199, 96}: "Apple, Inc.",
- [3]byte{204, 200, 215}: "CIAS Elettronica srl",
- [3]byte{204, 204, 78}: "Sun Fountainhead USA. Corp",
- [3]byte{204, 204, 129}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{204, 205, 100}: "SM-Electronic GmbH",
- [3]byte{204, 206, 30}: "AVM Audiovisuelles Marketing und Computersysteme GmbH",
- [3]byte{204, 206, 64}: "Janteq Corp",
- [3]byte{204, 210, 155}: "Shenzhen Bopengfa Elec&Technology CO.,Ltd",
- [3]byte{204, 211, 30}: "IEEE Registration Authority",
- [3]byte{204, 211, 226}: "Jiangsu Yinhe Electronics Co.,Ltd.",
- [3]byte{204, 213, 57}: "Cisco Systems, Inc",
- [3]byte{204, 216, 17}: "Aiconn Technology Corporation",
- [3]byte{204, 216, 193}: "Cisco Systems, Inc",
- [3]byte{204, 217, 233}: "SCR Engineers Ltd.",
- [3]byte{204, 224, 195}: "Mangstor, Inc.",
- [3]byte{204, 225, 127}: "Juniper Networks",
- [3]byte{204, 225, 213}: "BUFFALO.INC",
- [3]byte{204, 231, 152}: "My Social Stuff",
- [3]byte{204, 231, 223}: "American Magnetics, Inc.",
- [3]byte{204, 232, 172}: "SOYEA Technology Co.,Ltd.",
- [3]byte{204, 234, 28}: "DCONWORKS Co., Ltd",
- [3]byte{204, 238, 217}: "VAHLE DETO GmbH",
- [3]byte{204, 239, 72}: "Cisco Systems, Inc",
- [3]byte{204, 243, 165}: "Chi Mei Communication Systems, Inc",
- [3]byte{204, 244, 7}: "EUKREA ELECTROMATIQUE SARL",
- [3]byte{204, 245, 56}: "3isysnetworks",
- [3]byte{204, 246, 122}: "Ayecka Communication Systems LTD",
- [3]byte{204, 248, 65}: "Lumewave",
- [3]byte{204, 248, 240}: "Xi'an HISU Multimedia Technology Co.,Ltd.",
- [3]byte{204, 249, 84}: "Avaya Inc",
- [3]byte{204, 249, 87}: "u-blox AG",
- [3]byte{204, 249, 232}: "Samsung Electronics Co.,Ltd",
- [3]byte{204, 250, 0}: "LG Electronics (Mobile Communications)",
- [3]byte{204, 251, 101}: "Nintendo Co., Ltd.",
- [3]byte{204, 252, 109}: "RIZ TRANSMITTERS",
- [3]byte{204, 252, 177}: "Wireless Technology, Inc.",
- [3]byte{204, 253, 23}: "TCT mobile ltd",
- [3]byte{204, 254, 60}: "Samsung Electronics Co.,Ltd",
- [3]byte{208, 3, 75}: "Apple, Inc.",
- [3]byte{208, 4, 1}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{208, 4, 146}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{208, 5, 42}: "Arcadyan Corporation",
- [3]byte{208, 7, 144}: "Texas Instruments",
- [3]byte{208, 7, 202}: "Juniper Networks",
- [3]byte{208, 10, 171}: "Yokogawa Digital Computer Corporation",
- [3]byte{208, 14, 164}: "Porsche Cars North America",
- [3]byte{208, 14, 217}: "Taicang T&W Electronics",
- [3]byte{208, 15, 109}: "T&W Electronics Company",
- [3]byte{208, 18, 66}: "BIOS Corporation",
- [3]byte{208, 19, 30}: "Sunrex Technology Corp",
- [3]byte{208, 19, 253}: "LG Electronics (Mobile Communications)",
- [3]byte{208, 21, 74}: "zte corporation",
- [3]byte{208, 23, 106}: "Samsung Electronics Co.,Ltd",
- [3]byte{208, 23, 194}: "ASUSTek COMPUTER INC.",
- [3]byte{208, 26, 167}: "UniPrint",
- [3]byte{208, 28, 187}: "Beijing Ctimes Digital Technology Co., Ltd.",
- [3]byte{208, 34, 18}: "IEEE Registration Authority",
- [3]byte{208, 34, 190}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{208, 35, 219}: "Apple, Inc.",
- [3]byte{208, 37, 22}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{208, 37, 68}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{208, 37, 152}: "Apple, Inc.",
- [3]byte{208, 39, 136}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{208, 44, 69}: "littleBits Electronics, Inc.",
- [3]byte{208, 45, 179}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{208, 49, 16}: "Ingenic Semiconductor Co.,Ltd",
- [3]byte{208, 49, 105}: "Samsung Electronics Co.,Ltd",
- [3]byte{208, 51, 17}: "Apple, Inc.",
- [3]byte{208, 55, 66}: "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
- [3]byte{208, 55, 97}: "Texas Instruments",
- [3]byte{208, 57, 114}: "Texas Instruments",
- [3]byte{208, 57, 179}: "ARRIS Group, Inc.",
- [3]byte{208, 61, 195}: "AQ Corporation",
- [3]byte{208, 62, 92}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{208, 67, 30}: "Dell Inc.",
- [3]byte{208, 70, 220}: "Southwest Research Institute",
- [3]byte{208, 72, 243}: "DATTUS Inc",
- [3]byte{208, 73, 139}: "ZOOM SERVER",
- [3]byte{208, 76, 193}: "SINTRONES Technology Corp.",
- [3]byte{208, 77, 44}: "Roku, Inc.",
- [3]byte{208, 79, 126}: "Apple, Inc.",
- [3]byte{208, 80, 153}: "ASRock Incorporation",
- [3]byte{208, 81, 98}: "Sony Mobile Communications AB",
- [3]byte{208, 82, 168}: "Physical Graph Corporation",
- [3]byte{208, 83, 73}: "Liteon Technology Corporation",
- [3]byte{208, 84, 45}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{208, 85, 178}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{208, 87, 76}: "Cisco Systems, Inc",
- [3]byte{208, 87, 123}: "Intel Corporate",
- [3]byte{208, 87, 133}: "Pantech Co., Ltd.",
- [3]byte{208, 87, 161}: "Werma Signaltechnik GmbH & Co. KG",
- [3]byte{208, 88, 117}: "Active Control Technology Inc.",
- [3]byte{208, 88, 168}: "zte corporation",
- [3]byte{208, 89, 149}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{208, 89, 195}: "CeraMicro Technology Corporation",
- [3]byte{208, 89, 228}: "Samsung Electronics Co.,Ltd",
- [3]byte{208, 90, 0}: "Technicolor CH USA Inc.",
- [3]byte{208, 90, 15}: "I-BT DIGITAL CO.,LTD",
- [3]byte{208, 90, 241}: "Shenzhen Pulier Tech CO.,Ltd",
- [3]byte{208, 91, 168}: "zte corporation",
- [3]byte{208, 92, 122}: "Sartura d.o.o.",
- [3]byte{208, 95, 184}: "Texas Instruments",
- [3]byte{208, 95, 206}: "Hitachi Data Systems",
- [3]byte{208, 96, 140}: "zte corporation",
- [3]byte{208, 98, 160}: "China Essence Technology (Zhumadian) Co., Ltd.",
- [3]byte{208, 99, 77}: "Meiko Maschinenbau GmbH &amp; Co. KG",
- [3]byte{208, 99, 180}: "SolidRun Ltd.",
- [3]byte{208, 101, 202}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{208, 102, 109}: "Shenzhen Bus-Lan Technology Co., Ltd.",
- [3]byte{208, 102, 123}: "Samsung Electronics Co.,Ltd",
- [3]byte{208, 103, 38}: "Hewlett Packard Enterprise",
- [3]byte{208, 103, 229}: "Dell Inc.",
- [3]byte{208, 105, 158}: "LUMINEX Lighting Control Equipment",
- [3]byte{208, 105, 208}: "Verto Medical Solutions, LLC",
- [3]byte{208, 106, 31}: "BSE CO.,LTD.",
- [3]byte{208, 111, 74}: "TOPWELL INTERNATIONAL HOLDINGS LIMITED",
- [3]byte{208, 111, 130}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{208, 113, 196}: "zte corporation",
- [3]byte{208, 114, 220}: "Cisco Systems, Inc",
- [3]byte{208, 115, 127}: "Mini-Circuits",
- [3]byte{208, 115, 142}: "DONG OH PRECISION CO., LTD.",
- [3]byte{208, 115, 213}: "LIFI LABS MANAGEMENT PTY LTD",
- [3]byte{208, 117, 190}: "Reno A&E",
- [3]byte{208, 118, 80}: "IEEE Registration Authority",
- [3]byte{208, 122, 181}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{208, 124, 45}: "Leie IOT technology Co., Ltd",
- [3]byte{208, 125, 229}: "Forward Pay Systems, Inc.",
- [3]byte{208, 126, 40}: "Hewlett Packard",
- [3]byte{208, 126, 53}: "Intel Corporate",
- [3]byte{208, 127, 196}: "Ou Wei Technology Co.,Ltd. of Shenzhen City",
- [3]byte{208, 131, 212}: "Xtel Wireless ApS",
- [3]byte{208, 132, 176}: "Sagemcom Broadband SAS",
- [3]byte{208, 135, 226}: "Samsung Electronics Co.,Ltd",
- [3]byte{208, 137, 153}: "APCON, Inc.",
- [3]byte{208, 138, 85}: "Skullcandy",
- [3]byte{208, 139, 126}: "Passif Semiconductor",
- [3]byte{208, 140, 181}: "Texas Instruments",
- [3]byte{208, 140, 255}: "UPWIS AB",
- [3]byte{208, 146, 158}: "Microsoft Corporation",
- [3]byte{208, 147, 128}: "Ducere Technologies Pvt. Ltd.",
- [3]byte{208, 147, 248}: "Stonestreet One LLC",
- [3]byte{208, 148, 102}: "Dell Inc.",
- [3]byte{208, 149, 199}: "Pantech Co., Ltd.",
- [3]byte{208, 150, 251}: "DASAN Network Solutions",
- [3]byte{208, 153, 213}: "Alcatel-Lucent",
- [3]byte{208, 155, 5}: "Emtronix",
- [3]byte{208, 156, 48}: "Foster Electric Company, Limited",
- [3]byte{208, 157, 10}: "LINKCOM",
- [3]byte{208, 157, 171}: "TCT mobile ltd",
- [3]byte{208, 160, 214}: "Chengdu TD Tech Ltd.",
- [3]byte{208, 163, 17}: "Neuberger Gebäudeautomation GmbH",
- [3]byte{208, 164, 177}: "Sonifex Ltd.",
- [3]byte{208, 165, 166}: "Cisco Systems, Inc",
- [3]byte{208, 166, 55}: "Apple, Inc.",
- [3]byte{208, 174, 236}: "Alpha Networks Inc.",
- [3]byte{208, 175, 182}: "Linktop Technology Co., LTD",
- [3]byte{208, 176, 205}: "Moen",
- [3]byte{208, 177, 40}: "Samsung Electronics Co.,Ltd",
- [3]byte{208, 178, 196}: "Technicolor CH USA Inc.",
- [3]byte{208, 179, 63}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{208, 180, 152}: "Robert Bosch LLC Automotive Electronics",
- [3]byte{208, 181, 35}: "Bestcare Cloucal Corp.",
- [3]byte{208, 181, 61}: "SEPRO ROBOTIQUE",
- [3]byte{208, 181, 194}: "Texas Instruments",
- [3]byte{208, 186, 228}: "Shanghai MXCHIP Information Technology Co., Ltd.",
- [3]byte{208, 187, 128}: "SHL Telemedicine International Ltd.",
- [3]byte{208, 189, 1}: "DS International",
- [3]byte{208, 190, 44}: "CNSLink Co., Ltd.",
- [3]byte{208, 191, 156}: "Hewlett Packard",
- [3]byte{208, 192, 191}: "Actions Microelectronics Co., Ltd",
- [3]byte{208, 193, 147}: "SKYBELL, INC",
- [3]byte{208, 193, 177}: "Samsung Electronics Co.,Ltd",
- [3]byte{208, 194, 130}: "Cisco Systems, Inc",
- [3]byte{208, 196, 47}: "Tamagawa Seiki Co.,Ltd.",
- [3]byte{208, 197, 243}: "Apple, Inc.",
- [3]byte{208, 199, 137}: "Cisco Systems, Inc",
- [3]byte{208, 199, 192}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{208, 205, 225}: "Scientech Electronics",
- [3]byte{208, 207, 94}: "Energy Micro AS",
- [3]byte{208, 208, 75}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{208, 208, 253}: "Cisco Systems, Inc",
- [3]byte{208, 210, 18}: "K2NET Co.,Ltd.",
- [3]byte{208, 210, 134}: "Beckman Coulter K.K.",
- [3]byte{208, 210, 176}: "Apple, Inc.",
- [3]byte{208, 211, 252}: "Mios, Ltd.",
- [3]byte{208, 212, 18}: "ADB Broadband Italia",
- [3]byte{208, 212, 113}: "MVTECH co., Ltd",
- [3]byte{208, 214, 204}: "Wintop",
- [3]byte{208, 217, 79}: "IEEE Registration Authority",
- [3]byte{208, 219, 50}: "Nokia Corporation",
- [3]byte{208, 223, 154}: "Liteon Technology Corporation",
- [3]byte{208, 223, 178}: "Genie Networks Limited",
- [3]byte{208, 223, 199}: "Samsung Electronics Co.,Ltd",
- [3]byte{208, 225, 64}: "Apple, Inc.",
- [3]byte{208, 227, 71}: "Yoga",
- [3]byte{208, 228, 11}: "Wearable Inc.",
- [3]byte{208, 228, 74}: "Murata Manufacturing Co., Ltd.",
- [3]byte{208, 229, 77}: "ARRIS Group, Inc.",
- [3]byte{208, 231, 130}: "AzureWave Technology Inc.",
- [3]byte{208, 235, 3}: "Zhehua technology limited",
- [3]byte{208, 235, 158}: "Seowoo Inc.",
- [3]byte{208, 240, 219}: "Ericsson",
- [3]byte{208, 242, 127}: "SteadyServ Technoligies, LLC",
- [3]byte{208, 247, 59}: "Helmut Mauell GmbH Werk Weida",
- [3]byte{208, 248, 140}: "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.",
- [3]byte{208, 250, 29}: "Qihoo 360 Technology Co.,Ltd",
- [3]byte{208, 252, 204}: "Samsung Electronics Co.,Ltd",
- [3]byte{208, 255, 80}: "Texas Instruments",
- [3]byte{208, 255, 152}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{212, 0, 13}: "Phoenix Broadband Technologies, LLC.",
- [3]byte{212, 0, 87}: "MC Technologies GmbH",
- [3]byte{212, 1, 41}: "Broadcom",
- [3]byte{212, 1, 109}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{212, 2, 74}: "Delphian Systems LLC",
- [3]byte{212, 4, 205}: "ARRIS Group, Inc.",
- [3]byte{212, 4, 255}: "Juniper Networks",
- [3]byte{212, 5, 152}: "ARRIS Group, Inc.",
- [3]byte{212, 10, 169}: "ARRIS Group, Inc.",
- [3]byte{212, 11, 26}: "HTC Corporation",
- [3]byte{212, 11, 185}: "Solid Semecs bv.",
- [3]byte{212, 15, 178}: "Applied Micro Electronics AME bv",
- [3]byte{212, 16, 144}: "iNFORM Systems AG",
- [3]byte{212, 16, 207}: "Huanshun Network Science and Technology Co., Ltd.",
- [3]byte{212, 17, 214}: "ShotSpotter, Inc.",
- [3]byte{212, 18, 150}: "Anobit Technologies Ltd.",
- [3]byte{212, 18, 187}: "Quadrant Components Inc. Ltd",
- [3]byte{212, 19, 111}: "Asia Pacific Brands",
- [3]byte{212, 26, 63}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{212, 28, 28}: "RCF S.P.A.",
- [3]byte{212, 29, 113}: "Palo Alto Networks",
- [3]byte{212, 30, 53}: "TOHO Electronics INC.",
- [3]byte{212, 31, 12}: "JAI Oy",
- [3]byte{212, 32, 109}: "HTC Corporation",
- [3]byte{212, 33, 34}: "Sercomm Corporation",
- [3]byte{212, 34, 63}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{212, 34, 78}: "Alcatel Lucent",
- [3]byte{212, 37, 139}: "Intel Corporate",
- [3]byte{212, 39, 81}: "Infopia Co., Ltd",
- [3]byte{212, 40, 178}: "ioBridge, Inc.",
- [3]byte{212, 40, 213}: "TCT mobile ltd",
- [3]byte{212, 41, 234}: "Zimory GmbH",
- [3]byte{212, 44, 15}: "ARRIS Group, Inc.",
- [3]byte{212, 44, 61}: "Sky Light Digital Limited",
- [3]byte{212, 44, 68}: "Cisco Systems, Inc",
- [3]byte{212, 47, 35}: "Akenori PTE Ltd",
- [3]byte{212, 49, 157}: "Sinwatec",
- [3]byte{212, 50, 102}: "Fike Corporation",
- [3]byte{212, 54, 57}: "Texas Instruments",
- [3]byte{212, 54, 219}: "Jiangsu Toppower Automotive Electronics Co., Ltd",
- [3]byte{212, 55, 215}: "zte corporation",
- [3]byte{212, 56, 156}: "Sony Mobile Communications AB",
- [3]byte{212, 58, 101}: "IGRS Engineering Lab Ltd.",
- [3]byte{212, 58, 233}: "DONGGUAN ipt INDUSTRIAL CO., LTD",
- [3]byte{212, 61, 103}: "Carma Industries Inc.",
- [3]byte{212, 61, 126}: "Micro-Star Int'l Co, Ltd",
- [3]byte{212, 64, 240}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{212, 65, 101}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{212, 67, 168}: "Changzhou Haojie Electric Co., Ltd.",
- [3]byte{212, 69, 232}: "Jiangxi Hongpai Technology Co., Ltd.",
- [3]byte{212, 75, 94}: "TAIYO YUDEN CO., LTD.",
- [3]byte{212, 76, 36}: "Vuppalamritha Magnetic Components LTD",
- [3]byte{212, 76, 156}: "Shenzhen YOOBAO Technology Co.Ltd",
- [3]byte{212, 76, 167}: "Informtekhnika & Communication, LLC",
- [3]byte{212, 79, 128}: "Kemper Digital GmbH",
- [3]byte{212, 80, 63}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{212, 80, 122}: "CEIVA Logic, Inc",
- [3]byte{212, 82, 42}: "TangoWiFi.com",
- [3]byte{212, 82, 81}: "IBT Ingenieurbureau Broennimann Thun",
- [3]byte{212, 82, 151}: "nSTREAMS Technologies, Inc.",
- [3]byte{212, 83, 175}: "VIGO System S.A.",
- [3]byte{212, 85, 86}: "Fiber Mountain Inc.",
- [3]byte{212, 85, 190}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{212, 90, 178}: "Galleon Systems",
- [3]byte{212, 92, 112}: "Wi-Fi Alliance",
- [3]byte{212, 93, 66}: "Nokia Corporation",
- [3]byte{212, 93, 223}: "PEGATRON CORPORATION",
- [3]byte{212, 95, 37}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{212, 97, 46}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{212, 97, 50}: "Pro Concept Manufacturer Co.,Ltd.",
- [3]byte{212, 97, 157}: "Apple, Inc.",
- [3]byte{212, 97, 254}: "Hangzhou H3C Technologies Co., Limited",
- [3]byte{212, 99, 198}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{212, 99, 254}: "Arcadyan Corporation",
- [3]byte{212, 100, 247}: "CHENGDU USEE DIGITAL TECHNOLOGY CO., LTD",
- [3]byte{212, 102, 168}: "Riedo Networks GmbH",
- [3]byte{212, 103, 97}: "SAHAB TECHNOLOGY",
- [3]byte{212, 103, 231}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{212, 104, 77}: "Ruckus Wireless",
- [3]byte{212, 104, 103}: "Neoventus Design Group",
- [3]byte{212, 104, 186}: "Shenzhen Sundray Technologies Company Limited",
- [3]byte{212, 106, 106}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{212, 106, 145}: "Snap AV",
- [3]byte{212, 106, 168}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{212, 108, 191}: "Goodrich ISR",
- [3]byte{212, 108, 218}: "CSM GmbH",
- [3]byte{212, 109, 80}: "Cisco Systems, Inc",
- [3]byte{212, 110, 14}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{212, 110, 92}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{212, 111, 66}: "WAXESS USA Inc",
- [3]byte{212, 114, 8}: "Bragi GmbH",
- [3]byte{212, 118, 234}: "zte corporation",
- [3]byte{212, 120, 86}: "Avaya Inc",
- [3]byte{212, 121, 195}: "Cameronet GmbH & Co. KG",
- [3]byte{212, 122, 226}: "Samsung Electronics Co.,Ltd",
- [3]byte{212, 123, 53}: "NEO Monitors AS",
- [3]byte{212, 123, 117}: "HARTING Electronics GmbH",
- [3]byte{212, 123, 176}: "ASKEY COMPUTER CORP",
- [3]byte{212, 125, 252}: "TECNO MOBILE LIMITED",
- [3]byte{212, 129, 202}: "iDevices, LLC",
- [3]byte{212, 129, 215}: "Dell Inc.",
- [3]byte{212, 130, 62}: "Argosy Technologies, Ltd.",
- [3]byte{212, 131, 4}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{212, 133, 100}: "Hewlett Packard",
- [3]byte{212, 135, 216}: "Samsung Electronics Co.,Ltd",
- [3]byte{212, 136, 63}: "HDPRO CO., LTD.",
- [3]byte{212, 136, 144}: "Samsung Electronics Co.,Ltd",
- [3]byte{212, 140, 181}: "Cisco Systems, Inc",
- [3]byte{212, 141, 217}: "Meld Technology, Inc",
- [3]byte{212, 143, 51}: "Microsoft Corporation",
- [3]byte{212, 143, 170}: "Sogecam Industrial, S.A.",
- [3]byte{212, 144, 224}: "Topcon Electronics GmbH & Co. KG",
- [3]byte{212, 145, 175}: "Electroacustica General Iberica, S.A.",
- [3]byte{212, 147, 152}: "Nokia Corporation",
- [3]byte{212, 147, 160}: "Fidelix Oy",
- [3]byte{212, 148, 90}: "COSMO CO., LTD",
- [3]byte{212, 148, 161}: "Texas Instruments",
- [3]byte{212, 148, 232}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{212, 149, 36}: "Clover Network, Inc.",
- [3]byte{212, 150, 223}: "SUNGJIN C&T CO.,LTD",
- [3]byte{212, 151, 11}: "Xiaomi Communications Co Ltd",
- [3]byte{212, 154, 32}: "Apple, Inc.",
- [3]byte{212, 155, 92}: "Chongqing Miedu Technology Co., Ltd.",
- [3]byte{212, 156, 40}: "JayBird LLC",
- [3]byte{212, 156, 142}: "University of FUKUI",
- [3]byte{212, 158, 109}: "Wuhan Zhongyuan Huadian Science & Technology Co.,",
- [3]byte{212, 160, 42}: "Cisco Systems, Inc",
- [3]byte{212, 161, 72}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{212, 164, 37}: "SMAX Technology Co., Ltd.",
- [3]byte{212, 164, 153}: "InView Technology Corporation",
- [3]byte{212, 169, 40}: "GreenWave Reality Inc",
- [3]byte{212, 170, 255}: "MICRO WORLD",
- [3]byte{212, 172, 78}: "BODi rS, LLC",
- [3]byte{212, 173, 45}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{212, 174, 5}: "Samsung Electronics Co.,Ltd",
- [3]byte{212, 174, 82}: "Dell Inc.",
- [3]byte{212, 177, 16}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{212, 177, 105}: "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited",
- [3]byte{212, 178, 122}: "ARRIS Group, Inc.",
- [3]byte{212, 180, 62}: "Messcomp Datentechnik GmbH",
- [3]byte{212, 184, 255}: "Home Control Singapore Pte Ltd",
- [3]byte{212, 190, 217}: "Dell Inc.",
- [3]byte{212, 191, 45}: "SE Controls Asia Pacific Ltd",
- [3]byte{212, 191, 127}: "UPVEL",
- [3]byte{212, 193, 200}: "zte corporation",
- [3]byte{212, 193, 252}: "Nokia Corporation",
- [3]byte{212, 199, 102}: "Acentic GmbH",
- [3]byte{212, 200, 176}: "Prime Electronics & Satellitics Inc.",
- [3]byte{212, 201, 178}: "Quanergy Systems Inc",
- [3]byte{212, 201, 239}: "Hewlett Packard",
- [3]byte{212, 202, 109}: "Routerboard.com",
- [3]byte{212, 202, 110}: "u-blox AG",
- [3]byte{212, 203, 175}: "Nokia Corporation",
- [3]byte{212, 206, 184}: "Enatel LTD",
- [3]byte{212, 207, 55}: "Symbolic IO",
- [3]byte{212, 207, 249}: "Shenzhen Sen5 Technology Co., Ltd.",
- [3]byte{212, 209, 132}: "ADB Broadband Italia",
- [3]byte{212, 210, 73}: "Power Ethernet",
- [3]byte{212, 210, 229}: "BKAV Corporation",
- [3]byte{212, 213, 13}: "Southwest Microwave, Inc",
- [3]byte{212, 215, 72}: "Cisco Systems, Inc",
- [3]byte{212, 215, 169}: "Shanghai Kaixiang Info Tech LTD",
- [3]byte{212, 216, 152}: "Korea CNO Tech Co., Ltd",
- [3]byte{212, 217, 25}: "GoPro",
- [3]byte{212, 220, 205}: "Apple, Inc.",
- [3]byte{212, 223, 87}: "Alpinion Medical Systems",
- [3]byte{212, 224, 142}: "ValueHD Corporation",
- [3]byte{212, 227, 44}: "S. Siedle & Sohne",
- [3]byte{212, 227, 63}: "Nokia",
- [3]byte{212, 232, 178}: "Samsung Electronics Co.,Ltd",
- [3]byte{212, 233, 11}: "CVT CO.,LTD",
- [3]byte{212, 234, 14}: "Avaya Inc",
- [3]byte{212, 236, 12}: "Harley-Davidson Motor Company",
- [3]byte{212, 236, 134}: "LinkedHope Intelligent Technologies Co., Ltd",
- [3]byte{212, 238, 7}: "HIWIFI Co., Ltd.",
- [3]byte{212, 240, 39}: "Navetas Energy Management",
- [3]byte{212, 240, 180}: "Napco Security Technologies",
- [3]byte{212, 241, 67}: "IPROAD.,Inc",
- [3]byte{212, 242, 7}: "DIAODIAO(Beijing)Technology CO.,Ltd",
- [3]byte{212, 244, 111}: "Apple, Inc.",
- [3]byte{212, 244, 190}: "Palo Alto Networks",
- [3]byte{212, 245, 19}: "Texas Instruments",
- [3]byte{212, 246, 63}: "IEA S.R.L.",
- [3]byte{212, 249, 161}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{216, 0, 77}: "Apple, Inc.",
- [3]byte{216, 5, 46}: "Skyviia Corporation",
- [3]byte{216, 6, 209}: "Honeywell Fire System (Shanghai) Co,. Ltd.",
- [3]byte{216, 8, 49}: "Samsung Electronics Co.,Ltd",
- [3]byte{216, 8, 245}: "Arcadia Networks Co. Ltd.",
- [3]byte{216, 9, 195}: "Cercacor Labs",
- [3]byte{216, 12, 207}: "C.G.V. S.A.S.",
- [3]byte{216, 13, 227}: "FXI TECHNOLOGIES AS",
- [3]byte{216, 15, 153}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{216, 20, 214}: "SURE SYSTEM Co Ltd",
- [3]byte{216, 21, 13}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{216, 22, 10}: "Nippon Electro-Sensory Devices",
- [3]byte{216, 22, 193}: "DEWAV (HK) ELECTRONICS LIMITED",
- [3]byte{216, 24, 43}: "Conti Temic Microelectronic GmbH",
- [3]byte{216, 25, 122}: "Nuheara Ltd",
- [3]byte{216, 25, 206}: "Telesquare",
- [3]byte{216, 27, 254}: "TWINLINX CORPORATION",
- [3]byte{216, 28, 20}: "Compacta International, Ltd.",
- [3]byte{216, 29, 114}: "Apple, Inc.",
- [3]byte{216, 30, 222}: "B&W Group Ltd",
- [3]byte{216, 31, 204}: "Brocade Communications Systems, Inc.",
- [3]byte{216, 32, 159}: "Cubro Acronet GesmbH",
- [3]byte{216, 34, 244}: "Avnet Silica",
- [3]byte{216, 36, 189}: "Cisco Systems, Inc",
- [3]byte{216, 37, 34}: "ARRIS Group, Inc.",
- [3]byte{216, 37, 176}: "Rockeetech Systems Co.,Ltd.",
- [3]byte{216, 38, 185}: "Guangdong Coagent Electronics S&amp;T Co.,Ltd.",
- [3]byte{216, 39, 12}: "MaxTronic International Co., Ltd.",
- [3]byte{216, 40, 201}: "General Electric Consumer and Industrial",
- [3]byte{216, 41, 22}: "Ascent Communication Technology",
- [3]byte{216, 41, 134}: "Best Wish Technology LTD",
- [3]byte{216, 42, 21}: "Leitner SpA",
- [3]byte{216, 42, 126}: "Nokia Corporation",
- [3]byte{216, 45, 155}: "Shenzhen G.Credit Communication Technology Co., Ltd",
- [3]byte{216, 45, 225}: "Tricascade Inc.",
- [3]byte{216, 48, 98}: "Apple, Inc.",
- [3]byte{216, 49, 207}: "Samsung Electronics Co.,Ltd",
- [3]byte{216, 50, 20}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{216, 50, 90}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{216, 51, 127}: "Office FA.com Co.,Ltd.",
- [3]byte{216, 55, 190}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{216, 56, 13}: "SHENZHEN IP-COM Network Co.,Ltd",
- [3]byte{216, 56, 252}: "Ruckus Wireless",
- [3]byte{216, 60, 105}: "Shenzhen TINNO Mobile Technology Corp.",
- [3]byte{216, 66, 172}: "Shanghai Feixun Communication Co.,Ltd.",
- [3]byte{216, 66, 226}: "Canary Connect, Inc.",
- [3]byte{216, 67, 237}: "Suzuken",
- [3]byte{216, 69, 43}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{216, 70, 6}: "Silicon Valley Global Marketing",
- [3]byte{216, 71, 16}: "Sichuan Changhong Electric Ltd.",
- [3]byte{216, 72, 238}: "Hangzhou Xueji Technology Co., Ltd.",
- [3]byte{216, 73, 11}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{216, 73, 47}: "CANON INC.",
- [3]byte{216, 74, 135}: "OI ELECTRIC CO.,LTD",
- [3]byte{216, 75, 42}: "Cognitas Technologies, Inc.",
- [3]byte{216, 79, 184}: "LG ELECTRONICS",
- [3]byte{216, 80, 230}: "ASUSTek COMPUTER INC.",
- [3]byte{216, 84, 58}: "Texas Instruments",
- [3]byte{216, 84, 162}: "Aerohive Networks Inc.",
- [3]byte{216, 85, 163}: "zte corporation",
- [3]byte{216, 87, 239}: "Samsung Electronics Co.,Ltd",
- [3]byte{216, 88, 215}: "CZ.NIC, z.s.p.o.",
- [3]byte{216, 91, 42}: "Samsung Electronics Co.,Ltd",
- [3]byte{216, 93, 76}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{216, 93, 132}: "CAx soft GmbH",
- [3]byte{216, 93, 226}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{216, 93, 239}: "Busch-Jaeger Elektro GmbH",
- [3]byte{216, 93, 251}: "Private",
- [3]byte{216, 96, 176}: "bioMérieux Italia S.p.A.",
- [3]byte{216, 96, 179}: "Guangdong Global Electronic Technology CO.,LTD",
- [3]byte{216, 97, 98}: "Wistron Neweb Corporation",
- [3]byte{216, 97, 148}: "Objetivos y Sevicios de Valor Añadido",
- [3]byte{216, 98, 219}: "Eno Inc.",
- [3]byte{216, 99, 117}: "Xiaomi Communications Co Ltd",
- [3]byte{216, 101, 149}: "Toy's Myth Inc.",
- [3]byte{216, 102, 198}: "Shenzhen Daystar Technology Co.,ltd",
- [3]byte{216, 102, 238}: "BOXIN COMMUNICATION CO.,LTD.",
- [3]byte{216, 103, 217}: "Cisco Systems, Inc",
- [3]byte{216, 105, 96}: "Steinsvik",
- [3]byte{216, 107, 247}: "Nintendo Co., Ltd.",
- [3]byte{216, 108, 2}: "Huaqin Telecom Technology Co.,Ltd",
- [3]byte{216, 108, 99}: "Google, Inc.",
- [3]byte{216, 108, 233}: "Sagemcom Broadband SAS",
- [3]byte{216, 113, 87}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{216, 116, 149}: "zte corporation",
- [3]byte{216, 117, 51}: "Nokia Corporation",
- [3]byte{216, 118, 10}: "Escort, Inc.",
- [3]byte{216, 120, 229}: "KUHN SA",
- [3]byte{216, 121, 136}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{216, 124, 221}: "SANIX INCORPORATED",
- [3]byte{216, 126, 177}: "x.o.ware, inc.",
- [3]byte{216, 128, 57}: "Microchip Technology Inc.",
- [3]byte{216, 128, 60}: "Anhui Huami Information Technology Company Limited",
- [3]byte{216, 129, 206}: "AHN INC.",
- [3]byte{216, 132, 102}: "Extreme Networks, Inc.",
- [3]byte{216, 135, 213}: "Leadcore Technology CO.,LTD",
- [3]byte{216, 136, 206}: "RF Technology Pty Ltd",
- [3]byte{216, 138, 59}: "UNIT-EM",
- [3]byte{216, 139, 76}: "KingTing Tech.",
- [3]byte{216, 141, 92}: "Elentec",
- [3]byte{216, 143, 118}: "Apple, Inc.",
- [3]byte{216, 144, 232}: "Samsung Electronics Co.,Ltd",
- [3]byte{216, 147, 65}: "General Electric Global Research",
- [3]byte{216, 148, 3}: "Hewlett Packard Enterprise",
- [3]byte{216, 149, 47}: "Texas Instruments",
- [3]byte{216, 150, 133}: "GoPro",
- [3]byte{216, 150, 149}: "Apple, Inc.",
- [3]byte{216, 150, 224}: "Alibaba Cloud Computing Ltd.",
- [3]byte{216, 151, 59}: "Artesyn Embedded Technologies",
- [3]byte{216, 151, 96}: "C2 Development, Inc.",
- [3]byte{216, 151, 124}: "Grey Innovation",
- [3]byte{216, 151, 186}: "PEGATRON CORPORATION",
- [3]byte{216, 154, 52}: "Beijing SHENQI Technology Co., Ltd.",
- [3]byte{216, 157, 103}: "Hewlett Packard",
- [3]byte{216, 157, 185}: "eMegatech International Corp.",
- [3]byte{216, 158, 63}: "Apple, Inc.",
- [3]byte{216, 158, 243}: "Dell Inc.",
- [3]byte{216, 160, 29}: "Espressif Inc.",
- [3]byte{216, 161, 5}: "Syslane, Co., Ltd.",
- [3]byte{216, 162, 94}: "Apple, Inc.",
- [3]byte{216, 165, 52}: "Spectronix Corporation",
- [3]byte{216, 173, 221}: "Sonavation, Inc.",
- [3]byte{216, 174, 144}: "Itibia Technologies",
- [3]byte{216, 175, 59}: "Hangzhou Bigbright Integrated communications system Co.,Ltd",
- [3]byte{216, 175, 241}: "Panasonic Appliances Company",
- [3]byte{216, 176, 46}: "Guangzhou Zonerich Business Machine Co., LTD.",
- [3]byte{216, 176, 76}: "Jinan USR IOT Technology Co., Ltd.",
- [3]byte{216, 177, 34}: "Juniper Networks",
- [3]byte{216, 177, 42}: "Panasonic Mobile Communications Co.,Ltd.",
- [3]byte{216, 177, 144}: "Cisco Systems, Inc",
- [3]byte{216, 179, 119}: "HTC Corporation",
- [3]byte{216, 182, 183}: "Comtrend Corporation",
- [3]byte{216, 182, 193}: "NetworkAccountant, Inc.",
- [3]byte{216, 182, 214}: "Blu Tether Limited",
- [3]byte{216, 184, 246}: "Nantworks",
- [3]byte{216, 185, 14}: "Triple Domain Vision Co.,Ltd.",
- [3]byte{216, 187, 44}: "Apple, Inc.",
- [3]byte{216, 191, 76}: "Victory Concept Electronics Limited",
- [3]byte{216, 192, 104}: "Netgenetech.co.,ltd.",
- [3]byte{216, 192, 106}: "Hunantv.com Interactive Entertainment Media Co.,Ltd.",
- [3]byte{216, 195, 251}: "DETRACOM",
- [3]byte{216, 196, 106}: "Murata Manufacturing Co., Ltd.",
- [3]byte{216, 196, 151}: "Quanta Computer Inc.",
- [3]byte{216, 196, 233}: "Samsung Electronics Co.,Ltd",
- [3]byte{216, 198, 145}: "Hichan Technology Corp.",
- [3]byte{216, 199, 113}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{216, 199, 200}: "Aruba Networks",
- [3]byte{216, 200, 233}: "Phicomm (Shanghai) Co., Ltd.",
- [3]byte{216, 201, 157}: "EA DISPLAY LIMITED",
- [3]byte{216, 203, 138}: "Micro-Star INTL CO., LTD.",
- [3]byte{216, 207, 156}: "Apple, Inc.",
- [3]byte{216, 209, 203}: "Apple, Inc.",
- [3]byte{216, 210, 124}: "JEMA ENERGY, SA",
- [3]byte{216, 211, 133}: "Hewlett Packard",
- [3]byte{216, 212, 60}: "Sony Corporation",
- [3]byte{216, 213, 185}: "Rainforest Automation, Inc.",
- [3]byte{216, 214, 126}: "GSK CNC EQUIPMENT CO.,LTD",
- [3]byte{216, 215, 35}: "IDS, Inc",
- [3]byte{216, 216, 102}: "SHENZHEN TOZED TECHNOLOGIES CO.,LTD.",
- [3]byte{216, 218, 82}: "APATOR S.A.",
- [3]byte{216, 220, 233}: "Kunshan Erlab ductless filtration system Co.,Ltd",
- [3]byte{216, 221, 95}: "BALMUDA Inc.",
- [3]byte{216, 221, 253}: "Texas Instruments",
- [3]byte{216, 222, 206}: "ISUNG CO.,LTD",
- [3]byte{216, 223, 13}: "beroNet GmbH",
- [3]byte{216, 223, 122}: "Quest Software, Inc.",
- [3]byte{216, 224, 4}: "Vodia Networks Inc",
- [3]byte{216, 224, 184}: "BULAT LLC",
- [3]byte{216, 224, 225}: "Samsung Electronics Co.,Ltd",
- [3]byte{216, 227, 174}: "CIRTEC MEDICAL SYSTEMS",
- [3]byte{216, 229, 109}: "TCT mobile ltd",
- [3]byte{216, 231, 43}: "NetScout Systems, Inc.",
- [3]byte{216, 231, 67}: "Wush, Inc",
- [3]byte{216, 233, 82}: "KEOPSYS",
- [3]byte{216, 235, 151}: "TRENDnet, Inc.",
- [3]byte{216, 237, 28}: "Magna Technology SL",
- [3]byte{216, 238, 120}: "Moog Protokraft",
- [3]byte{216, 239, 205}: "Nokia",
- [3]byte{216, 240, 242}: "Zeebo Inc",
- [3]byte{216, 241, 240}: "Pepxim International Limited",
- [3]byte{216, 247, 16}: "Libre Wireless Technologies Inc.",
- [3]byte{216, 251, 17}: "AXACORE",
- [3]byte{216, 251, 94}: "ASKEY COMPUTER CORP",
- [3]byte{216, 251, 104}: "Cloud Corner Ltd.",
- [3]byte{216, 252, 56}: "Giantec Semiconductor Inc",
- [3]byte{216, 252, 147}: "Intel Corporate",
- [3]byte{216, 254, 143}: "IDFone Co., Ltd.",
- [3]byte{216, 254, 227}: "D-Link International",
- [3]byte{220, 0, 119}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{220, 2, 101}: "Meditech Kft",
- [3]byte{220, 2, 142}: "zte corporation",
- [3]byte{220, 5, 47}: "National Products Inc.",
- [3]byte{220, 5, 117}: "SIEMENS ENERGY AUTOMATION",
- [3]byte{220, 5, 237}: "Nabtesco Corporation",
- [3]byte{220, 7, 193}: "HangZhou QiYang Technology Co.,Ltd.",
- [3]byte{220, 8, 86}: "Alcatel-Lucent Enterprise",
- [3]byte{220, 9, 20}: "Talk-A-Phone Co.",
- [3]byte{220, 9, 76}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{220, 11, 26}: "ADB Broadband Italia",
- [3]byte{220, 11, 52}: "LG Electronics (Mobile Communications)",
- [3]byte{220, 12, 45}: "WEIFANG GOERTEK ELECTRONICS CO.,LTD",
- [3]byte{220, 12, 92}: "Apple, Inc.",
- [3]byte{220, 13, 48}: "Shenzhen Feasycom Technology Co., Ltd.",
- [3]byte{220, 14, 161}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{220, 21, 219}: "Ge Ruili Intelligent Technology ( Beijing ) Co., Ltd.",
- [3]byte{220, 22, 162}: "Medtronic Diabetes",
- [3]byte{220, 23, 90}: "Hitachi High-Technologies Corporation",
- [3]byte{220, 23, 146}: "Captivate Network",
- [3]byte{220, 26, 1}: "Ecoliv Technology ( Shenzhen ) Ltd.",
- [3]byte{220, 26, 197}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{220, 29, 159}: "U & B tech",
- [3]byte{220, 29, 212}: "Microstep-MIS spol. s r.o.",
- [3]byte{220, 30, 163}: "Accensus LLC",
- [3]byte{220, 32, 8}: "ASD Electronics Ltd",
- [3]byte{220, 40, 52}: "HAKKO Corporation",
- [3]byte{220, 41, 58}: "Shenzhen Nuoshi Technology Co., LTD.",
- [3]byte{220, 42, 20}: "Shanghai Longjing Technology Co.",
- [3]byte{220, 43, 42}: "Apple, Inc.",
- [3]byte{220, 43, 97}: "Apple, Inc.",
- [3]byte{220, 43, 102}: "InfoBLOCK S.A. de C.V.",
- [3]byte{220, 43, 202}: "Zera GmbH",
- [3]byte{220, 44, 38}: "Iton Technology Limited",
- [3]byte{220, 45, 203}: "Beijing Unis HengYue Technology Co., Ltd.",
- [3]byte{220, 46, 106}: "HCT. Co., Ltd.",
- [3]byte{220, 47, 3}: "Step forward Group Co., Ltd.",
- [3]byte{220, 48, 156}: "Heyrex Limited",
- [3]byte{220, 51, 13}: "Qingdao Haier Telecom Co.,Ltd",
- [3]byte{220, 51, 80}: "TechSAT GmbH",
- [3]byte{220, 53, 241}: "Positivo Informática SA.",
- [3]byte{220, 55, 20}: "Apple, Inc.",
- [3]byte{220, 55, 82}: "GE",
- [3]byte{220, 55, 210}: "Hunan HKT Electronic Technology Co., Ltd",
- [3]byte{220, 56, 225}: "Juniper Networks",
- [3]byte{220, 57, 121}: "Skyport Systems",
- [3]byte{220, 58, 94}: "Roku, Inc.",
- [3]byte{220, 60, 46}: "Manufacturing System Insights, Inc.",
- [3]byte{220, 60, 132}: "Ticom Geomatics, Inc.",
- [3]byte{220, 60, 246}: "Atomic Rules LLC",
- [3]byte{220, 62, 81}: "Solberg & Andersen AS",
- [3]byte{220, 62, 248}: "Nokia Corporation",
- [3]byte{220, 65, 95}: "Apple, Inc.",
- [3]byte{220, 68, 39}: "IEEE Registration Authority",
- [3]byte{220, 68, 109}: "Allwinner Technology Co., Ltd",
- [3]byte{220, 68, 182}: "Samsung Electronics Co.,Ltd",
- [3]byte{220, 69, 23}: "ARRIS Group, Inc.",
- [3]byte{220, 72, 178}: "Baraja Pty. Ltd.",
- [3]byte{220, 73, 201}: "CASCO SIGNAL LTD",
- [3]byte{220, 74, 62}: "Hewlett Packard",
- [3]byte{220, 77, 35}: "MRV Comunications",
- [3]byte{220, 78, 222}: "SHINYEI TECHNOLOGY CO., LTD.",
- [3]byte{220, 79, 34}: "Espressif Inc.",
- [3]byte{220, 83, 96}: "Intel Corporate",
- [3]byte{220, 83, 124}: "Compal Broadband Networks, Inc.",
- [3]byte{220, 85, 131}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{220, 86, 230}: "Shenzhen Bococom Technology Co.,LTD",
- [3]byte{220, 87, 38}: "Power-One",
- [3]byte{220, 94, 54}: "Paterson Technology",
- [3]byte{220, 96, 161}: "Teledyne DALSA Professional Imaging",
- [3]byte{220, 100, 124}: "C.R.S. iiMotion GmbH",
- [3]byte{220, 100, 184}: "Shenzhen JingHanDa Electronics Co.Ltd",
- [3]byte{220, 102, 58}: "Apacer Technology Inc.",
- [3]byte{220, 102, 114}: "Samsung Electronics Co.,Ltd",
- [3]byte{220, 104, 235}: "Nintendo Co.,Ltd",
- [3]byte{220, 106, 234}: "Infinix mobility limited",
- [3]byte{220, 109, 205}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{220, 111, 0}: "Livescribe, Inc.",
- [3]byte{220, 111, 8}: "Bay Storage Technology",
- [3]byte{220, 112, 20}: "Private",
- [3]byte{220, 113, 68}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{220, 116, 168}: "Samsung Electronics Co.,Ltd",
- [3]byte{220, 120, 52}: "LOGICOM SA",
- [3]byte{220, 123, 148}: "Cisco Systems, Inc",
- [3]byte{220, 127, 164}: "2Wire Inc",
- [3]byte{220, 130, 91}: "JANUS, spol. s r.o.",
- [3]byte{220, 130, 246}: "iPort",
- [3]byte{220, 133, 222}: "AzureWave Technology Inc.",
- [3]byte{220, 134, 216}: "Apple, Inc.",
- [3]byte{220, 154, 142}: "Nanjing Cocomm electronics co., LTD",
- [3]byte{220, 155, 30}: "Intercom, Inc.",
- [3]byte{220, 155, 156}: "Apple, Inc.",
- [3]byte{220, 156, 82}: "Sapphire Technology Limited.",
- [3]byte{220, 156, 159}: "Shenzhen YOUHUA Technology Co., Ltd",
- [3]byte{220, 159, 164}: "Nokia Corporation",
- [3]byte{220, 159, 219}: "Ubiquiti Networks Inc.",
- [3]byte{220, 163, 172}: "RBcloudtech",
- [3]byte{220, 164, 202}: "Apple, Inc.",
- [3]byte{220, 165, 244}: "Cisco Systems, Inc",
- [3]byte{220, 166, 189}: "Beijing Lanbo Technology Co., Ltd.",
- [3]byte{220, 167, 217}: "Compressor Controls Corp",
- [3]byte{220, 168, 207}: "New Spin Golf, LLC.",
- [3]byte{220, 169, 4}: "Apple, Inc.",
- [3]byte{220, 169, 113}: "Intel Corporate",
- [3]byte{220, 169, 137}: "MACANDC",
- [3]byte{220, 173, 158}: "GreenPriz",
- [3]byte{220, 174, 4}: "CELOXICA Ltd",
- [3]byte{220, 176, 88}: "Bürkert Werke GmbH",
- [3]byte{220, 179, 180}: "Honeywell Environmental & Combustion Controls (Tianjin) Co., Ltd.",
- [3]byte{220, 180, 196}: "Microsoft XCG",
- [3]byte{220, 190, 122}: "Zhejiang Nurotron Biotechnology Co.",
- [3]byte{220, 191, 144}: "HUIZHOU QIAOXING TELECOMMUNICATION INDUSTRY CO.,LTD.",
- [3]byte{220, 191, 233}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{220, 192, 219}: "Shenzhen Kaiboer Technology Co., Ltd.",
- [3]byte{220, 192, 235}: "ASSA ABLOY CÔTE PICARDE",
- [3]byte{220, 193, 1}: "SOLiD Technologies, Inc.",
- [3]byte{220, 196, 34}: "Systembase Limited",
- [3]byte{220, 198, 34}: "BUHEUNG SYSTEM",
- [3]byte{220, 198, 75}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{220, 199, 147}: "Nokia Corporation",
- [3]byte{220, 200, 245}: "Shanghai UMEinfo CO.,LTD.",
- [3]byte{220, 203, 168}: "Explora Technologies Inc",
- [3]byte{220, 206, 65}: "FE GLOBAL HONG KONG LIMITED",
- [3]byte{220, 206, 188}: "Shenzhen JSR Technology Co.,Ltd.",
- [3]byte{220, 206, 193}: "Cisco Systems, Inc",
- [3]byte{220, 207, 148}: "Beijing Rongcheng Hutong Technology Co., Ltd.",
- [3]byte{220, 207, 150}: "Samsung Electronics Co.,Ltd",
- [3]byte{220, 208, 247}: "Bentek Systems Ltd.",
- [3]byte{220, 210, 85}: "Kinpo Electronics, Inc.",
- [3]byte{220, 210, 252}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{220, 211, 33}: "HUMAX Co., Ltd.",
- [3]byte{220, 213, 42}: "Sunny Heart Limited",
- [3]byte{220, 216, 124}: "Beijing Jingdong Century Trading Co., LTD.",
- [3]byte{220, 216, 127}: "Shenzhen JoinCyber Telecom Equipment Ltd",
- [3]byte{220, 217, 22}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{220, 218, 79}: "GETCK TECHNOLOGY, INC",
- [3]byte{220, 219, 112}: "Tonfunk Systementwicklung und Service GmbH",
- [3]byte{220, 220, 7}: "TRP Systems BV",
- [3]byte{220, 222, 202}: "Akyllor",
- [3]byte{220, 224, 38}: "Patrol Tag, Inc",
- [3]byte{220, 225, 173}: "Shenzhen Wintop Photoelectric Technology Co., Ltd",
- [3]byte{220, 226, 172}: "Lumens Digital Optics Inc.",
- [3]byte{220, 229, 120}: "Experimental Factory of Scientific Engineering and Special Design Department",
- [3]byte{220, 231, 28}: "AUG Elektronik GmbH",
- [3]byte{220, 232, 56}: "CK Telecom (Shenzhen) Limited",
- [3]byte{220, 235, 83}: "Wuhan QianXiao Elecronic Technology CO.,LTD",
- [3]byte{220, 235, 148}: "Cisco Systems, Inc",
- [3]byte{220, 236, 6}: "Heimi Network Technology Co., Ltd.",
- [3]byte{220, 238, 6}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{220, 239, 9}: "NETGEAR",
- [3]byte{220, 239, 202}: "Murata Manufacturing Co., Ltd.",
- [3]byte{220, 240, 93}: "Letta Teknoloji",
- [3]byte{220, 240, 144}: "Nubia Technology Co.,Ltd.",
- [3]byte{220, 241, 16}: "Nokia Corporation",
- [3]byte{220, 247, 85}: "SITRONIK",
- [3]byte{220, 248, 88}: "Lorent Networks, Inc.",
- [3]byte{220, 250, 213}: "STRONG Ges.m.b.H.",
- [3]byte{220, 251, 2}: "BUFFALO.INC",
- [3]byte{220, 254, 7}: "PEGATRON CORPORATION",
- [3]byte{220, 254, 24}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{224, 3, 112}: "ShenZhen Continental Wireless Technology Co., Ltd.",
- [3]byte{224, 5, 197}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{224, 6, 230}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{224, 7, 27}: "Hewlett Packard Enterprise",
- [3]byte{224, 11, 40}: "Inovonics",
- [3]byte{224, 12, 127}: "Nintendo Co., Ltd.",
- [3]byte{224, 13, 185}: "Cree, Inc.",
- [3]byte{224, 14, 218}: "Cisco Systems, Inc",
- [3]byte{224, 16, 127}: "Ruckus Wireless",
- [3]byte{224, 20, 62}: "Modoosis Inc.",
- [3]byte{224, 24, 119}: "FUJITSU LIMITED",
- [3]byte{224, 25, 29}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{224, 26, 234}: "Allied Telesis, Inc.",
- [3]byte{224, 28, 65}: "Aerohive Networks Inc.",
- [3]byte{224, 28, 238}: "Bravo Tech, Inc.",
- [3]byte{224, 29, 56}: "Beijing HuaqinWorld Technology Co.,Ltd",
- [3]byte{224, 29, 59}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{224, 30, 7}: "Anite Telecoms US. Inc",
- [3]byte{224, 31, 10}: "Xslent Energy Technologies. LLC",
- [3]byte{224, 34, 2}: "ARRIS Group, Inc.",
- [3]byte{224, 36, 127}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{224, 37, 56}: "Titan Pet Products",
- [3]byte{224, 38, 48}: "Intrigue Technologies, Inc.",
- [3]byte{224, 38, 54}: "Nortel Networks",
- [3]byte{224, 39, 26}: "TTC Next-generation Home Network System WG",
- [3]byte{224, 40, 97}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{224, 40, 109}: "AVM Audiovisuelles Marketing und Computersysteme GmbH",
- [3]byte{224, 42, 130}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{224, 44, 178}: "Lenovo Mobile Communication (Wuhan) Company Limited",
- [3]byte{224, 44, 243}: "MRS Electronic GmbH",
- [3]byte{224, 47, 109}: "Cisco Systems, Inc",
- [3]byte{224, 48, 5}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{224, 49, 158}: "Valve Corporation",
- [3]byte{224, 49, 208}: "SZ Telstar CO., LTD",
- [3]byte{224, 52, 228}: "Feit Electric Company, Inc.",
- [3]byte{224, 53, 96}: "Challenger Supply Holdings, LLC",
- [3]byte{224, 54, 118}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{224, 54, 227}: "Stage One International Co., Ltd.",
- [3]byte{224, 55, 191}: "Wistron Neweb Corporation",
- [3]byte{224, 57, 215}: "Plexxi, Inc.",
- [3]byte{224, 60, 91}: "SHENZHEN JIAXINJIE ELECTRON CO.,LTD",
- [3]byte{224, 62, 68}: "Broadcom",
- [3]byte{224, 62, 74}: "Cavanagh Group International",
- [3]byte{224, 62, 125}: "data-complex GmbH",
- [3]byte{224, 63, 73}: "ASUSTek COMPUTER INC.",
- [3]byte{224, 65, 54}: "MitraStar Technology Corp.",
- [3]byte{224, 67, 219}: "Shenzhen ViewAt Technology Co.,Ltd.",
- [3]byte{224, 70, 154}: "NETGEAR",
- [3]byte{224, 72, 175}: "Premietech Limited",
- [3]byte{224, 72, 211}: "MOBIWIRE MOBILES (NINGBO) CO.,LTD",
- [3]byte{224, 75, 69}: "Hi-P Electronics Pte Ltd",
- [3]byte{224, 79, 67}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{224, 79, 189}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{224, 80, 139}: "Zhejiang Dahua Technology Co., Ltd.",
- [3]byte{224, 81, 36}: "NXP Semiconductors",
- [3]byte{224, 81, 99}: "Arcadyan Corporation",
- [3]byte{224, 85, 61}: "Cisco Meraki",
- [3]byte{224, 85, 151}: "Emergent Vision Technologies Inc.",
- [3]byte{224, 86, 244}: "AxesNetwork Solutions inc.",
- [3]byte{224, 88, 158}: "Laerdal Medical",
- [3]byte{224, 91, 112}: "Innovid, Co., Ltd.",
- [3]byte{224, 93, 166}: "Detlef Fink Elektronik & Softwareentwicklung",
- [3]byte{224, 95, 69}: "Apple, Inc.",
- [3]byte{224, 95, 185}: "Cisco Systems, Inc",
- [3]byte{224, 96, 102}: "Sercomm Corporation",
- [3]byte{224, 96, 137}: "Cloudleaf, Inc.",
- [3]byte{224, 97, 178}: "HANGZHOU ZENOINTEL TECHNOLOGY CO., LTD",
- [3]byte{224, 98, 144}: "Jinan Jovision Science & Technology Co., Ltd.",
- [3]byte{224, 99, 229}: "Sony Mobile Communications AB",
- [3]byte{224, 100, 187}: "DigiView S.r.l.",
- [3]byte{224, 102, 120}: "Apple, Inc.",
- [3]byte{224, 103, 179}: "C-Data Technology Co., Ltd",
- [3]byte{224, 104, 109}: "Raybased AB",
- [3]byte{224, 105, 149}: "PEGATRON CORPORATION",
- [3]byte{224, 117, 10}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{224, 117, 125}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{224, 118, 208}: "AMPAK Technology, Inc.",
- [3]byte{224, 120, 163}: "Shanghai Winner Information Technology Co.,Inc",
- [3]byte{224, 124, 19}: "zte corporation",
- [3]byte{224, 124, 98}: "Whistle Labs, Inc.",
- [3]byte{224, 127, 83}: "TECHBOARD SRL",
- [3]byte{224, 127, 136}: "EVIDENCE Network SIA",
- [3]byte{224, 129, 119}: "GreenBytes, Inc.",
- [3]byte{224, 132, 243}: "High Grade Controls Corporation",
- [3]byte{224, 135, 177}: "Nata-Info Ltd.",
- [3]byte{224, 136, 93}: "Technicolor CH USA Inc.",
- [3]byte{224, 137, 157}: "Cisco Systems, Inc",
- [3]byte{224, 138, 126}: "Exponent",
- [3]byte{224, 142, 60}: "Aztech Electronics Pte Ltd",
- [3]byte{224, 143, 236}: "REPOTEC CO., LTD.",
- [3]byte{224, 145, 83}: "XAVi Technologies Corp.",
- [3]byte{224, 145, 245}: "NETGEAR",
- [3]byte{224, 148, 103}: "Intel Corporate",
- [3]byte{224, 149, 121}: "ORTHOsoft inc, d/b/a Zimmer CAS",
- [3]byte{224, 151, 150}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{224, 151, 242}: "Atomax Inc.",
- [3]byte{224, 152, 97}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{224, 153, 113}: "Samsung Electronics Co.,Ltd",
- [3]byte{224, 157, 49}: "Intel Corporate",
- [3]byte{224, 157, 184}: "PLANEX COMMUNICATIONS INC.",
- [3]byte{224, 157, 250}: "Wanan Hongsheng Electronic Co.Ltd",
- [3]byte{224, 161, 152}: "NOJA Power Switchgear Pty Ltd",
- [3]byte{224, 161, 215}: "SFR",
- [3]byte{224, 163, 15}: "Pevco",
- [3]byte{224, 163, 172}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{224, 166, 112}: "Nokia Corporation",
- [3]byte{224, 167, 0}: "Verkada Inc",
- [3]byte{224, 168, 184}: "Le Shi Zhi Xin Electronic Technology (Tianjin) Limited",
- [3]byte{224, 170, 150}: "Samsung Electronics Co.,Ltd",
- [3]byte{224, 170, 176}: "GENERAL VISION ELECTRONICS CO. LTD.",
- [3]byte{224, 170, 219}: "Nanjing PANENG Technology Development Co.,Ltd",
- [3]byte{224, 171, 254}: "Orb Networks, Inc.",
- [3]byte{224, 172, 203}: "Apple, Inc.",
- [3]byte{224, 172, 241}: "Cisco Systems, Inc",
- [3]byte{224, 174, 94}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{224, 174, 178}: "Bender GmbH &amp; Co.KG",
- [3]byte{224, 174, 237}: "LOENK",
- [3]byte{224, 175, 75}: "Pluribus Networks, Inc.",
- [3]byte{224, 178, 241}: "FN-LINK TECHNOLOGY LIMITED",
- [3]byte{224, 181, 45}: "Apple, Inc.",
- [3]byte{224, 182, 245}: "IEEE Registration Authority",
- [3]byte{224, 183, 10}: "ARRIS Group, Inc.",
- [3]byte{224, 183, 177}: "ARRIS Group, Inc.",
- [3]byte{224, 185, 77}: "SHENZHEN BILIAN ELECTRONIC CO.,LTD",
- [3]byte{224, 185, 165}: "AzureWave Technology Inc.",
- [3]byte{224, 185, 186}: "Apple, Inc.",
- [3]byte{224, 185, 229}: "Technicolor",
- [3]byte{224, 188, 67}: "C2 Microsystems, Inc.",
- [3]byte{224, 192, 209}: "CK Telecom (Shenzhen) Limited",
- [3]byte{224, 194, 134}: "Aisai Communication Technology Co., Ltd.",
- [3]byte{224, 194, 183}: "Masimo Corporation",
- [3]byte{224, 195, 243}: "zte corporation",
- [3]byte{224, 198, 179}: "MilDef AB",
- [3]byte{224, 199, 103}: "Apple, Inc.",
- [3]byte{224, 199, 157}: "Texas Instruments",
- [3]byte{224, 200, 106}: "SHENZHEN TW-SCIE Co., Ltd",
- [3]byte{224, 201, 34}: "Jireh Energy Tech., Ltd.",
- [3]byte{224, 201, 122}: "Apple, Inc.",
- [3]byte{224, 202, 77}: "Shenzhen Unistar Communication Co.,LTD",
- [3]byte{224, 202, 148}: "ASKEY COMPUTER CORP",
- [3]byte{224, 203, 29}: "Private",
- [3]byte{224, 203, 78}: "ASUSTek COMPUTER INC.",
- [3]byte{224, 203, 188}: "Cisco Meraki",
- [3]byte{224, 203, 238}: "Samsung Electronics Co.,Ltd",
- [3]byte{224, 205, 253}: "Beijing E3Control Technology Co, LTD",
- [3]byte{224, 206, 195}: "ASKEY COMPUTER CORP",
- [3]byte{224, 207, 45}: "Gemintek Corporation",
- [3]byte{224, 209, 10}: "Katoudenkikougyousyo co ltd",
- [3]byte{224, 209, 115}: "Cisco Systems, Inc",
- [3]byte{224, 209, 230}: "Aliph dba Jawbone",
- [3]byte{224, 211, 26}: "EQUES Technology Co., Limited",
- [3]byte{224, 213, 94}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{224, 215, 186}: "Texas Instruments",
- [3]byte{224, 216, 72}: "Dell Inc.",
- [3]byte{224, 217, 162}: "Hippih aps",
- [3]byte{224, 217, 227}: "Eltex Enterprise Ltd.",
- [3]byte{224, 218, 220}: "JVC KENWOOD Corporation",
- [3]byte{224, 219, 16}: "Samsung Electronics Co.,Ltd",
- [3]byte{224, 219, 85}: "Dell Inc.",
- [3]byte{224, 219, 136}: "Open Standard Digital-IF Interface for SATCOM Systems",
- [3]byte{224, 220, 160}: "Siemens Industrial Automation Products Ltd Chengdu",
- [3]byte{224, 221, 192}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{224, 229, 207}: "Texas Instruments",
- [3]byte{224, 230, 49}: "SNB TECHNOLOGIES LIMITED",
- [3]byte{224, 231, 81}: "Nintendo Co., Ltd.",
- [3]byte{224, 231, 187}: "Nureva, Inc.",
- [3]byte{224, 232, 232}: "Olive Telecommunication Pvt. Ltd",
- [3]byte{224, 237, 26}: "vastriver Technology Co., Ltd",
- [3]byte{224, 237, 199}: "Shenzhen Friendcom Technology Development Co., Ltd",
- [3]byte{224, 238, 27}: "Panasonic Automotive Systems Company of America",
- [3]byte{224, 239, 37}: "Lintes Technology Co., Ltd.",
- [3]byte{224, 242, 17}: "Digitalwatt",
- [3]byte{224, 243, 121}: "Vaddio",
- [3]byte{224, 245, 198}: "Apple, Inc.",
- [3]byte{224, 245, 202}: "CHENG UEI PRECISION INDUSTRY CO.,LTD.",
- [3]byte{224, 248, 71}: "Apple, Inc.",
- [3]byte{224, 249, 190}: "Cloudena Corp.",
- [3]byte{224, 250, 236}: "Platan sp. z o.o. sp. k.",
- [3]byte{224, 255, 247}: "Softiron Inc.",
- [3]byte{228, 2, 155}: "Intel Corporate",
- [3]byte{228, 4, 57}: "TomTom Software Ltd",
- [3]byte{228, 17, 91}: "Hewlett Packard",
- [3]byte{228, 18, 24}: "ShenZhen Rapoo Technology Co., Ltd.",
- [3]byte{228, 18, 29}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 18, 137}: "topsystem Systemhaus GmbH",
- [3]byte{228, 23, 216}: "8BITDO TECHNOLOGY HK LIMITED",
- [3]byte{228, 24, 107}: "Zyxel Communications Corporation",
- [3]byte{228, 26, 44}: "ZPE Systems, Inc.",
- [3]byte{228, 28, 75}: "V2 TECHNOLOGY, INC.",
- [3]byte{228, 29, 45}: "Mellanox Technologies, Inc.",
- [3]byte{228, 31, 19}: "IBM Corp",
- [3]byte{228, 34, 165}: "PLANTRONICS, INC.",
- [3]byte{228, 35, 84}: "SHENZHEN FUZHI SOFTWARE TECHNOLOGY CO.,LTD",
- [3]byte{228, 37, 231}: "Apple, Inc.",
- [3]byte{228, 37, 233}: "Color-Chip",
- [3]byte{228, 39, 113}: "Smartlabs",
- [3]byte{228, 42, 211}: "Magneti Marelli S.p.A. Powertrain",
- [3]byte{228, 43, 52}: "Apple, Inc.",
- [3]byte{228, 44, 86}: "Lilee Systems, Ltd.",
- [3]byte{228, 45, 2}: "TCT mobile ltd",
- [3]byte{228, 47, 38}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{228, 47, 86}: "OptoMET GmbH",
- [3]byte{228, 47, 246}: "Unicore communication Inc.",
- [3]byte{228, 50, 203}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 53, 147}: "Hangzhou GoTo technology Co.Ltd",
- [3]byte{228, 53, 200}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{228, 53, 251}: "Sabre Technology (Hull) Ltd",
- [3]byte{228, 55, 215}: "HENRI DEPAEPE S.A.S.",
- [3]byte{228, 56, 242}: "Advantage Controls",
- [3]byte{228, 58, 110}: "Shenzhen Zeroone Technology CO.,LTD",
- [3]byte{228, 62, 215}: "Arcadyan Corporation",
- [3]byte{228, 63, 162}: "Wuxi DSP Technologies Inc.",
- [3]byte{228, 64, 226}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 65, 230}: "Ottec Technology GmbH",
- [3]byte{228, 66, 166}: "Intel Corporate",
- [3]byte{228, 70, 189}: "C&C TECHNIC TAIWAN CO., LTD.",
- [3]byte{228, 70, 218}: "Xiaomi Communications Co Ltd",
- [3]byte{228, 71, 144}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{228, 72, 199}: "Cisco SPVTG",
- [3]byte{228, 76, 108}: "Shenzhen Guo Wei Electronic Co,. Ltd.",
- [3]byte{228, 78, 24}: "Gardasoft VisionLimited",
- [3]byte{228, 79, 41}: "MA Lighting Technology GmbH",
- [3]byte{228, 79, 95}: "EDS Elektronik Destek San.Tic.Ltd.Sti",
- [3]byte{228, 80, 154}: "HW Communications Ltd",
- [3]byte{228, 85, 234}: "Dedicated Computing",
- [3]byte{228, 86, 20}: "Suttle Apparatus",
- [3]byte{228, 87, 64}: "ARRIS Group, Inc.",
- [3]byte{228, 87, 168}: "Stuart Manufacturing, Inc.",
- [3]byte{228, 88, 184}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 88, 231}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 90, 162}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{228, 93, 81}: "SFR",
- [3]byte{228, 93, 82}: "Avaya Inc",
- [3]byte{228, 93, 117}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 98, 81}: "HAO CHENG GROUP LIMITED",
- [3]byte{228, 100, 73}: "ARRIS Group, Inc.",
- [3]byte{228, 103, 186}: "Danish Interpretation Systems A/S",
- [3]byte{228, 104, 163}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{228, 105, 90}: "Dictum Health, Inc.",
- [3]byte{228, 108, 33}: "messMa GmbH",
- [3]byte{228, 111, 19}: "D-Link International",
- [3]byte{228, 112, 184}: "Intel Corporate",
- [3]byte{228, 113, 133}: "Securifi Ltd",
- [3]byte{228, 114, 226}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{228, 117, 30}: "Getinge Sterilization AB",
- [3]byte{228, 119, 35}: "zte corporation",
- [3]byte{228, 119, 107}: "AARTESYS AG",
- [3]byte{228, 119, 212}: "Minrray Industry Co.,Ltd",
- [3]byte{228, 123, 63}: "BEIJING CO-CLOUD TECHNOLOGY LTD.",
- [3]byte{228, 124, 249}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 125, 90}: "Beijing Hanbang Technology Corp.",
- [3]byte{228, 125, 189}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 125, 235}: "Shanghai Notion Information Technology CO.,LTD.",
- [3]byte{228, 126, 102}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{228, 127, 178}: "FUJITSU LIMITED",
- [3]byte{228, 129, 132}: "Nokia",
- [3]byte{228, 129, 179}: "Shenzhen ACT Industrial Co.,Ltd.",
- [3]byte{228, 131, 153}: "ARRIS Group, Inc.",
- [3]byte{228, 133, 1}: "Geberit International AG",
- [3]byte{228, 138, 213}: "RF WINDOW CO., LTD.",
- [3]byte{228, 139, 127}: "Apple, Inc.",
- [3]byte{228, 140, 15}: "Discovery Insure",
- [3]byte{228, 141, 140}: "Routerboard.com",
- [3]byte{228, 143, 52}: "Vodafone Italia S.p.A.",
- [3]byte{228, 144, 105}: "Rockwell Automation",
- [3]byte{228, 144, 126}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{228, 146, 231}: "Gridlink Tech. Co.,Ltd.",
- [3]byte{228, 146, 251}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 149, 110}: "IEEE Registration Authority",
- [3]byte{228, 150, 174}: "ALTOGRAPHICS Inc.",
- [3]byte{228, 151, 240}: "Shanghai VLC Technologies Ltd. Co.",
- [3]byte{228, 152, 209}: "Microsoft Mobile Oy",
- [3]byte{228, 152, 214}: "Apple, Inc.",
- [3]byte{228, 154, 121}: "Apple, Inc.",
- [3]byte{228, 154, 220}: "Apple, Inc.",
- [3]byte{228, 158, 18}: "FREEBOX SAS",
- [3]byte{228, 161, 230}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{228, 163, 47}: "Shanghai Artimen Technology Co., Ltd.",
- [3]byte{228, 163, 135}: "Control Solutions LLC",
- [3]byte{228, 164, 113}: "Intel Corporate",
- [3]byte{228, 165, 239}: "TRON LINK ELECTRONICS CO., LTD.",
- [3]byte{228, 167, 73}: "Palo Alto Networks",
- [3]byte{228, 167, 160}: "Intel Corporate",
- [3]byte{228, 167, 197}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{228, 167, 253}: "Cellco Partnership",
- [3]byte{228, 168, 182}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{228, 170, 93}: "Cisco Systems, Inc",
- [3]byte{228, 171, 70}: "UAB Selteka",
- [3]byte{228, 173, 125}: "SCL Elements",
- [3]byte{228, 175, 161}: "HES-SO",
- [3]byte{228, 176, 5}: "Beijing IQIYI Science & Technology Co., Ltd.",
- [3]byte{228, 176, 33}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 179, 24}: "Intel Corporate",
- [3]byte{228, 186, 217}: "360 Fly Inc.",
- [3]byte{228, 189, 75}: "zte corporation",
- [3]byte{228, 190, 237}: "Netcore Technology Inc.",
- [3]byte{228, 193, 70}: "Objetivos y Servicios de Valor A",
- [3]byte{228, 193, 241}: "SHENZHEN SPOTMAU INFORMATION TECHNOLIGY CO., Ltd",
- [3]byte{228, 194, 209}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{228, 198, 43}: "Airware",
- [3]byte{228, 198, 61}: "Apple, Inc.",
- [3]byte{228, 198, 230}: "Mophie, LLC",
- [3]byte{228, 199, 34}: "Cisco Systems, Inc",
- [3]byte{228, 200, 1}: "BLU Products Inc",
- [3]byte{228, 200, 6}: "Ceiec Electric Technology Inc.",
- [3]byte{228, 206, 2}: "WyreStorm Technologies Ltd",
- [3]byte{228, 206, 112}: "Health & Life co., Ltd.",
- [3]byte{228, 206, 143}: "Apple, Inc.",
- [3]byte{228, 211, 50}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{228, 211, 241}: "Cisco Systems, Inc",
- [3]byte{228, 213, 61}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{228, 215, 29}: "Oraya Therapeutics",
- [3]byte{228, 221, 121}: "En-Vision America, Inc.",
- [3]byte{228, 224, 197}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 228, 9}: "LEIFHEIT AG",
- [3]byte{228, 228, 171}: "Apple, Inc.",
- [3]byte{228, 236, 16}: "Nokia Corporation",
- [3]byte{228, 238, 253}: "MR&D Manufacturing",
- [3]byte{228, 240, 4}: "Dell Inc.",
- [3]byte{228, 240, 66}: "Google, Inc.",
- [3]byte{228, 243, 101}: "Time-O-Matic, Inc.",
- [3]byte{228, 243, 227}: "Shanghai iComhome Co.,Ltd.",
- [3]byte{228, 243, 245}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{228, 244, 198}: "NETGEAR",
- [3]byte{228, 247, 161}: "Datafox GmbH",
- [3]byte{228, 248, 156}: "Intel Corporate",
- [3]byte{228, 248, 239}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 249, 57}: "Minxon Hotel Technology INC.",
- [3]byte{228, 250, 29}: "PAD Peripheral Advanced Design Inc.",
- [3]byte{228, 250, 237}: "Samsung Electronics Co.,Ltd",
- [3]byte{228, 250, 253}: "Intel Corporate",
- [3]byte{228, 251, 93}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{228, 251, 143}: "MOBIWIRE MOBILES (NINGBO) CO.,LTD",
- [3]byte{228, 254, 217}: "EDMI Europe Ltd",
- [3]byte{228, 255, 221}: "ELECTRON INDIA",
- [3]byte{232, 0, 54}: "Befs co,. ltd",
- [3]byte{232, 3, 154}: "Samsung Electronics Co.,Ltd",
- [3]byte{232, 4, 11}: "Apple, Inc.",
- [3]byte{232, 4, 16}: "Private",
- [3]byte{232, 4, 98}: "Cisco Systems, Inc",
- [3]byte{232, 4, 243}: "Throughtek Co., Ltd.",
- [3]byte{232, 5, 109}: "Nortel Networks",
- [3]byte{232, 6, 136}: "Apple, Inc.",
- [3]byte{232, 7, 52}: "Champion Optical Network Engineering, LLC",
- [3]byte{232, 7, 191}: "SHENZHEN BOOMTECH INDUSTRY CO.,LTD",
- [3]byte{232, 8, 139}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{232, 9, 69}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{232, 9, 89}: "Guoguang Electric Co.,Ltd",
- [3]byte{232, 11, 19}: "Akib Systems Taiwan, INC",
- [3]byte{232, 12, 56}: "DAEYOUNG INFORMATION SYSTEM CO., LTD",
- [3]byte{232, 12, 117}: "Syncbak, Inc.",
- [3]byte{232, 16, 46}: "Really Simple Software, Inc",
- [3]byte{232, 17, 50}: "Samsung Electronics Co.,Ltd",
- [3]byte{232, 17, 202}: "SHANDONG KAER ELECTRIC.CO.,LTD",
- [3]byte{232, 19, 36}: "GuangZhou Bonsoninfo System CO.,LTD",
- [3]byte{232, 19, 99}: "Comstock RD, Inc.",
- [3]byte{232, 19, 103}: "AIRSOUND Inc.",
- [3]byte{232, 21, 14}: "Nokia Corporation",
- [3]byte{232, 22, 43}: "IDEO Security Co., Ltd.",
- [3]byte{232, 23, 252}: "Fujitsu Cloud Technologies Limited",
- [3]byte{232, 24, 99}: "IEEE Registration Authority",
- [3]byte{232, 29, 168}: "Ruckus Wireless",
- [3]byte{232, 32, 226}: "HUMAX Co., Ltd.",
- [3]byte{232, 40, 119}: "TMY Co., Ltd.",
- [3]byte{232, 40, 213}: "Cots Technology",
- [3]byte{232, 42, 68}: "Liteon Technology Corporation",
- [3]byte{232, 42, 234}: "Intel Corporate",
- [3]byte{232, 46, 36}: "Out of the Fog Research LLC",
- [3]byte{232, 51, 129}: "ARRIS Group, Inc.",
- [3]byte{232, 52, 62}: "Beijing Infosec Technologies Co., LTD.",
- [3]byte{232, 54, 29}: "Sense Labs, Inc.",
- [3]byte{232, 55, 122}: "Zyxel Communications Corporation",
- [3]byte{232, 57, 53}: "Hewlett Packard",
- [3]byte{232, 57, 223}: "ASKEY COMPUTER CORP",
- [3]byte{232, 58, 18}: "Samsung Electronics Co.,Ltd",
- [3]byte{232, 58, 151}: "Toshiba Corporation",
- [3]byte{232, 62, 182}: "RIM",
- [3]byte{232, 62, 251}: "GEODESIC LTD.",
- [3]byte{232, 62, 252}: "ARRIS Group, Inc.",
- [3]byte{232, 64, 64}: "Cisco Systems, Inc",
- [3]byte{232, 64, 242}: "PEGATRON CORPORATION",
- [3]byte{232, 67, 182}: "QNAP Systems, Inc.",
- [3]byte{232, 68, 126}: "Bitdefender SRL",
- [3]byte{232, 72, 31}: "Advanced Automotive Antennas",
- [3]byte{232, 77, 208}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{232, 78, 6}: "EDUP INTERNATIONAL (HK) CO., LTD",
- [3]byte{232, 78, 132}: "Samsung Electronics Co.,Ltd",
- [3]byte{232, 78, 206}: "Nintendo Co., Ltd.",
- [3]byte{232, 80, 139}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{232, 81, 110}: "TSMART Inc.",
- [3]byte{232, 81, 157}: "Yeonhab Precision Co.,LTD",
- [3]byte{232, 84, 132}: "NEO Information Systems Co., Ltd.",
- [3]byte{232, 85, 180}: "SAI Technology Inc.",
- [3]byte{232, 86, 89}: "Advanced-Connectek Inc.",
- [3]byte{232, 86, 214}: "NCTech Ltd",
- [3]byte{232, 90, 167}: "LLC Emzior",
- [3]byte{232, 91, 91}: "LG ELECTRONICS INC",
- [3]byte{232, 91, 240}: "Imaging Diagnostics",
- [3]byte{232, 93, 107}: "Luminate Wireless",
- [3]byte{232, 94, 83}: "Infratec Datentechnik GmbH",
- [3]byte{232, 97, 31}: "Dawning Information Industry Co.,Ltd",
- [3]byte{232, 97, 126}: "Liteon Technology Corporation",
- [3]byte{232, 97, 131}: "Black Diamond Advanced Technology, LLC",
- [3]byte{232, 97, 190}: "Melec Inc.",
- [3]byte{232, 101, 73}: "Cisco Systems, Inc",
- [3]byte{232, 101, 212}: "Tenda Technology Co.,Ltd.Dongguan branch",
- [3]byte{232, 102, 196}: "Diamanti",
- [3]byte{232, 104, 25}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{232, 108, 218}: "Supercomputers and Neurocomputers Research Center",
- [3]byte{232, 109, 82}: "ARRIS Group, Inc.",
- [3]byte{232, 109, 84}: "Digit Mobile Inc",
- [3]byte{232, 109, 101}: "AUDIO MOBIL Elektronik GmbH",
- [3]byte{232, 109, 110}: "voestalpine SIGNALING Fareham Ltd.",
- [3]byte{232, 111, 242}: "Actiontec Electronics, Inc",
- [3]byte{232, 113, 141}: "Elsys Equipamentos Eletronicos Ltda",
- [3]byte{232, 116, 230}: "ADB Broadband Italia",
- [3]byte{232, 117, 127}: "FIRS Technologies(Shenzhen) Co., Ltd",
- [3]byte{232, 120, 161}: "BEOVIEW INTERCOM DOO",
- [3]byte{232, 122, 243}: "S5 Tech S.r.l.",
- [3]byte{232, 128, 46}: "Apple, Inc.",
- [3]byte{232, 128, 216}: "GNTEK Electronics Co.,Ltd.",
- [3]byte{232, 130, 91}: "ARRIS Group, Inc.",
- [3]byte{232, 135, 163}: "Loxley Public Company Limited",
- [3]byte{232, 136, 108}: "Shenzhen SC Technologies Co.,LTD",
- [3]byte{232, 137, 44}: "ARRIS Group, Inc.",
- [3]byte{232, 141, 40}: "Apple, Inc.",
- [3]byte{232, 141, 245}: "ZNYX Networks, Inc.",
- [3]byte{232, 142, 96}: "NSD Corporation",
- [3]byte{232, 145, 32}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{232, 146, 24}: "Arcontia International AB",
- [3]byte{232, 146, 164}: "LG Electronics (Mobile Communications)",
- [3]byte{232, 147, 9}: "Samsung Electronics Co.,Ltd",
- [3]byte{232, 148, 76}: "Cogent Healthcare Systems Ltd",
- [3]byte{232, 148, 246}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{232, 150, 6}: "testo Instruments (Shenzhen) Co., Ltd.",
- [3]byte{232, 153, 90}: "PiiGAB, Processinformation i Goteborg AB",
- [3]byte{232, 153, 196}: "HTC Corporation",
- [3]byte{232, 154, 143}: "QUANTA COMPUTER INC.",
- [3]byte{232, 154, 255}: "Fujian Landi Commercial Equipment Co.,Ltd",
- [3]byte{232, 157, 135}: "Toshiba",
- [3]byte{232, 158, 12}: "Private",
- [3]byte{232, 158, 180}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{232, 159, 236}: "CHENGDU KT ELECTRONIC HI-TECH CO.,LTD",
- [3]byte{232, 163, 100}: "Signal Path International / Peachtree Audio",
- [3]byte{232, 164, 193}: "Deep Sea Electronics PLC",
- [3]byte{232, 167, 242}: "sTraffic",
- [3]byte{232, 171, 250}: "Shenzhen Reecam Tech.Ltd.",
- [3]byte{232, 177, 252}: "Intel Corporate",
- [3]byte{232, 178, 172}: "Apple, Inc.",
- [3]byte{232, 180, 174}: "Shenzhen C&D Electronics Co.,Ltd",
- [3]byte{232, 180, 200}: "Samsung Electronics Co.,Ltd",
- [3]byte{232, 182, 194}: "Juniper Networks",
- [3]byte{232, 183, 72}: "Cisco Systems, Inc",
- [3]byte{232, 186, 112}: "Cisco Systems, Inc",
- [3]byte{232, 187, 61}: "Sino Prime-Tech Limited",
- [3]byte{232, 187, 168}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{232, 189, 209}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{232, 190, 129}: "Sagemcom Broadband SAS",
- [3]byte{232, 193, 215}: "Philips",
- [3]byte{232, 194, 41}: "H-Displays (MSC) Bhd",
- [3]byte{232, 195, 32}: "Austco Communication Systems Pty Ltd",
- [3]byte{232, 199, 79}: "Liteon Technology Corporation",
- [3]byte{232, 203, 161}: "Nokia Corporation",
- [3]byte{232, 204, 24}: "D-Link International",
- [3]byte{232, 204, 50}: "Micronet LTD",
- [3]byte{232, 205, 45}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{232, 206, 6}: "SkyHawke Technologies, LLC.",
- [3]byte{232, 208, 250}: "MKS Instruments Deutschland GmbH",
- [3]byte{232, 209, 27}: "ASKEY COMPUTER CORP",
- [3]byte{232, 212, 131}: "ULTIMATE Europe Transportation Equipment GmbH",
- [3]byte{232, 212, 224}: "Beijing BenyWave Technology Co., Ltd.",
- [3]byte{232, 216, 25}: "AzureWave Technology Inc.",
- [3]byte{232, 218, 150}: "Zhuhai Tianrui Electrical Power Tech. Co., Ltd.",
- [3]byte{232, 218, 170}: "VideoHome Technology Corp.",
- [3]byte{232, 222, 39}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{232, 222, 142}: "Integrated Device Technology (Malaysia) Sdn. Bhd.",
- [3]byte{232, 222, 214}: "Intrising Networks, Inc.",
- [3]byte{232, 223, 112}: "AVM Audiovisuelles Marketing und Computersysteme GmbH",
- [3]byte{232, 223, 242}: "PRF Co., Ltd.",
- [3]byte{232, 224, 143}: "GRAVOTECH MARKING SAS",
- [3]byte{232, 224, 183}: "Toshiba",
- [3]byte{232, 225, 225}: "Gemtek Technology Co., Ltd.",
- [3]byte{232, 225, 226}: "Energotest",
- [3]byte{232, 229, 214}: "Samsung Electronics Co.,Ltd",
- [3]byte{232, 231, 50}: "Alcatel-Lucent Enterprise",
- [3]byte{232, 231, 112}: "Warp9 Tech Design, Inc.",
- [3]byte{232, 231, 118}: "Shenzhen Kootion Technology Co., Ltd",
- [3]byte{232, 232, 117}: "iS5 Communications Inc.",
- [3]byte{232, 234, 106}: "StarTech.com",
- [3]byte{232, 234, 218}: "Denkovi Assembly Electronics LTD",
- [3]byte{232, 235, 17}: "Texas Instruments",
- [3]byte{232, 237, 5}: "ARRIS Group, Inc.",
- [3]byte{232, 237, 243}: "Cisco Systems, Inc",
- [3]byte{232, 239, 137}: "OPMEX Tech.",
- [3]byte{232, 241, 176}: "Sagemcom Broadband SAS",
- [3]byte{232, 242, 38}: "MILLSON CUSTOM SOLUTIONS INC.",
- [3]byte{232, 242, 226}: "LG Innotek",
- [3]byte{232, 242, 227}: "Starcor Beijing Co.,Limited",
- [3]byte{232, 247, 36}: "Hewlett Packard Enterprise",
- [3]byte{232, 249, 40}: "RFTECH SRL",
- [3]byte{232, 252, 96}: "ELCOM Innovations Private Limited",
- [3]byte{232, 252, 175}: "NETGEAR",
- [3]byte{232, 253, 114}: "SHANGHAI LINGUO TECHNOLOGY CO., LTD.",
- [3]byte{232, 253, 144}: "Turbostor",
- [3]byte{232, 253, 232}: "CeLa Link Corporation",
- [3]byte{236, 1, 51}: "TRINUS SYSTEMS INC.",
- [3]byte{236, 1, 226}: "FOXCONN INTERCONNECT TECHNOLOGY",
- [3]byte{236, 1, 238}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{236, 4, 65}: "ShenZhen TIGO Semiconductor Co., Ltd.",
- [3]byte{236, 8, 107}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{236, 13, 154}: "Mellanox Technologies, Inc.",
- [3]byte{236, 14, 196}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{236, 14, 214}: "ITECH INSTRUMENTS SAS",
- [3]byte{236, 16, 123}: "Samsung Electronics Co.,Ltd",
- [3]byte{236, 17, 32}: "FloDesign Wind Turbine Corporation",
- [3]byte{236, 17, 39}: "Texas Instruments",
- [3]byte{236, 19, 178}: "Netonix",
- [3]byte{236, 19, 219}: "Juniper Networks",
- [3]byte{236, 20, 246}: "BioControl AS",
- [3]byte{236, 23, 47}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{236, 23, 102}: "Research Centre Module",
- [3]byte{236, 26, 89}: "Belkin International Inc.",
- [3]byte{236, 29, 127}: "zte corporation",
- [3]byte{236, 29, 139}: "Cisco Systems, Inc",
- [3]byte{236, 31, 114}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{236, 33, 159}: "VidaBox LLC",
- [3]byte{236, 33, 229}: "Toshiba",
- [3]byte{236, 34, 87}: "JiangSu NanJing University Electronic Information Technology Co.,Ltd",
- [3]byte{236, 34, 128}: "D-Link International",
- [3]byte{236, 35, 61}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{236, 35, 104}: "IntelliVoice Co.,Ltd.",
- [3]byte{236, 35, 123}: "zte corporation",
- [3]byte{236, 36, 184}: "Texas Instruments",
- [3]byte{236, 38, 202}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{236, 38, 251}: "TECC CO.,LTD.",
- [3]byte{236, 42, 240}: "Ypsomed AG",
- [3]byte{236, 44, 73}: "University of Tokyo",
- [3]byte{236, 46, 78}: "HITACHI-LG DATA STORAGE INC",
- [3]byte{236, 48, 145}: "Cisco Systems, Inc",
- [3]byte{236, 53, 134}: "Apple, Inc.",
- [3]byte{236, 54, 63}: "Markov Corporation",
- [3]byte{236, 56, 143}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{236, 59, 240}: "NovelSat",
- [3]byte{236, 60, 90}: "SHEN ZHEN HENG SHENG HUI DIGITAL TECHNOLOGY CO.,LTD",
- [3]byte{236, 60, 136}: "MCNEX Co.,Ltd.",
- [3]byte{236, 61, 253}: "SHENZHEN BILIAN ELECTRONIC CO.,LTD",
- [3]byte{236, 62, 9}: "PERFORMANCE DESIGNED PRODUCTS, LLC",
- [3]byte{236, 62, 247}: "Juniper Networks",
- [3]byte{236, 63, 5}: "Institute 706, The Second Academy China Aerospace Science & Industry Corp",
- [3]byte{236, 66, 180}: "ADC Corporation",
- [3]byte{236, 66, 240}: "ADL Embedded Solutions, Inc.",
- [3]byte{236, 67, 139}: "YAPTV",
- [3]byte{236, 67, 230}: "AWCER Ltd.",
- [3]byte{236, 67, 246}: "Zyxel Communications Corporation",
- [3]byte{236, 68, 118}: "Cisco Systems, Inc",
- [3]byte{236, 70, 68}: "TTK SAS",
- [3]byte{236, 70, 112}: "Meinberg Funkuhren GmbH & Co. KG",
- [3]byte{236, 71, 60}: "Redwire, LLC",
- [3]byte{236, 73, 147}: "Qihan Technology Co., Ltd",
- [3]byte{236, 76, 77}: "ZAO NPK RoTeK",
- [3]byte{236, 77, 71}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{236, 79, 130}: "Calix Inc.",
- [3]byte{236, 81, 188}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{236, 82, 220}: "WORLD MEDIA AND TECHNOLOGY Corp.",
- [3]byte{236, 84, 46}: "Shanghai XiMei Electronic Technology Co. Ltd",
- [3]byte{236, 85, 249}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{236, 89, 231}: "Microsoft Corporation",
- [3]byte{236, 90, 134}: "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd",
- [3]byte{236, 92, 105}: "MITSUBISHI HEAVY INDUSTRIES MECHATRONICS SYSTEMS,LTD.",
- [3]byte{236, 95, 35}: "Qinghai Kimascend Electronics Technology Co. Ltd.",
- [3]byte{236, 96, 224}: "AVI-ON LABS",
- [3]byte{236, 98, 100}: "Global411 Internet Services, LLC",
- [3]byte{236, 99, 229}: "ePBoard Design LLC",
- [3]byte{236, 100, 231}: "MOCACARE Corporation",
- [3]byte{236, 102, 209}: "B&W Group LTD",
- [3]byte{236, 104, 129}: "Palo Alto Networks",
- [3]byte{236, 108, 159}: "Chengdu Volans Technology CO.,LTD",
- [3]byte{236, 112, 151}: "ARRIS Group, Inc.",
- [3]byte{236, 113, 219}: "Shenzhen Baichuan Digital Technology Co., Ltd.",
- [3]byte{236, 116, 186}: "Hirschmann Automation and Control GmbH",
- [3]byte{236, 124, 116}: "Justone Technologies Co., Ltd.",
- [3]byte{236, 125, 17}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{236, 125, 157}: "MEI",
- [3]byte{236, 128, 9}: "NovaSparks",
- [3]byte{236, 129, 147}: "Logitech, Inc",
- [3]byte{236, 131, 80}: "Microsoft Corporation",
- [3]byte{236, 131, 108}: "RM Tech Co., Ltd.",
- [3]byte{236, 133, 47}: "Apple, Inc.",
- [3]byte{236, 136, 143}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{236, 136, 146}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{236, 137, 245}: "Lenovo Mobile Communication Technology Ltd.",
- [3]byte{236, 138, 76}: "zte corporation",
- [3]byte{236, 138, 199}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{236, 140, 162}: "Ruckus Wireless",
- [3]byte{236, 142, 173}: "DLX",
- [3]byte{236, 142, 174}: "Nagravision SA",
- [3]byte{236, 142, 181}: "Hewlett Packard",
- [3]byte{236, 146, 51}: "Eddyfi NDT Inc",
- [3]byte{236, 147, 39}: "MEMMERT GmbH + Co. KG",
- [3]byte{236, 147, 237}: "DDoS-Guard LTD",
- [3]byte{236, 150, 129}: "2276427 Ontario Inc",
- [3]byte{236, 152, 108}: "Lufft Mess- und Regeltechnik GmbH",
- [3]byte{236, 152, 193}: "Beijing Risbo Network Technology Co.,Ltd",
- [3]byte{236, 154, 116}: "Hewlett Packard",
- [3]byte{236, 155, 91}: "Nokia Corporation",
- [3]byte{236, 155, 243}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{236, 158, 205}: "Artesyn Embedded Technologies",
- [3]byte{236, 159, 13}: "IEEE Registration Authority",
- [3]byte{236, 162, 155}: "Kemppi Oy",
- [3]byte{236, 168, 107}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{236, 169, 250}: "GUANGDONG GENIUS TECHNOLOGY CO.,LTD.",
- [3]byte{236, 170, 160}: "PEGATRON CORPORATION",
- [3]byte{236, 173, 184}: "Apple, Inc.",
- [3]byte{236, 176, 225}: "Ciena Corporation",
- [3]byte{236, 177, 6}: "Acuro Networks, Inc",
- [3]byte{236, 177, 215}: "Hewlett Packard",
- [3]byte{236, 181, 65}: "SHINANO E and E Co.Ltd.",
- [3]byte{236, 181, 250}: "Philips Lighting BV",
- [3]byte{236, 184, 112}: "Beijing Heweinet Technology Co.,Ltd.",
- [3]byte{236, 185, 7}: "CloudGenix Inc",
- [3]byte{236, 186, 254}: "GIROPTIC",
- [3]byte{236, 187, 174}: "Digivoice Tecnologia em Eletronica Ltda",
- [3]byte{236, 189, 9}: "FUSION Electronics Ltd",
- [3]byte{236, 189, 29}: "Cisco Systems, Inc",
- [3]byte{236, 192, 106}: "PowerChord Group Limited",
- [3]byte{236, 195, 138}: "Accuenergy (CANADA) Inc",
- [3]byte{236, 200, 130}: "Cisco Systems, Inc",
- [3]byte{236, 203, 48}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{236, 205, 109}: "Allied Telesis, Inc.",
- [3]byte{236, 208, 14}: "MiraeRecognition Co., Ltd.",
- [3]byte{236, 208, 64}: "GEA Farm Technologies GmbH",
- [3]byte{236, 208, 159}: "Xiaomi Communications Co Ltd",
- [3]byte{236, 209, 154}: "Zhuhai Liming Industries Co., Ltd",
- [3]byte{236, 214, 138}: "Shenzhen JMicron Intelligent Technology Developmen",
- [3]byte{236, 217, 37}: "RAMI",
- [3]byte{236, 217, 80}: "IRT SA",
- [3]byte{236, 217, 209}: "Shenzhen TG-NET Botone Technology Co.,Ltd.",
- [3]byte{236, 222, 61}: "Lamprey Networks, Inc.",
- [3]byte{236, 223, 58}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{236, 224, 155}: "Samsung Electronics Co.,Ltd",
- [3]byte{236, 225, 84}: "Beijing Unisound Information Technology Co.,Ltd.",
- [3]byte{236, 225, 169}: "Cisco Systems, Inc",
- [3]byte{236, 226, 253}: "SKG Electric Group(Thailand) Co., Ltd.",
- [3]byte{236, 229, 18}: "tado GmbH",
- [3]byte{236, 229, 85}: "Hirschmann Automation",
- [3]byte{236, 231, 68}: "Omntec mfg. inc",
- [3]byte{236, 233, 11}: "SISTEMA SOLUCOES ELETRONICAS LTDA - EASYTECH",
- [3]byte{236, 233, 21}: "STI Ltd",
- [3]byte{236, 233, 248}: "Guang Zhou TRI-SUN Electronics Technology Co., Ltd",
- [3]byte{236, 234, 3}: "DARFON LIGHTING CORP",
- [3]byte{236, 235, 184}: "Hewlett Packard Enterprise",
- [3]byte{236, 238, 216}: "ZTLX Network Technology Co.,Ltd",
- [3]byte{236, 240, 14}: "AboCom",
- [3]byte{236, 242, 54}: "NEOMONTANA ELECTRONICS",
- [3]byte{236, 243, 66}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{236, 243, 91}: "Nokia Corporation",
- [3]byte{236, 244, 81}: "Arcadyan Corporation",
- [3]byte{236, 244, 187}: "Dell Inc.",
- [3]byte{236, 247, 43}: "HD DIGITAL TECH CO., LTD.",
- [3]byte{236, 248, 235}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{236, 250, 3}: "FCA",
- [3]byte{236, 250, 170}: "The IMS Company",
- [3]byte{236, 250, 188}: "Espressif Inc.",
- [3]byte{236, 250, 244}: "SenRa Tech Pvt. Ltd",
- [3]byte{236, 252, 85}: "A. Eberle GmbH & Co. KG",
- [3]byte{236, 254, 126}: "BlueRadios, Inc.",
- [3]byte{240, 0, 127}: "Janz - Contadores de Energia, SA",
- [3]byte{240, 2, 43}: "Chrontel",
- [3]byte{240, 2, 72}: "SmarteBuilding",
- [3]byte{240, 3, 140}: "AzureWave Technology Inc.",
- [3]byte{240, 7, 134}: "Shandong Bittel Electronics Co., Ltd",
- [3]byte{240, 8, 241}: "Samsung Electronics Co.,Ltd",
- [3]byte{240, 13, 92}: "JinQianMao Technology Co.,Ltd.",
- [3]byte{240, 19, 195}: "SHENZHEN FENDA TECHNOLOGY CO., LTD",
- [3]byte{240, 21, 160}: "KyungDong One Co., Ltd.",
- [3]byte{240, 21, 185}: "PlayFusion Limited",
- [3]byte{240, 24, 43}: "LG Chem",
- [3]byte{240, 27, 108}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{240, 28, 19}: "LG Electronics (Mobile Communications)",
- [3]byte{240, 28, 45}: "Juniper Networks",
- [3]byte{240, 29, 188}: "Microsoft Corporation",
- [3]byte{240, 30, 52}: "ORICO Technologies Co., Ltd",
- [3]byte{240, 31, 175}: "Dell Inc.",
- [3]byte{240, 33, 157}: "Cal-Comp Electronics & Communications Company Ltd.",
- [3]byte{240, 34, 78}: "Esan electronic co.",
- [3]byte{240, 35, 41}: "SHOWA DENKI CO.,LTD.",
- [3]byte{240, 35, 185}: "IEEE Registration Authority",
- [3]byte{240, 36, 5}: "OPUS High Technology Corporation",
- [3]byte{240, 36, 8}: "Talaris (Sweden) AB",
- [3]byte{240, 36, 117}: "Apple, Inc.",
- [3]byte{240, 37, 114}: "Cisco Systems, Inc",
- [3]byte{240, 37, 183}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{240, 38, 36}: "WAFA TECHNOLOGIES CO., LTD.",
- [3]byte{240, 38, 76}: "Dr. Sigrist AG",
- [3]byte{240, 39, 45}: "Amazon Technologies Inc.",
- [3]byte{240, 39, 69}: "F-Secure Corporation",
- [3]byte{240, 39, 101}: "Murata Manufacturing Co., Ltd.",
- [3]byte{240, 41, 41}: "Cisco Systems, Inc",
- [3]byte{240, 42, 35}: "Creative Next Design",
- [3]byte{240, 42, 97}: "Waldo Networks, Inc.",
- [3]byte{240, 47, 167}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{240, 47, 216}: "Bi2-Vision",
- [3]byte{240, 50, 26}: "Mita-Teknik A/S",
- [3]byte{240, 52, 4}: "TCT mobile ltd",
- [3]byte{240, 55, 161}: "Huike Electronics (SHENZHEN) CO., LTD.",
- [3]byte{240, 58, 75}: "Bloombase, Inc.",
- [3]byte{240, 58, 85}: "Omega Elektronik AS",
- [3]byte{240, 61, 3}: "TECNO MOBILE LIMITED",
- [3]byte{240, 61, 41}: "Actility",
- [3]byte{240, 62, 144}: "Ruckus Wireless",
- [3]byte{240, 62, 191}: "GOGORO TAIWAN LIMITED",
- [3]byte{240, 63, 248}: "R L Drake",
- [3]byte{240, 64, 123}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{240, 66, 28}: "Intel Corporate",
- [3]byte{240, 67, 53}: "DVN(Shanghai)Ltd.",
- [3]byte{240, 67, 71}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{240, 69, 218}: "Texas Instruments",
- [3]byte{240, 74, 43}: "PYRAMID Computer GmbH",
- [3]byte{240, 75, 106}: "Scientific Production Association Siberian Arsenal, Ltd.",
- [3]byte{240, 75, 242}: "JTECH Communications, Inc.",
- [3]byte{240, 77, 162}: "Dell Inc.",
- [3]byte{240, 79, 124}: "Private",
- [3]byte{240, 88, 73}: "CareView Communications",
- [3]byte{240, 90, 9}: "Samsung Electronics Co.,Ltd",
- [3]byte{240, 91, 123}: "Samsung Electronics Co.,Ltd",
- [3]byte{240, 92, 25}: "Aruba Networks",
- [3]byte{240, 93, 137}: "Dycon Limited",
- [3]byte{240, 93, 200}: "Duracell Powermat",
- [3]byte{240, 95, 90}: "Getriebebau NORD GmbH and Co. KG",
- [3]byte{240, 97, 48}: "Advantage Pharmacy Services, LLC",
- [3]byte{240, 98, 13}: "Shenzhen Egreat Tech Corp.,Ltd",
- [3]byte{240, 98, 129}: "ProCurve Networking by HP",
- [3]byte{240, 101, 194}: "Yanfeng Visteon Electronics Technology (Shanghai) Co.,Ltd.",
- [3]byte{240, 101, 221}: "Primax Electronics Ltd.",
- [3]byte{240, 104, 83}: "Integrated Corporation",
- [3]byte{240, 107, 202}: "Samsung Electronics Co.,Ltd",
- [3]byte{240, 109, 120}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{240, 110, 11}: "Microsoft Corporation",
- [3]byte{240, 110, 50}: "MICROTEL INNOVATION S.R.L.",
- [3]byte{240, 114, 140}: "Samsung Electronics Co.,Ltd",
- [3]byte{240, 115, 174}: "PEAK-System Technik",
- [3]byte{240, 116, 133}: "NGD Systems, Inc.",
- [3]byte{240, 116, 228}: "Thundercomm Technology Co., Ltd",
- [3]byte{240, 118, 28}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{240, 119, 101}: "Sourcefire, Inc",
- [3]byte{240, 119, 208}: "Xcellen",
- [3]byte{240, 120, 22}: "Cisco Systems, Inc",
- [3]byte{240, 121, 89}: "ASUSTek COMPUTER INC.",
- [3]byte{240, 121, 96}: "Apple, Inc.",
- [3]byte{240, 121, 232}: "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD",
- [3]byte{240, 123, 203}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{240, 125, 104}: "D-Link Corporation",
- [3]byte{240, 127, 6}: "Cisco Systems, Inc",
- [3]byte{240, 127, 12}: "Leopold Kostal GmbH &Co. KG",
- [3]byte{240, 129, 175}: "IRZ AUTOMATION TECHNOLOGIES LTD",
- [3]byte{240, 130, 97}: "Sagemcom Broadband SAS",
- [3]byte{240, 132, 47}: "ADB Broadband Italia",
- [3]byte{240, 132, 201}: "zte corporation",
- [3]byte{240, 133, 193}: "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.",
- [3]byte{240, 138, 40}: "JIANGSU HENGSION ELECTRONIC S and T CO.,LTD",
- [3]byte{240, 139, 254}: "COSTEL.,CO.LTD",
- [3]byte{240, 140, 251}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{240, 142, 219}: "VeloCloud Networks",
- [3]byte{240, 146, 28}: "Hewlett Packard",
- [3]byte{240, 146, 180}: "SICHUAN TIANYI COMHEART TELECOMCO., LTD",
- [3]byte{240, 147, 58}: "NxtConect",
- [3]byte{240, 147, 197}: "Garland Technology",
- [3]byte{240, 151, 229}: "TAMIO, INC",
- [3]byte{240, 152, 56}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{240, 152, 157}: "Apple, Inc.",
- [3]byte{240, 153, 191}: "Apple, Inc.",
- [3]byte{240, 154, 81}: "Shanghai Viroyal Electronic Technology Company Limited",
- [3]byte{240, 156, 187}: "RaonThink Inc.",
- [3]byte{240, 156, 233}: "Aerohive Networks Inc.",
- [3]byte{240, 158, 99}: "Cisco Systems, Inc",
- [3]byte{240, 159, 194}: "Ubiquiti Networks Inc.",
- [3]byte{240, 162, 37}: "Private",
- [3]byte{240, 167, 100}: "GST Co., Ltd.",
- [3]byte{240, 171, 84}: "MITSUMI ELECTRIC CO.,LTD.",
- [3]byte{240, 172, 164}: "HBC-radiomatic",
- [3]byte{240, 172, 215}: "IEEE Registration Authority",
- [3]byte{240, 173, 78}: "Globalscale Technologies, Inc.",
- [3]byte{240, 174, 81}: "Xi3 Corp",
- [3]byte{240, 176, 82}: "Ruckus Wireless",
- [3]byte{240, 176, 231}: "Apple, Inc.",
- [3]byte{240, 178, 229}: "Cisco Systems, Inc",
- [3]byte{240, 180, 41}: "Xiaomi Communications Co Ltd",
- [3]byte{240, 180, 121}: "Apple, Inc.",
- [3]byte{240, 182, 235}: "Poslab Technology Co., Ltd.",
- [3]byte{240, 188, 200}: "MaxID (Pty) Ltd",
- [3]byte{240, 189, 46}: "H+S Polatis Ltd",
- [3]byte{240, 189, 241}: "Sipod Inc.",
- [3]byte{240, 191, 151}: "Sony Corporation",
- [3]byte{240, 193, 241}: "Apple, Inc.",
- [3]byte{240, 194, 76}: "Zhejiang FeiYue Digital Technology Co., Ltd",
- [3]byte{240, 194, 124}: "Mianyang Netop Telecom Equipment Co.,Ltd.",
- [3]byte{240, 199, 127}: "Texas Instruments",
- [3]byte{240, 200, 80}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{240, 200, 140}: "LeddarTech Inc.",
- [3]byte{240, 203, 161}: "Apple, Inc.",
- [3]byte{240, 209, 79}: "LINEAR LLC",
- [3]byte{240, 209, 169}: "Apple, Inc.",
- [3]byte{240, 209, 184}: "LEDVANCE",
- [3]byte{240, 210, 241}: "Amazon Technologies Inc.",
- [3]byte{240, 211, 167}: "CobaltRay Co., Ltd",
- [3]byte{240, 211, 231}: "Sensometrix SA",
- [3]byte{240, 212, 246}: "Lars Thrane A/S",
- [3]byte{240, 213, 191}: "Intel Corporate",
- [3]byte{240, 214, 87}: "ECHOSENS",
- [3]byte{240, 215, 103}: "Axema Passagekontroll AB",
- [3]byte{240, 215, 170}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{240, 217, 178}: "EXO S.A.",
- [3]byte{240, 218, 124}: "RLH INDUSTRIES,INC.",
- [3]byte{240, 219, 48}: "Yottabyte",
- [3]byte{240, 219, 226}: "Apple, Inc.",
- [3]byte{240, 219, 248}: "Apple, Inc.",
- [3]byte{240, 220, 226}: "Apple, Inc.",
- [3]byte{240, 222, 113}: "Shanghai EDO Technologies Co.,Ltd.",
- [3]byte{240, 222, 185}: "ShangHai Y&Y Electronics Co., Ltd",
- [3]byte{240, 222, 241}: "Wistron Infocomm (Zhongshan) Corporation",
- [3]byte{240, 229, 195}: "Drägerwerk AG & Co. KG aA",
- [3]byte{240, 231, 126}: "Samsung Electronics Co.,Ltd",
- [3]byte{240, 235, 208}: "Shanghai Feixun Communication Co.,Ltd.",
- [3]byte{240, 236, 57}: "Essec",
- [3]byte{240, 237, 30}: "Bilkon Bilgisayar Kontrollu Cih. Im.Ltd.",
- [3]byte{240, 238, 16}: "Samsung Electronics Co.,Ltd",
- [3]byte{240, 238, 88}: "PACE Telematics GmbH",
- [3]byte{240, 238, 187}: "VIPAR GmbH",
- [3]byte{240, 239, 210}: "TF PAYMENT SERVICE CO., LTD",
- [3]byte{240, 240, 2}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{240, 242, 73}: "Hitron Technologies. Inc",
- [3]byte{240, 242, 96}: "Mobitec AB",
- [3]byte{240, 243, 54}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{240, 245, 174}: "Adaptrum Inc.",
- [3]byte{240, 246, 28}: "Apple, Inc.",
- [3]byte{240, 246, 68}: "Whitesky Science & Technology Co.,Ltd.",
- [3]byte{240, 246, 105}: "Motion Analysis Corporation",
- [3]byte{240, 247, 85}: "Cisco Systems, Inc",
- [3]byte{240, 247, 179}: "Phorm",
- [3]byte{240, 248, 66}: "KEEBOX, Inc.",
- [3]byte{240, 248, 242}: "Texas Instruments",
- [3]byte{240, 249, 247}: "IES GmbH & Co. KG",
- [3]byte{240, 253, 160}: "Acurix Networks Pty Ltd",
- [3]byte{240, 254, 107}: "Shanghai High-Flying Electronics Technology Co., Ltd",
- [3]byte{244, 3, 4}: "Google, Inc.",
- [3]byte{244, 3, 33}: "BeNeXt B.V.",
- [3]byte{244, 3, 47}: "Reduxio Systems",
- [3]byte{244, 3, 67}: "Hewlett Packard Enterprise",
- [3]byte{244, 4, 76}: "ValenceTech Limited",
- [3]byte{244, 6, 105}: "Intel Corporate",
- [3]byte{244, 6, 141}: "devolo AG",
- [3]byte{244, 6, 165}: "Hangzhou Bianfeng Networking Technology Co., Ltd.",
- [3]byte{244, 9, 216}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{244, 10, 74}: "INDUSNET Communication Technology Co.,LTD",
- [3]byte{244, 11, 147}: "BlackBerry RTS",
- [3]byte{244, 14, 17}: "IEEE Registration Authority",
- [3]byte{244, 14, 34}: "Samsung Electronics Co.,Ltd",
- [3]byte{244, 14, 131}: "ARRIS Group, Inc.",
- [3]byte{244, 15, 27}: "Cisco Systems, Inc",
- [3]byte{244, 15, 36}: "Apple, Inc.",
- [3]byte{244, 15, 155}: "WAVELINK",
- [3]byte{244, 21, 53}: "SPON Communication Technology Co.,Ltd",
- [3]byte{244, 21, 99}: "F5 Networks, Inc.",
- [3]byte{244, 21, 253}: "Shanghai Pateo Electronic Equipment Manufacturing Co., Ltd.",
- [3]byte{244, 23, 184}: "AirTies Wireless Networks",
- [3]byte{244, 27, 161}: "Apple, Inc.",
- [3]byte{244, 30, 38}: "Simon-Kaloi Engineering",
- [3]byte{244, 30, 94}: "RtBrick Inc.",
- [3]byte{244, 31, 11}: "YAMABISHI Corporation",
- [3]byte{244, 31, 136}: "zte corporation",
- [3]byte{244, 31, 194}: "Cisco Systems, Inc",
- [3]byte{244, 32, 18}: "Cuciniale GmbH",
- [3]byte{244, 40, 51}: "MMPC Inc.",
- [3]byte{244, 40, 83}: "Zioncom Electronics (Shenzhen) Ltd.",
- [3]byte{244, 40, 150}: "SPECTO PAINEIS ELETRONICOS LTDA",
- [3]byte{244, 41, 129}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{244, 43, 72}: "Ubiqam",
- [3]byte{244, 44, 86}: "SENOR TECH CO LTD",
- [3]byte{244, 48, 185}: "Hewlett Packard",
- [3]byte{244, 49, 195}: "Apple, Inc.",
- [3]byte{244, 54, 225}: "Abilis Systems SARL",
- [3]byte{244, 55, 183}: "Apple, Inc.",
- [3]byte{244, 56, 20}: "Shanghai Howell Electronic Co.,Ltd",
- [3]byte{244, 61, 128}: "FAG Industrial Services GmbH",
- [3]byte{244, 62, 97}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{244, 62, 157}: "Benu Networks, Inc.",
- [3]byte{244, 65, 86}: "Arrikto Inc.",
- [3]byte{244, 66, 39}: "S & S Research Inc.",
- [3]byte{244, 66, 143}: "Samsung Electronics Co.,Ltd",
- [3]byte{244, 68, 80}: "BND Co., Ltd.",
- [3]byte{244, 69, 237}: "Portable Innovation Technology Ltd.",
- [3]byte{244, 71, 19}: "Leading Public Performance Co., Ltd.",
- [3]byte{244, 71, 42}: "Nanjing Rousing Sci. and Tech. Industrial Co., Ltd",
- [3]byte{244, 72, 72}: "Amscreen Group Ltd",
- [3]byte{244, 73, 239}: "EMSTONE",
- [3]byte{244, 75, 42}: "Cisco SPVTG",
- [3]byte{244, 76, 112}: "Skyworth Digital Technology(Shenzhen) Co.,Ltd",
- [3]byte{244, 76, 127}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{244, 77, 23}: "GOLDCARD HIGH-TECH CO.,LTD.",
- [3]byte{244, 77, 48}: "Elitegroup Computer Systems Co.,Ltd.",
- [3]byte{244, 78, 5}: "Cisco Systems, Inc",
- [3]byte{244, 78, 253}: "Actions Semiconductor Co.,Ltd.(Cayman Islands)",
- [3]byte{244, 80, 235}: "Telechips Inc",
- [3]byte{244, 82, 20}: "Mellanox Technologies, Inc.",
- [3]byte{244, 84, 51}: "Rockwell Automation",
- [3]byte{244, 85, 149}: "HENGBAO Corporation LTD.",
- [3]byte{244, 85, 156}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{244, 85, 224}: "Niceway CNC Technology Co.,Ltd.Hunan Province",
- [3]byte{244, 87, 62}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{244, 88, 66}: "Boxx TV Ltd",
- [3]byte{244, 91, 115}: "Wanjiaan Interconnected Technology Co., Ltd",
- [3]byte{244, 92, 137}: "Apple, Inc.",
- [3]byte{244, 94, 171}: "Texas Instruments",
- [3]byte{244, 95, 105}: "Matsufu Electronics distribution Company",
- [3]byte{244, 95, 212}: "Cisco SPVTG",
- [3]byte{244, 95, 247}: "DQ Technology Inc.",
- [3]byte{244, 96, 13}: "Panoptic Technology, Inc",
- [3]byte{244, 98, 208}: "Not for Radio, LLC",
- [3]byte{244, 99, 73}: "Diffon Corporation",
- [3]byte{244, 100, 93}: "Toshiba",
- [3]byte{244, 103, 45}: "ShenZhen Topstar Technology Company",
- [3]byte{244, 106, 146}: "SHENZHEN FAST TECHNOLOGIES CO.,LTD",
- [3]byte{244, 106, 188}: "Adonit Corp. Ltd.",
- [3]byte{244, 107, 239}: "Sagemcom Broadband SAS",
- [3]byte{244, 109, 4}: "ASUSTek COMPUTER INC.",
- [3]byte{244, 109, 226}: "zte corporation",
- [3]byte{244, 110, 36}: "NEC Personal Computers, Ltd.",
- [3]byte{244, 112, 171}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{244, 115, 202}: "Conversion Sound Inc.",
- [3]byte{244, 118, 38}: "Viltechmeda UAB",
- [3]byte{244, 122, 78}: "Woojeon&Handan",
- [3]byte{244, 122, 204}: "SolidFire, Inc.",
- [3]byte{244, 123, 94}: "Samsung Electronics Co.,Ltd",
- [3]byte{244, 127, 53}: "Cisco Systems, Inc",
- [3]byte{244, 129, 57}: "CANON INC.",
- [3]byte{244, 131, 205}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{244, 131, 225}: "Shanghai Clouder Semiconductor Co.,Ltd",
- [3]byte{244, 133, 198}: "FDT Technologies",
- [3]byte{244, 135, 113}: "Infoblox",
- [3]byte{244, 139, 50}: "Xiaomi Communications Co Ltd",
- [3]byte{244, 140, 80}: "Intel Corporate",
- [3]byte{244, 142, 9}: "Nokia Corporation",
- [3]byte{244, 142, 56}: "Dell Inc.",
- [3]byte{244, 142, 146}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{244, 144, 202}: "Tensorcom",
- [3]byte{244, 144, 234}: "Deciso B.V.",
- [3]byte{244, 145, 30}: "ZHUHAI EWPE INFORMATION TECHNOLOGY INC",
- [3]byte{244, 147, 159}: "Hon Hai Precision Ind. Co., Ltd.",
- [3]byte{244, 148, 97}: "NexGen Storage",
- [3]byte{244, 148, 102}: "CountMax, ltd",
- [3]byte{244, 150, 52}: "Intel Corporate",
- [3]byte{244, 150, 81}: "NAKAYO Inc",
- [3]byte{244, 153, 172}: "WEBER Schraubautomaten GmbH",
- [3]byte{244, 158, 239}: "Taicang T&W Electronics",
- [3]byte{244, 159, 84}: "Samsung Electronics Co.,Ltd",
- [3]byte{244, 159, 243}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{244, 162, 148}: "EAGLE WORLD DEVELOPMENT CO., LIMITED",
- [3]byte{244, 165, 42}: "Hawa Technologies Inc",
- [3]byte{244, 167, 57}: "Juniper Networks",
- [3]byte{244, 169, 151}: "CANON INC.",
- [3]byte{244, 172, 193}: "Cisco Systems, Inc",
- [3]byte{244, 177, 100}: "Lightning Telecommunications Technology Co. Ltd",
- [3]byte{244, 179, 129}: "WindowMaster A/S",
- [3]byte{244, 181, 32}: "Biostar Microtech international corp.",
- [3]byte{244, 181, 47}: "Juniper Networks",
- [3]byte{244, 181, 73}: "Xiamen Yeastar Information Technology Co., Ltd.",
- [3]byte{244, 182, 229}: "TerraSem Co.,Ltd",
- [3]byte{244, 183, 42}: "TIME INTERCONNECT LTD",
- [3]byte{244, 183, 179}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{244, 183, 226}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{244, 184, 94}: "Texas Instruments",
- [3]byte{244, 184, 167}: "zte corporation",
- [3]byte{244, 189, 124}: "Chengdu jinshi communication Co., LTD",
- [3]byte{244, 196, 71}: "Coagent International Enterprise Limited",
- [3]byte{244, 196, 214}: "Shenzhen Xinfa Electronic Co.,ltd",
- [3]byte{244, 198, 19}: "Alcatel-Lucent Shanghai Bell Co., Ltd",
- [3]byte{244, 198, 215}: "blackned GmbH",
- [3]byte{244, 199, 20}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{244, 199, 149}: "WEY Elektronik AG",
- [3]byte{244, 202, 36}: "FreeBit Co., Ltd.",
- [3]byte{244, 202, 229}: "FREEBOX SAS",
- [3]byte{244, 203, 82}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{244, 204, 85}: "Juniper Networks",
- [3]byte{244, 205, 144}: "Vispiron Rotec GmbH",
- [3]byte{244, 206, 70}: "Hewlett Packard",
- [3]byte{244, 207, 226}: "Cisco Systems, Inc",
- [3]byte{244, 208, 50}: "Yunnan Ideal Information&Technology.,Ltd",
- [3]byte{244, 210, 97}: "SEMOCON Co., Ltd",
- [3]byte{244, 215, 178}: "LGS Innovations, LLC",
- [3]byte{244, 217, 251}: "Samsung Electronics Co.,Ltd",
- [3]byte{244, 220, 65}: "YOUNGZONE CULTURE (SHANGHAI) CORP",
- [3]byte{244, 220, 77}: "Beijing CCD Digital Technology Co., Ltd",
- [3]byte{244, 220, 218}: "Zhuhai Jiahe Communication Technology Co., limited",
- [3]byte{244, 220, 249}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{244, 221, 158}: "GoPro",
- [3]byte{244, 222, 12}: "ESPOD Ltd.",
- [3]byte{244, 225, 66}: "Delta Elektronika BV",
- [3]byte{244, 226, 4}: "Traqueur",
- [3]byte{244, 227, 251}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{244, 228, 173}: "zte corporation",
- [3]byte{244, 230, 215}: "Solar Power Technologies, Inc.",
- [3]byte{244, 233, 38}: "Tianjin Zanpu Technology Inc.",
- [3]byte{244, 233, 212}: "QLogic Corporation",
- [3]byte{244, 234, 103}: "Cisco Systems, Inc",
- [3]byte{244, 234, 181}: "Aerohive Networks Inc.",
- [3]byte{244, 235, 56}: "Sagemcom Broadband SAS",
- [3]byte{244, 236, 56}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{244, 237, 95}: "SHENZHEN KTC TECHNOLOGY GROUP",
- [3]byte{244, 238, 20}: "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.",
- [3]byte{244, 239, 158}: "SGSG SCIENCE & TECHNOLOGY CO. LTD",
- [3]byte{244, 241, 90}: "Apple, Inc.",
- [3]byte{244, 241, 225}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{244, 242, 109}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{244, 243, 170}: "JBL GmbH & Co. KG",
- [3]byte{244, 245, 36}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{244, 245, 165}: "Nokia Corporation",
- [3]byte{244, 245, 216}: "Google, Inc.",
- [3]byte{244, 245, 219}: "Xiaomi Communications Co Ltd",
- [3]byte{244, 245, 232}: "Google, Inc.",
- [3]byte{244, 246, 70}: "Dediprog Technology Co. Ltd.",
- [3]byte{244, 249, 81}: "Apple, Inc.",
- [3]byte{244, 252, 50}: "Texas Instruments",
- [3]byte{244, 252, 177}: "JJ Corp",
- [3]byte{244, 253, 43}: "ZOYI Company",
- [3]byte{248, 1, 19}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{248, 2, 120}: "IEEE Registration Authority",
- [3]byte{248, 3, 50}: "Khomp",
- [3]byte{248, 3, 119}: "Apple, Inc.",
- [3]byte{248, 4, 46}: "SAMSUNG ELECTRO-MECHANICS(THAILAND)",
- [3]byte{248, 5, 28}: "DRS Imaging and Targeting Solutions",
- [3]byte{248, 11, 190}: "ARRIS Group, Inc.",
- [3]byte{248, 11, 203}: "Cisco Systems, Inc",
- [3]byte{248, 11, 208}: "Datang Telecom communication terminal (Tianjin) Co., Ltd.",
- [3]byte{248, 12, 243}: "LG Electronics (Mobile Communications)",
- [3]byte{248, 13, 67}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{248, 13, 96}: "CANON INC.",
- [3]byte{248, 13, 234}: "ZyCast Technology Inc.",
- [3]byte{248, 15, 65}: "Wistron Infocomm (Zhongshan) Corporation",
- [3]byte{248, 15, 132}: "Natural Security SAS",
- [3]byte{248, 16, 55}: "Atopia Systems, LP",
- [3]byte{248, 21, 71}: "Avaya Inc",
- [3]byte{248, 22, 84}: "Intel Corporate",
- [3]byte{248, 24, 151}: "2Wire Inc",
- [3]byte{248, 26, 103}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{248, 28, 229}: "Telefonbau Behnke GmbH",
- [3]byte{248, 29, 15}: "Hitron Technologies. Inc",
- [3]byte{248, 29, 120}: "IEEE Registration Authority",
- [3]byte{248, 29, 144}: "Solidwintech",
- [3]byte{248, 29, 147}: "Longdhua(Beijing) Controls Technology Co.,Ltd",
- [3]byte{248, 30, 223}: "Apple, Inc.",
- [3]byte{248, 32, 85}: "Green Information System",
- [3]byte{248, 34, 133}: "Cypress Technology CO., LTD.",
- [3]byte{248, 35, 178}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{248, 36, 65}: "Yeelink",
- [3]byte{248, 39, 147}: "Apple, Inc.",
- [3]byte{248, 40, 25}: "Liteon Technology Corporation",
- [3]byte{248, 43, 200}: "Jiangsu Switter Co., Ltd",
- [3]byte{248, 44, 24}: "2Wire Inc",
- [3]byte{248, 46, 219}: "RTW GmbH & Co. KG",
- [3]byte{248, 47, 8}: "Molex",
- [3]byte{248, 47, 91}: "eGauge Systems LLC",
- [3]byte{248, 47, 168}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{248, 48, 148}: "Alcatel-Lucent Telecom Limited",
- [3]byte{248, 49, 62}: "endeavour GmbH",
- [3]byte{248, 50, 228}: "ASUSTek COMPUTER INC.",
- [3]byte{248, 51, 118}: "Good Mind Innovation Co., Ltd.",
- [3]byte{248, 52, 65}: "Intel Corporate",
- [3]byte{248, 53, 83}: "Magenta Research Ltd.",
- [3]byte{248, 53, 221}: "Gemtek Technology Co., Ltd.",
- [3]byte{248, 61, 78}: "Softlink Automation System Co., Ltd",
- [3]byte{248, 61, 255}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{248, 63, 81}: "Samsung Electronics Co.,Ltd",
- [3]byte{248, 66, 251}: "Yasuda Joho Co.,ltd.",
- [3]byte{248, 68, 227}: "Taicang T&W Electronics",
- [3]byte{248, 69, 173}: "Konka Group Co., Ltd.",
- [3]byte{248, 70, 28}: "Sony Interactive Entertainment Inc.",
- [3]byte{248, 70, 45}: "SYNTEC Incorporation",
- [3]byte{248, 71, 45}: "X2gen Digital Corp. Ltd",
- [3]byte{248, 72, 151}: "Hitachi, Ltd.",
- [3]byte{248, 74, 115}: "EUMTECH CO., LTD",
- [3]byte{248, 74, 127}: "Innometriks Inc",
- [3]byte{248, 74, 191}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{248, 79, 87}: "Cisco Systems, Inc",
- [3]byte{248, 80, 99}: "Verathon",
- [3]byte{248, 81, 109}: "Denwa Technology Corp.",
- [3]byte{248, 82, 223}: "VNL Europe AB",
- [3]byte{248, 84, 175}: "ECI Telecom Ltd.",
- [3]byte{248, 87, 46}: "Core Brands, LLC",
- [3]byte{248, 89, 113}: "Intel Corporate",
- [3]byte{248, 90, 0}: "Sanford LP",
- [3]byte{248, 91, 156}: "SB SYSTEMS Co.,Ltd",
- [3]byte{248, 91, 201}: "M-Cube Spa",
- [3]byte{248, 92, 69}: "IC Nexus Co. Ltd.",
- [3]byte{248, 92, 77}: "NOKIA",
- [3]byte{248, 95, 42}: "Nokia Corporation",
- [3]byte{248, 98, 20}: "Apple, Inc.",
- [3]byte{248, 98, 170}: "xn systems",
- [3]byte{248, 99, 63}: "Intel Corporate",
- [3]byte{248, 100, 101}: "Anova Applied Electronics, Inc.",
- [3]byte{248, 102, 1}: "Suzhou Chi-tek information technology Co., Ltd",
- [3]byte{248, 102, 209}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{248, 102, 242}: "Cisco Systems, Inc",
- [3]byte{248, 105, 113}: "Seibu Electric Co.,",
- [3]byte{248, 108, 225}: "Taicang T&W Electronics",
- [3]byte{248, 110, 207}: "Arcx Inc",
- [3]byte{248, 110, 238}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{248, 113, 254}: "The Goldman Sachs Group, Inc.",
- [3]byte{248, 114, 234}: "Cisco Systems, Inc",
- [3]byte{248, 115, 148}: "NETGEAR",
- [3]byte{248, 115, 162}: "Avaya Inc",
- [3]byte{248, 117, 136}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{248, 118, 155}: "Neopis Co., Ltd.",
- [3]byte{248, 119, 184}: "Samsung Electronics Co.,Ltd",
- [3]byte{248, 122, 239}: "Rosonix Technology, Inc.",
- [3]byte{248, 123, 32}: "Cisco Systems, Inc",
- [3]byte{248, 123, 98}: "FASTWEL INTERNATIONAL CO., LTD. Taiwan Branch",
- [3]byte{248, 123, 122}: "ARRIS Group, Inc.",
- [3]byte{248, 123, 140}: "Amped Wireless",
- [3]byte{248, 128, 150}: "Elsys Equipamentos Eletrônicos Ltda",
- [3]byte{248, 129, 26}: "OVERKIZ",
- [3]byte{248, 132, 121}: "Yaojin Technology(Shenzhen)Co.,Ltd",
- [3]byte{248, 132, 242}: "Samsung Electronics Co.,Ltd",
- [3]byte{248, 138, 60}: "IEEE Registration Authority",
- [3]byte{248, 140, 28}: "KAISHUN ELECTRONIC TECHNOLOGY CO., LTD. BEIJING",
- [3]byte{248, 141, 239}: "Tenebraex",
- [3]byte{248, 142, 133}: "Comtrend Corporation",
- [3]byte{248, 143, 202}: "Google, Inc.",
- [3]byte{248, 145, 42}: "GLP German Light Products GmbH",
- [3]byte{248, 147, 243}: "VOLANS",
- [3]byte{248, 148, 194}: "Intel Corporate",
- [3]byte{248, 149, 80}: "Proton Products Chengdu Ltd",
- [3]byte{248, 149, 199}: "LG Electronics (Mobile Communications)",
- [3]byte{248, 151, 207}: "DAESHIN-INFORMATION TECHNOLOGY CO., LTD.",
- [3]byte{248, 152, 58}: "Leeman International (HongKong) Limited",
- [3]byte{248, 152, 185}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{248, 153, 85}: "Fortress Technology Inc",
- [3]byte{248, 157, 13}: "Control Technology Inc.",
- [3]byte{248, 157, 187}: "Tintri",
- [3]byte{248, 159, 184}: "YAZAKI Energy System Corporation",
- [3]byte{248, 160, 61}: "Dinstar Technologies Co., Ltd.",
- [3]byte{248, 160, 151}: "ARRIS Group, Inc.",
- [3]byte{248, 161, 136}: "LED Roadway Lighting",
- [3]byte{248, 162, 180}: "RHEWA-WAAGENFABRIK August Freudewald GmbH &amp;Co. KG",
- [3]byte{248, 163, 79}: "zte corporation",
- [3]byte{248, 164, 95}: "Xiaomi Communications Co Ltd",
- [3]byte{248, 165, 197}: "Cisco Systems, Inc",
- [3]byte{248, 169, 99}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{248, 169, 208}: "LG Electronics (Mobile Communications)",
- [3]byte{248, 169, 222}: "PUISSANCE PLUS",
- [3]byte{248, 170, 138}: "Axview Technology (Shenzhen) Co.,Ltd",
- [3]byte{248, 171, 5}: "Sagemcom Broadband SAS",
- [3]byte{248, 172, 109}: "Deltenna Ltd",
- [3]byte{248, 177, 86}: "Dell Inc.",
- [3]byte{248, 178, 243}: "GUANGZHOU BOSMA TECHNOLOGY CO.,LTD",
- [3]byte{248, 181, 104}: "IEEE Registration Authority",
- [3]byte{248, 181, 153}: "Guangzhou CHNAVS Digital Technology Co.,Ltd",
- [3]byte{248, 183, 226}: "Cisco Systems, Inc",
- [3]byte{248, 187, 191}: "eero inc.",
- [3]byte{248, 188, 18}: "Dell Inc.",
- [3]byte{248, 188, 65}: "Rosslare Enterprises Limited",
- [3]byte{248, 190, 13}: "A2UICT Co.,Ltd.",
- [3]byte{248, 191, 9}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{248, 192, 1}: "Juniper Networks",
- [3]byte{248, 192, 145}: "Highgates Technology",
- [3]byte{248, 194, 136}: "Cisco Systems, Inc",
- [3]byte{248, 195, 114}: "TSUZUKI DENKI",
- [3]byte{248, 195, 151}: "NZXT Corp. Ltd.",
- [3]byte{248, 198, 120}: "Carefusion",
- [3]byte{248, 201, 108}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{248, 202, 184}: "Dell Inc.",
- [3]byte{248, 207, 197}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{248, 208, 39}: "Seiko Epson Corporation",
- [3]byte{248, 208, 172}: "Sony Interactive Entertainment Inc.",
- [3]byte{248, 208, 189}: "Samsung Electronics Co.,Ltd",
- [3]byte{248, 209, 17}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{248, 211, 169}: "AXAN Networks",
- [3]byte{248, 212, 98}: "Pumatronix Equipamentos Eletronicos Ltda.",
- [3]byte{248, 215, 86}: "Simm Tronic Limited",
- [3]byte{248, 215, 191}: "REV Ritter GmbH",
- [3]byte{248, 218, 12}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{248, 218, 223}: "EcoTech, Inc.",
- [3]byte{248, 218, 226}: "Beta LaserMike",
- [3]byte{248, 218, 244}: "Taishan Online Technology Co., Ltd.",
- [3]byte{248, 219, 76}: "PNY Technologies, INC.",
- [3]byte{248, 219, 127}: "HTC Corporation",
- [3]byte{248, 219, 136}: "Dell Inc.",
- [3]byte{248, 220, 122}: "Variscite LTD",
- [3]byte{248, 223, 168}: "zte corporation",
- [3]byte{248, 224, 121}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{248, 228, 251}: "Actiontec Electronics, Inc",
- [3]byte{248, 230, 26}: "Samsung Electronics Co.,Ltd",
- [3]byte{248, 231, 30}: "Ruckus Wireless",
- [3]byte{248, 231, 181}: "µTech Tecnologia LTDA",
- [3]byte{248, 232, 17}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{248, 233, 3}: "D-Link International",
- [3]byte{248, 233, 104}: "Egker Kft.",
- [3]byte{248, 234, 10}: "Dipl.-Math. Michael Rauch",
- [3]byte{248, 237, 165}: "ARRIS Group, Inc.",
- [3]byte{248, 240, 5}: "Newport Media Inc.",
- [3]byte{248, 240, 20}: "RackWare Inc.",
- [3]byte{248, 240, 130}: "NAG LLC",
- [3]byte{248, 241, 182}: "Motorola Mobility LLC, a Lenovo Company",
- [3]byte{248, 242, 30}: "Intel Corporate",
- [3]byte{248, 242, 90}: "G-Lab GmbH",
- [3]byte{248, 244, 100}: "Rawe Electonic GmbH",
- [3]byte{248, 247, 211}: "International Communications Corporation",
- [3]byte{248, 247, 255}: "SYN-TECH SYSTEMS INC",
- [3]byte{248, 251, 47}: "Santur Corporation",
- [3]byte{248, 254, 92}: "Reciprocal Labs Corp",
- [3]byte{248, 254, 168}: "Technico Japan Corporation",
- [3]byte{248, 255, 11}: "Electronic Technology Inc.",
- [3]byte{248, 255, 95}: "Shenzhen Communication Technology Co.,Ltd",
- [3]byte{252, 0, 18}: "Toshiba Samsung Storage Technolgoy Korea Corporation",
- [3]byte{252, 1, 124}: "Hon Hai Precision Ind. Co.,Ltd.",
- [3]byte{252, 1, 158}: "VIEVU",
- [3]byte{252, 1, 205}: "FUNDACION TEKNIKER",
- [3]byte{252, 6, 71}: "Cortland Research, LLC",
- [3]byte{252, 6, 237}: "M2Motive Technology Inc.",
- [3]byte{252, 7, 160}: "LRE Medical GmbH",
- [3]byte{252, 8, 74}: "FUJITSU LIMITED",
- [3]byte{252, 8, 119}: "Prentke Romich Company",
- [3]byte{252, 9, 216}: "ACTEON Group",
- [3]byte{252, 9, 246}: "GUANGDONG TONZE ELECTRIC CO.,LTD",
- [3]byte{252, 10, 129}: "Extreme Networks, Inc.",
- [3]byte{252, 15, 75}: "Texas Instruments",
- [3]byte{252, 15, 230}: "Sony Interactive Entertainment Inc.",
- [3]byte{252, 16, 189}: "Control Sistematizado S.A.",
- [3]byte{252, 16, 198}: "Taicang T&W Electronics",
- [3]byte{252, 17, 134}: "Logic3 plc",
- [3]byte{252, 19, 73}: "Global Apps Corp.",
- [3]byte{252, 21, 180}: "Hewlett Packard",
- [3]byte{252, 22, 7}: "Taian Technology(Wuxi) Co.,Ltd.",
- [3]byte{252, 23, 148}: "InterCreative Co., Ltd",
- [3]byte{252, 25, 16}: "Samsung Electronics Co.,Ltd",
- [3]byte{252, 25, 208}: "Cloud Vision Networks Technology Co.,Ltd.",
- [3]byte{252, 26, 17}: "vivo Mobile Communication Co., Ltd.",
- [3]byte{252, 27, 255}: "V-ZUG AG",
- [3]byte{252, 29, 89}: "I Smart Cities HK Ltd",
- [3]byte{252, 29, 132}: "Autobase",
- [3]byte{252, 30, 22}: "IPEVO corp",
- [3]byte{252, 31, 25}: "SAMSUNG ELECTRO MECHANICS CO., LTD.",
- [3]byte{252, 31, 192}: "EURECAM",
- [3]byte{252, 34, 156}: "Han Kyung I Net Co.,Ltd.",
- [3]byte{252, 35, 37}: "EosTek (Shenzhen) Co., Ltd.",
- [3]byte{252, 37, 63}: "Apple, Inc.",
- [3]byte{252, 39, 162}: "TRANS ELECTRIC CO., LTD.",
- [3]byte{252, 42, 84}: "Connected Data, Inc.",
- [3]byte{252, 45, 94}: "zte corporation",
- [3]byte{252, 46, 45}: "Lorom Industrial Co.LTD.",
- [3]byte{252, 47, 64}: "Calxeda, Inc.",
- [3]byte{252, 47, 107}: "Everspin Technologies, Inc.",
- [3]byte{252, 47, 170}: "Nokia",
- [3]byte{252, 47, 239}: "UTT Technologies Co., Ltd.",
- [3]byte{252, 50, 136}: "CELOT Wireless Co., Ltd",
- [3]byte{252, 51, 95}: "Polyera",
- [3]byte{252, 53, 152}: "Favite Inc.",
- [3]byte{252, 53, 230}: "Visteon corp",
- [3]byte{252, 55, 43}: "SICHUAN TIANYI COMHEART TELECOMCO.,LTD",
- [3]byte{252, 60, 233}: "Tsingtong Technologies Co, Ltd.",
- [3]byte{252, 61, 147}: "LONGCHEER TELECOMMUNICATION LIMITED",
- [3]byte{252, 63, 124}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{252, 63, 171}: "Henan Lanxin Technology Co., Ltd",
- [3]byte{252, 63, 219}: "Hewlett Packard",
- [3]byte{252, 66, 3}: "Samsung Electronics Co.,Ltd",
- [3]byte{252, 68, 99}: "Universal Audio, Inc",
- [3]byte{252, 68, 153}: "Swarco LEA d.o.o.",
- [3]byte{252, 69, 95}: "JIANGXI SHANSHUI OPTOELECTRONIC TECHNOLOGY CO.,LTD",
- [3]byte{252, 69, 150}: "COMPAL INFORMATION (KUNSHAN) CO., LTD.",
- [3]byte{252, 72, 239}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{252, 74, 233}: "Castlenet Technology Inc.",
- [3]byte{252, 75, 28}: "INTERSENSOR S.R.L.",
- [3]byte{252, 75, 188}: "Sunplus Technology Co., Ltd.",
- [3]byte{252, 77, 140}: "SHENZHEN PANTE ELECTRONICS TECHNOLOGY CO., LTD",
- [3]byte{252, 77, 212}: "Universal Global Scientific Industrial Co., Ltd.",
- [3]byte{252, 80, 144}: "SIMEX Sp. z o.o.",
- [3]byte{252, 81, 164}: "ARRIS Group, Inc.",
- [3]byte{252, 82, 141}: "Technicolor CH USA Inc.",
- [3]byte{252, 82, 206}: "Control iD",
- [3]byte{252, 83, 158}: "Shanghai Wind Technologies Co.,Ltd",
- [3]byte{252, 85, 220}: "Baltic Latvian Universal Electronics LLC",
- [3]byte{252, 88, 250}: "Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd.",
- [3]byte{252, 90, 29}: "Hitron Technologies. Inc",
- [3]byte{252, 91, 36}: "Weibel Scientific A/S",
- [3]byte{252, 91, 38}: "MikroBits",
- [3]byte{252, 91, 57}: "Cisco Systems, Inc",
- [3]byte{252, 96, 24}: "Zhejiang Kangtai Electric Co., Ltd.",
- [3]byte{252, 97, 152}: "NEC Personal Products, Ltd",
- [3]byte{252, 98, 110}: "Beijing MDC Telecom",
- [3]byte{252, 98, 185}: "ALPS ELECTRIC CO.,LTD.",
- [3]byte{252, 100, 186}: "Xiaomi Communications Co Ltd",
- [3]byte{252, 101, 222}: "Amazon Technologies Inc.",
- [3]byte{252, 104, 62}: "Directed Perception, Inc",
- [3]byte{252, 108, 49}: "LXinstruments GmbH",
- [3]byte{252, 109, 192}: "BME CORPORATION",
- [3]byte{252, 111, 183}: "ARRIS Group, Inc.",
- [3]byte{252, 117, 22}: "D-Link International",
- [3]byte{252, 117, 230}: "Handreamnet",
- [3]byte{252, 121, 11}: "Hitachi High Technologies America, Inc.",
- [3]byte{252, 124, 231}: "FCI USA LLC",
- [3]byte{252, 127, 86}: "CoSyst Control Systems GmbH",
- [3]byte{252, 131, 41}: "Trei technics",
- [3]byte{252, 131, 153}: "Avaya Inc",
- [3]byte{252, 131, 198}: "N-Radio Technologies Co., Ltd.",
- [3]byte{252, 139, 151}: "SHENZHEN GONGJIN ELECTRONICS CO.,LT",
- [3]byte{252, 142, 126}: "ARRIS Group, Inc.",
- [3]byte{252, 143, 144}: "Samsung Electronics Co.,Ltd",
- [3]byte{252, 143, 196}: "Intelligent Technology Inc.",
- [3]byte{252, 145, 20}: "Technicolor CH USA Inc.",
- [3]byte{252, 146, 59}: "Nokia Corporation",
- [3]byte{252, 148, 108}: "UBIVELOX",
- [3]byte{252, 148, 227}: "Technicolor CH USA Inc.",
- [3]byte{252, 153, 71}: "Cisco Systems, Inc",
- [3]byte{252, 154, 250}: "Motus Global Inc.",
- [3]byte{252, 157, 216}: "Beijing TongTongYiLian Science and Technology Ltd.",
- [3]byte{252, 159, 174}: "Fidus Systems Inc",
- [3]byte{252, 159, 225}: "CONWIN.Tech. Ltd",
- [3]byte{252, 161, 62}: "Samsung Electronics Co.,Ltd",
- [3]byte{252, 162, 42}: "PT. Callysta Multi Engineering",
- [3]byte{252, 163, 134}: "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD",
- [3]byte{252, 166, 103}: "Amazon Technologies Inc.",
- [3]byte{252, 168, 65}: "Avaya Inc",
- [3]byte{252, 168, 154}: "Sunitec Enterprise Co.,Ltd",
- [3]byte{252, 169, 176}: "MIARTECH (SHANGHAI),INC.",
- [3]byte{252, 170, 20}: "GIGA-BYTE TECHNOLOGY CO.,LTD.",
- [3]byte{252, 173, 15}: "QTS NETWORKS",
- [3]byte{252, 175, 106}: "Qulsar Inc",
- [3]byte{252, 175, 172}: "Socionext Inc.",
- [3]byte{252, 176, 196}: "Shanghai DareGlobal Technologies Co.,Ltd",
- [3]byte{252, 180, 230}: "ASKEY COMPUTER CORP",
- [3]byte{252, 181, 138}: "Wapice Ltd.",
- [3]byte{252, 182, 152}: "Cambridge Industries(Group) Co.,Ltd.",
- [3]byte{252, 187, 161}: "Shenzhen Minicreate Technology Co.,Ltd",
- [3]byte{252, 188, 156}: "Vimar Spa",
- [3]byte{252, 194, 51}: "Private",
- [3]byte{252, 194, 61}: "Atmel Corporation",
- [3]byte{252, 194, 222}: "Murata Manufacturing Co., Ltd.",
- [3]byte{252, 199, 52}: "Samsung Electronics Co.,Ltd",
- [3]byte{252, 200, 151}: "zte corporation",
- [3]byte{252, 202, 196}: "LifeHealth, LLC",
- [3]byte{252, 204, 228}: "Ascon Ltd.",
- [3]byte{252, 207, 67}: "HUIZHOU CITY HUIYANG DISTRICT MEISIQI INDUSTRY DEVELOPMENT CO,.LTD",
- [3]byte{252, 207, 98}: "IBM Corp",
- [3]byte{252, 212, 242}: "The Coca Cola Company",
- [3]byte{252, 212, 246}: "Messana Air.Ray Conditioning s.r.l.",
- [3]byte{252, 213, 217}: "Shenzhen SDMC Technology Co., Ltd.",
- [3]byte{252, 214, 189}: "Robert Bosch GmbH",
- [3]byte{252, 215, 51}: "TP-LINK TECHNOLOGIES CO.,LTD.",
- [3]byte{252, 216, 23}: "Beijing Hesun Technologies Co.Ltd.",
- [3]byte{252, 216, 72}: "Apple, Inc.",
- [3]byte{252, 219, 150}: "ENERVALLEY CO., LTD",
- [3]byte{252, 219, 179}: "Murata Manufacturing Co., Ltd.",
- [3]byte{252, 220, 74}: "G-Wearables Corp.",
- [3]byte{252, 221, 85}: "Shenzhen WeWins wireless Co.,Ltd",
- [3]byte{252, 225, 134}: "A3M Co., LTD",
- [3]byte{252, 225, 146}: "Sichuan Jinwangtong Electronic Science&Technology Co,.Ltd",
- [3]byte{252, 225, 217}: "Stable Imaging Solutions LLC",
- [3]byte{252, 225, 251}: "Array Networks",
- [3]byte{252, 226, 63}: "CLAY PAKY SPA",
- [3]byte{252, 227, 60}: "HUAWEI TECHNOLOGIES CO.,LTD",
- [3]byte{252, 229, 87}: "Nokia Corporation",
- [3]byte{252, 232, 146}: "Hangzhou Lancable Technology Co.,Ltd",
- [3]byte{252, 233, 152}: "Apple, Inc.",
- [3]byte{252, 236, 218}: "Ubiquiti Networks Inc.",
- [3]byte{252, 237, 185}: "Arrayent",
- [3]byte{252, 238, 230}: "FORMIKE ELECTRONIC CO., LTD",
- [3]byte{252, 241, 54}: "Samsung Electronics Co.,Ltd",
- [3]byte{252, 241, 82}: "Sony Corporation",
- [3]byte{252, 241, 205}: "OPTEX-FA CO.,LTD.",
- [3]byte{252, 245, 40}: "Zyxel Communications Corporation",
- [3]byte{252, 246, 71}: "Fiberhome Telecommunication Technologies Co.,LTD",
- [3]byte{252, 248, 174}: "Intel Corporate",
- [3]byte{252, 248, 183}: "TRONTEQ Electronic",
- [3]byte{252, 250, 247}: "Shanghai Baud Data Communication Co.,Ltd.",
- [3]byte{252, 251, 251}: "Cisco Systems, Inc",
- [3]byte{252, 252, 72}: "Apple, Inc.",
- [3]byte{252, 254, 119}: "Hitachi Reftechno, Inc.",
- [3]byte{252, 254, 194}: "Invensys Controls UK Limited",
- [3]byte{252, 255, 170}: "IEEE Registration Authority",
-}
diff --git a/vendor/github.com/google/gopacket/packet_test.go b/vendor/github.com/google/gopacket/packet_test.go
deleted file mode 100644
index bd05448..0000000
--- a/vendor/github.com/google/gopacket/packet_test.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package gopacket
-
-import (
- "io"
- "reflect"
- "testing"
-)
-
-type embedded struct {
- A, B int
-}
-
-type embedding struct {
- embedded
- C, D int
-}
-
-func TestDumpEmbedded(t *testing.T) {
- e := embedding{embedded: embedded{A: 1, B: 2}, C: 3, D: 4}
- if got, want := layerString(reflect.ValueOf(e), false, false), "{A=1 B=2 C=3 D=4}"; got != want {
- t.Errorf("embedded dump mismatch:\n got: %v\n want: %v", got, want)
- }
-}
-
-type singlePacketSource [1][]byte
-
-func (s *singlePacketSource) ReadPacketData() ([]byte, CaptureInfo, error) {
- if (*s)[0] == nil {
- return nil, CaptureInfo{}, io.EOF
- }
- out := (*s)[0]
- (*s)[0] = nil
- return out, CaptureInfo{}, nil
-}
-
-func TestConcatPacketSources(t *testing.T) {
- sourceA := &singlePacketSource{[]byte{1}}
- sourceB := &singlePacketSource{[]byte{2}}
- sourceC := &singlePacketSource{[]byte{3}}
- concat := ConcatFinitePacketDataSources(sourceA, sourceB, sourceC)
- a, _, err := concat.ReadPacketData()
- if err != nil || len(a) != 1 || a[0] != 1 {
- t.Errorf("expected [1], got %v/%v", a, err)
- }
- b, _, err := concat.ReadPacketData()
- if err != nil || len(b) != 1 || b[0] != 2 {
- t.Errorf("expected [2], got %v/%v", b, err)
- }
- c, _, err := concat.ReadPacketData()
- if err != nil || len(c) != 1 || c[0] != 3 {
- t.Errorf("expected [3], got %v/%v", c, err)
- }
- if _, _, err := concat.ReadPacketData(); err != io.EOF {
- t.Errorf("expected io.EOF, got %v", err)
- }
-}
diff --git a/vendor/github.com/google/gopacket/pcap/doc.go b/vendor/github.com/google/gopacket/pcap/doc.go
deleted file mode 100644
index 5bf8d86..0000000
--- a/vendor/github.com/google/gopacket/pcap/doc.go
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-/*
-Package pcap allows users of gopacket to read packets off the wire or from
-pcap files.
-
-This package is meant to be used with its parent,
-http://github.com/google/gopacket, although it can also be used independently
-if you just want to get packet data from the wire.
-
-Reading PCAP Files
-
-The following code can be used to read in data from a pcap file.
-
- if handle, err := pcap.OpenOffline("/path/to/my/file"); err != nil {
- panic(err)
- } else {
- packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
- for packet := range packetSource.Packets() {
- handlePacket(packet) // Do something with a packet here.
- }
- }
-
-Reading Live Packets
-
-The following code can be used to read in data from a live device, in this case
-"eth0".
-
- if handle, err := pcap.OpenLive("eth0", 1600, true, pcap.BlockForever); err != nil {
- panic(err)
- } else if err := handle.SetBPFFilter("tcp and port 80"); err != nil { // optional
- panic(err)
- } else {
- packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
- for packet := range packetSource.Packets() {
- handlePacket(packet) // Do something with a packet here.
- }
- }
-
-Inactive Handles
-
-Newer PCAP functionality requires the concept of an 'inactive' PCAP handle.
-Instead of constantly adding new arguments to pcap_open_live, users now call
-pcap_create to create a handle, set it up with a bunch of optional function
-calls, then call pcap_activate to activate it. This library mirrors that
-mechanism, for those that want to expose/use these new features:
-
- inactive, err := pcap.NewInactiveHandle(deviceName)
- if err != nil {
- log.Fatal(err)
- }
- defer inactive.CleanUp()
-
- // Call various functions on inactive to set it up the way you'd like:
- if err = inactive.SetTimeout(time.Minute); err != nil {
- log.Fatal(err)
- } else if err = inactive.SetTimestampSource("foo"); err != nil {
- log.Fatal(err)
- }
-
- // Finally, create the actual handle by calling Activate:
- handle, err := inactive.Activate() // after this, inactive is no longer valid
- if err != nil {
- log.Fatal(err)
- }
- defer handle.Close()
-
- // Now use your handle as you see fit.
-
-PCAP Timeouts
-
-pcap.OpenLive and pcap.SetTimeout both take timeouts.
-If you don't care about timeouts, just pass in BlockForever,
-which should do what you expect with minimal fuss.
-
-A timeout of 0 is not recommended. Some platforms, like Macs
-(http://www.manpages.info/macosx/pcap.3.html) say:
- The read timeout is used to arrange that the read not necessarily return
- immediately when a packet is seen, but that it wait for some amount of time
- to allow more packets to arrive and to read multiple packets from the OS
- kernel in one operation.
-This means that if you only capture one packet, the kernel might decide to wait
-'timeout' for more packets to batch with it before returning. A timeout of
-0, then, means 'wait forever for more packets', which is... not good.
-
-To get around this, we've introduced the following behavior: if a negative
-timeout is passed in, we set the positive timeout in the handle, then loop
-internally in ReadPacketData/ZeroCopyReadPacketData when we see timeout
-errors.
-
-PCAP File Writing
-
-This package does not implement PCAP file writing. However, gopacket/pcapgo
-does! Look there if you'd like to write PCAP files.
-
-Note For Windows 10 Users
-
-If you're trying to use 64-bit winpcap on Windows 10, you might have to do
-the crazy hijinks detailed at
-http://stackoverflow.com/questions/38047858/compile-gopacket-on-windows-64bit
-*/
-package pcap
diff --git a/vendor/github.com/google/gopacket/pcap/gopacket_benchmark/benchmark.go b/vendor/github.com/google/gopacket/pcap/gopacket_benchmark/benchmark.go
deleted file mode 100644
index cbcae17..0000000
--- a/vendor/github.com/google/gopacket/pcap/gopacket_benchmark/benchmark.go
+++ /dev/null
@@ -1,247 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// This benchmark reads in file <tempdir>/gopacket_benchmark.pcap and measures
-// the time it takes to decode all packets from that file. If the file doesn't
-// exist, it's pulled down from a publicly available location. However, you can
-// feel free to substitute your own file at that location, in which case the
-// benchmark will run on your own data.
-//
-// It's also useful for figuring out which packets may be causing errors. Pass
-// in the --printErrors flag, and it'll print out error layers for each packet
-// that has them. This includes any packets that it's just unable to decode,
-// which is a great way to find new protocols to decode, and get test packets to
-// write tests for them.
-package main
-
-import (
- "compress/gzip"
- "encoding/hex"
- "flag"
- "fmt"
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
- "github.com/google/gopacket/pcap"
- "github.com/google/gopacket/tcpassembly"
- "io"
- "io/ioutil"
- "net/http"
- "os"
- "runtime"
- "runtime/pprof"
- "time"
-)
-
-var decodeLazy *bool = flag.Bool("lazy", false, "If true, use lazy decoding")
-var decodeNoCopy *bool = flag.Bool("nocopy", true, "If true, avoid an extra copy when decoding packets")
-var printErrors *bool = flag.Bool("printErrors", false, "If true, check for and print error layers.")
-var printLayers *bool = flag.Bool("printLayers", false, "If true, print out the layers of each packet")
-var repeat *int = flag.Int("repeat", 5, "Read over the file N times")
-var cpuProfile *string = flag.String("cpuprofile", "", "If set, write CPU profile to filename")
-var url *string = flag.String("url", "http://www.ll.mit.edu/mission/communications/cyber/CSTcorpora/ideval/data/1999/training/week1/tuesday/inside.tcpdump.gz", "URL to gzip'd pcap file")
-
-type BufferPacketSource struct {
- index int
- data [][]byte
- ci []gopacket.CaptureInfo
-}
-
-func NewBufferPacketSource(p gopacket.PacketDataSource) *BufferPacketSource {
- start := time.Now()
- b := &BufferPacketSource{}
- for {
- data, ci, err := p.ReadPacketData()
- if err == io.EOF {
- break
- }
- b.data = append(b.data, data)
- b.ci = append(b.ci, ci)
- }
- duration := time.Since(start)
- fmt.Printf("Reading packet data into memory: %d packets in %v, %v per packet\n", len(b.data), duration, duration/time.Duration(len(b.data)))
- return b
-}
-
-func (b *BufferPacketSource) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
- if b.index >= len(b.data) {
- err = io.EOF
- return
- }
- data = b.data[b.index]
- ci = b.ci[b.index]
- b.index++
- return
-}
-
-func (b *BufferPacketSource) Reset() {
- runtime.GC()
- b.index = 0
-}
-
-func main() {
- flag.Parse()
- filename := os.TempDir() + string(os.PathSeparator) + "gopacket_benchmark.pcap"
- if _, err := os.Stat(filename); err != nil {
- // This URL points to a publicly available packet data set from a DARPA
- // intrusion detection evaluation. See
- // http://www.ll.mit.edu/mission/communications/cyber/CSTcorpora/ideval/data/1999/training/week1/index.html
- // for more details.
- fmt.Println("Local pcap file", filename, "doesn't exist, reading from", *url)
- if resp, err := http.Get(*url); err != nil {
- panic(err)
- } else if out, err := os.Create(filename); err != nil {
- panic(err)
- } else if gz, err := gzip.NewReader(resp.Body); err != nil {
- panic(err)
- } else if n, err := io.Copy(out, gz); err != nil {
- panic(err)
- } else if err := gz.Close(); err != nil {
- panic(err)
- } else if err := out.Close(); err != nil {
- panic(err)
- } else {
- fmt.Println("Successfully read", n, "bytes from url, unzipped to local storage")
- }
- }
- fmt.Println("Reading file once through to hopefully cache most of it")
- if f, err := os.Open(filename); err != nil {
- panic(err)
- } else if n, err := io.Copy(ioutil.Discard, f); err != nil {
- panic(err)
- } else if err := f.Close(); err != nil {
- panic(err)
- } else {
- fmt.Println("Read in file", filename, ", total of", n, "bytes")
- }
- if *cpuProfile != "" {
- if cpu, err := os.Create(*cpuProfile); err != nil {
- panic(err)
- } else if err := pprof.StartCPUProfile(cpu); err != nil {
- panic(err)
- } else {
- defer func() {
- pprof.StopCPUProfile()
- cpu.Close()
- }()
- }
- }
- var packetDataSource *BufferPacketSource
- var packetSource *gopacket.PacketSource
- fmt.Printf("Opening file %q for read\n", filename)
- if h, err := pcap.OpenOffline(filename); err != nil {
- panic(err)
- } else {
- fmt.Println("Reading all packets into memory with BufferPacketSource.")
- start := time.Now()
- packetDataSource = NewBufferPacketSource(h)
- duration := time.Since(start)
- fmt.Printf("Time to read packet data into memory from file: %v\n", duration)
- packetSource = gopacket.NewPacketSource(packetDataSource, h.LinkType())
- packetSource.DecodeOptions.Lazy = *decodeLazy
- packetSource.DecodeOptions.NoCopy = *decodeNoCopy
- }
- fmt.Println()
- for i := 0; i < *repeat; i++ {
- packetDataSource.Reset()
- fmt.Printf("Benchmarking decode %d/%d\n", i+1, *repeat)
- benchmarkPacketDecode(packetSource)
- }
- fmt.Println()
- for i := 0; i < *repeat; i++ {
- packetDataSource.Reset()
- fmt.Printf("Benchmarking decoding layer parser %d/%d\n", i+1, *repeat)
- benchmarkLayerDecode(packetDataSource, false)
- }
- fmt.Println()
- for i := 0; i < *repeat; i++ {
- packetDataSource.Reset()
- fmt.Printf("Benchmarking decoding layer parser with assembly %d/%d\n", i+1, *repeat)
- benchmarkLayerDecode(packetDataSource, true)
- }
-}
-
-func benchmarkPacketDecode(packetSource *gopacket.PacketSource) {
- count, errors := 0, 0
- start := time.Now()
- for packet, err := packetSource.NextPacket(); err != io.EOF; packet, err = packetSource.NextPacket() {
- if err != nil {
- fmt.Println("Error reading in packet:", err)
- continue
- }
- count++
- var hasError bool
- if *printErrors && packet.ErrorLayer() != nil {
- fmt.Println("\n\n\nError decoding packet:", packet.ErrorLayer().Error())
- fmt.Println(hex.Dump(packet.Data()))
- fmt.Printf("%#v\n", packet.Data())
- errors++
- hasError = true
- }
- if *printLayers || hasError {
- fmt.Printf("\n=== PACKET %d ===\n", count)
- for _, l := range packet.Layers() {
- fmt.Printf("--- LAYER %v ---\n%#v\n\n", l.LayerType(), l)
- }
- fmt.Println()
- }
- }
- duration := time.Since(start)
- fmt.Printf("\tRead in %v packets in %v, %v per packet\n", count, duration, duration/time.Duration(count))
- if *printErrors {
- fmt.Printf("%v errors, successfully decoded %.02f%%\n", errors, float64(count-errors)*100.0/float64(count))
- }
-}
-
-type streamFactory struct {
-}
-
-func (s *streamFactory) New(netFlow, tcpFlow gopacket.Flow) tcpassembly.Stream {
- return s
-}
-func (s *streamFactory) Reassembled([]tcpassembly.Reassembly) {
-}
-func (s *streamFactory) ReassemblyComplete() {
-}
-
-func benchmarkLayerDecode(source *BufferPacketSource, assemble bool) {
- var tcp layers.TCP
- var ip layers.IPv4
- var eth layers.Ethernet
- var udp layers.UDP
- var icmp layers.ICMPv4
- var payload gopacket.Payload
- parser := gopacket.NewDecodingLayerParser(
- layers.LayerTypeEthernet,
- &eth, &ip, &icmp, &tcp, &udp, &payload)
- pool := tcpassembly.NewStreamPool(&streamFactory{})
- assembler := tcpassembly.NewAssembler(pool)
- var decoded []gopacket.LayerType
- start := time.Now()
- packets, decodedlayers, assembled := 0, 0, 0
- for {
- packets++
- data, ci, err := source.ReadPacketData()
- if err == io.EOF {
- break
- } else if err != nil {
- fmt.Println("Error reading packet: ", err)
- continue
- }
- err = parser.DecodeLayers(data, &decoded)
- for _, typ := range decoded {
- decodedlayers++
- if typ == layers.LayerTypeTCP && assemble {
- assembled++
- assembler.AssembleWithTimestamp(ip.NetworkFlow(), &tcp, ci.Timestamp)
- }
- }
- }
- if assemble {
- assembler.FlushAll()
- }
- duration := time.Since(start)
- fmt.Printf("\tRead in %d packets in %v, decoded %v layers, assembled %v packets: %v per packet\n", packets, duration, decodedlayers, assembled, duration/time.Duration(packets))
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcap.go b/vendor/github.com/google/gopacket/pcap/pcap.go
deleted file mode 100644
index 1ecdf03..0000000
--- a/vendor/github.com/google/gopacket/pcap/pcap.go
+++ /dev/null
@@ -1,1005 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcap
-
-/*
-#cgo solaris LDFLAGS: -L /opt/local/lib -lpcap
-#cgo linux LDFLAGS: -lpcap
-#cgo dragonfly LDFLAGS: -lpcap
-#cgo freebsd LDFLAGS: -lpcap
-#cgo openbsd LDFLAGS: -lpcap
-#cgo netbsd LDFLAGS: -lpcap
-#cgo darwin LDFLAGS: -lpcap
-#cgo windows CFLAGS: -I C:/WpdPack/Include
-#cgo windows,386 LDFLAGS: -L C:/WpdPack/Lib -lwpcap
-#cgo windows,amd64 LDFLAGS: -L C:/WpdPack/Lib/x64 -lwpcap
-#include <stdlib.h>
-#include <pcap.h>
-
-// Some old versions of pcap don't define this constant.
-#ifndef PCAP_NETMASK_UNKNOWN
-#define PCAP_NETMASK_UNKNOWN 0xffffffff
-#endif
-
-// libpcap doesn't actually export its version in a #define-guardable way,
-// so we have to use other defined things to differentiate versions.
-// We assume at least libpcap v1.1 at the moment.
-// See http://upstream-tracker.org/versions/libpcap.html
-
-#ifndef PCAP_ERROR_TSTAMP_PRECISION_NOTSUP // < v1.5
-
-int pcap_set_immediate_mode(pcap_t *p, int mode) {
- return PCAP_ERROR;
-}
-
-#ifndef PCAP_TSTAMP_HOST // < v1.2
-
-int pcap_set_tstamp_type(pcap_t* p, int t) { return -1; }
-int pcap_list_tstamp_types(pcap_t* p, int** t) { return 0; }
-void pcap_free_tstamp_types(int *tstamp_types) {}
-const char* pcap_tstamp_type_val_to_name(int t) {
- return "pcap timestamp types not supported";
-}
-int pcap_tstamp_type_name_to_val(const char* t) {
- return PCAP_ERROR;
-}
-
-#endif // < v1.2
-#endif // < v1.5
-
-#ifndef PCAP_ERROR_PROMISC_PERM_DENIED
-#define PCAP_ERROR_PROMISC_PERM_DENIED -11
-#endif
-
-// WinPcap doesn't export a pcap_statustostr, so use the less-specific
-// pcap_strerror. Note that linking against something like cygwin libpcap
-// may result is less-specific error messages.
-#ifdef WIN32
-#define pcap_statustostr pcap_strerror
-
-// WinPcap also doesn't export pcap_can_set_rfmon and pcap_set_rfmon,
-// as those are handled by separate libraries (airpcap).
-// https://www.winpcap.org/docs/docs_412/html/group__wpcapfunc.html
-// Stub out those functions here, returning values that indicate rfmon
-// setting is unavailable/unsuccessful.
-int pcap_can_set_rfmon(pcap_t *p) {
- return 0;
-}
-
-int pcap_set_rfmon(pcap_t *p, int rfmon) {
- return PCAP_ERROR;
-}
-#endif
-
-// Windows, Macs, and Linux all use different time types. Joy.
-#ifdef WIN32
-#define gopacket_time_secs_t long
-#define gopacket_time_usecs_t long
-#elif __APPLE__
-#define gopacket_time_secs_t __darwin_time_t
-#define gopacket_time_usecs_t __darwin_suseconds_t
-#elif __GLIBC__
-#define gopacket_time_secs_t __time_t
-#define gopacket_time_usecs_t __suseconds_t
-#else // Some form of linux/bsd/etc...
-#include <sys/param.h>
-#ifdef __OpenBSD__
-#define gopacket_time_secs_t u_int32_t
-#define gopacket_time_usecs_t u_int32_t
-#else
-#define gopacket_time_secs_t time_t
-#define gopacket_time_usecs_t suseconds_t
-#endif
-#endif
-*/
-import "C"
-
-import (
- "errors"
- "fmt"
- "io"
- "net"
- "reflect"
- "runtime"
- "strconv"
- "sync"
- "sync/atomic"
- "syscall"
- "time"
- "unsafe"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
-)
-
-const errorBufferSize = 256
-
-// MaxBpfInstructions is the maximum number of BPF instructions supported (BPF_MAXINSNS),
-// taken from Linux kernel: include/uapi/linux/bpf_common.h
-//
-// https://github.com/torvalds/linux/blob/master/include/uapi/linux/bpf_common.h
-const MaxBpfInstructions = 4096
-
-// 8 bytes per instruction, max 4096 instructions
-const bpfInstructionBufferSize = 8 * MaxBpfInstructions
-
-// Handle provides a connection to a pcap handle, allowing users to read packets
-// off the wire (Next), inject packets onto the wire (Inject), and
-// perform a number of other functions to affect and understand packet output.
-//
-// Handles are already pcap_activate'd
-type Handle struct {
- // cptr is the handle for the actual pcap C object.
- cptr *C.pcap_t
- timeout time.Duration
- device string
- deviceIndex int
- mu sync.Mutex
- closeMu sync.Mutex
- // stop is set to a non-zero value by Handle.Close to signal to
- // getNextBufPtrLocked to stop trying to read packets
- stop uint64
-
- // Since pointers to these objects are passed into a C function, if
- // they're declared locally then the Go compiler thinks they may have
- // escaped into C-land, so it allocates them on the heap. This causes a
- // huge memory hit, so to handle that we store them here instead.
- pkthdr *C.struct_pcap_pkthdr
- bufptr *C.u_char
-}
-
-// Stats contains statistics on how many packets were handled by a pcap handle,
-// and what was done with those packets.
-type Stats struct {
- PacketsReceived int
- PacketsDropped int
- PacketsIfDropped int
-}
-
-// Interface describes a single network interface on a machine.
-type Interface struct {
- Name string
- Description string
- Addresses []InterfaceAddress
- // TODO: add more elements
-}
-
-// Datalink describes the datalink
-type Datalink struct {
- Name string
- Description string
-}
-
-// InterfaceAddress describes an address associated with an Interface.
-// Currently, it's IPv4/6 specific.
-type InterfaceAddress struct {
- IP net.IP
- Netmask net.IPMask // Netmask may be nil if we were unable to retrieve it.
- // TODO: add broadcast + PtP dst ?
-}
-
-// BPF is a compiled filter program, useful for offline packet matching.
-type BPF struct {
- orig string
- bpf _Ctype_struct_bpf_program // takes a finalizer, not overriden by outsiders
-}
-
-// BPFInstruction is a byte encoded structure holding a BPF instruction
-type BPFInstruction struct {
- Code uint16
- Jt uint8
- Jf uint8
- K uint32
-}
-
-// BlockForever causes it to block forever waiting for packets, when passed
-// into SetTimeout or OpenLive, while still returning incoming packets to userland relatively
-// quickly.
-const BlockForever = -time.Millisecond * 10
-
-func timeoutMillis(timeout time.Duration) C.int {
- // Flip sign if necessary. See package docs on timeout for reasoning behind this.
- if timeout < 0 {
- timeout *= -1
- }
- // Round up
- if timeout != 0 && timeout < time.Millisecond {
- timeout = time.Millisecond
- }
- return C.int(timeout / time.Millisecond)
-}
-
-// OpenLive opens a device and returns a *Handle.
-// It takes as arguments the name of the device ("eth0"), the maximum size to
-// read for each packet (snaplen), whether to put the interface in promiscuous
-// mode, and a timeout.
-//
-// See the package documentation for important details regarding 'timeout'.
-func OpenLive(device string, snaplen int32, promisc bool, timeout time.Duration) (handle *Handle, _ error) {
- buf := (*C.char)(C.calloc(errorBufferSize, 1))
- defer C.free(unsafe.Pointer(buf))
-
- var pro C.int
- if promisc {
- pro = 1
- }
- p := &Handle{timeout: timeout, device: device}
-
- ifc, err := net.InterfaceByName(device)
- if err != nil {
- // The device wasn't found in the OS, but could be "any"
- // Set index to 0
- p.deviceIndex = 0
- } else {
- p.deviceIndex = ifc.Index
- }
-
- dev := C.CString(device)
- defer C.free(unsafe.Pointer(dev))
-
- p.cptr = C.pcap_open_live(dev, C.int(snaplen), pro, timeoutMillis(timeout), buf)
- if p.cptr == nil {
- return nil, errors.New(C.GoString(buf))
- }
-
- if err := p.openLive(); err != nil {
- C.pcap_close(p.cptr)
- return nil, err
- }
-
- return p, nil
-}
-
-// OpenOffline opens a file and returns its contents as a *Handle.
-func OpenOffline(file string) (handle *Handle, err error) {
- buf := (*C.char)(C.calloc(errorBufferSize, 1))
- defer C.free(unsafe.Pointer(buf))
- cf := C.CString(file)
- defer C.free(unsafe.Pointer(cf))
-
- cptr := C.pcap_open_offline(cf, buf)
- if cptr == nil {
- return nil, errors.New(C.GoString(buf))
- }
- return &Handle{cptr: cptr}, nil
-}
-
-// NextError is the return code from a call to Next.
-type NextError int32
-
-// NextError implements the error interface.
-func (n NextError) Error() string {
- switch n {
- case NextErrorOk:
- return "OK"
- case NextErrorTimeoutExpired:
- return "Timeout Expired"
- case NextErrorReadError:
- return "Read Error"
- case NextErrorNoMorePackets:
- return "No More Packets In File"
- case NextErrorNotActivated:
- return "Not Activated"
- }
- return strconv.Itoa(int(n))
-}
-
-// NextError values.
-const (
- NextErrorOk NextError = 1
- NextErrorTimeoutExpired NextError = 0
- NextErrorReadError NextError = -1
- // NextErrorNoMorePackets is returned when reading from a file (OpenOffline) and
- // EOF is reached. When this happens, Next() returns io.EOF instead of this.
- NextErrorNoMorePackets NextError = -2
- NextErrorNotActivated NextError = -3
-)
-
-// ReadPacketData returns the next packet read from the pcap handle, along with an error
-// code associated with that packet. If the packet is read successfully, the
-// returned error is nil.
-func (p *Handle) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
- p.mu.Lock()
- err = p.getNextBufPtrLocked(&ci)
- if err == nil {
- data = C.GoBytes(unsafe.Pointer(p.bufptr), C.int(ci.CaptureLength))
- }
- p.mu.Unlock()
- if err == NextErrorTimeoutExpired {
- runtime.Gosched()
- }
- return
-}
-
-type activateError C.int
-
-const (
- aeNoError = 0
- aeActivated = C.PCAP_ERROR_ACTIVATED
- aePromisc = C.PCAP_WARNING_PROMISC_NOTSUP
- aeNoSuchDevice = C.PCAP_ERROR_NO_SUCH_DEVICE
- aeDenied = C.PCAP_ERROR_PERM_DENIED
- aeNotUp = C.PCAP_ERROR_IFACE_NOT_UP
-)
-
-func (a activateError) Error() string {
- switch a {
- case aeNoError:
- return "No Error"
- case aeActivated:
- return "Already Activated"
- case aePromisc:
- return "Cannot set as promisc"
- case aeNoSuchDevice:
- return "No Such Device"
- case aeDenied:
- return "Permission Denied"
- case aeNotUp:
- return "Interface Not Up"
- default:
- return fmt.Sprintf("unknown activated error: %d", a)
- }
-}
-
-// getNextBufPtrLocked is shared code for ReadPacketData and
-// ZeroCopyReadPacketData.
-func (p *Handle) getNextBufPtrLocked(ci *gopacket.CaptureInfo) error {
- if p.cptr == nil {
- return io.EOF
- }
-
- for atomic.LoadUint64(&p.stop) == 0 {
- // try to read a packet if one is immediately available
- result := NextError(C.pcap_next_ex(p.cptr, &p.pkthdr, &p.bufptr))
-
- switch result {
- case NextErrorOk:
- // got a packet, set capture info and return
- sec := int64(p.pkthdr.ts.tv_sec)
- // convert micros to nanos
- nanos := int64(p.pkthdr.ts.tv_usec) * 1000
-
- ci.Timestamp = time.Unix(sec, nanos)
- ci.CaptureLength = int(p.pkthdr.caplen)
- ci.Length = int(p.pkthdr.len)
- ci.InterfaceIndex = p.deviceIndex
-
- return nil
- case NextErrorNoMorePackets:
- // no more packets, return EOF rather than libpcap-specific error
- return io.EOF
- case NextErrorTimeoutExpired:
- // Negative timeout means to loop forever, instead of actually returning
- // the timeout error.
- if p.timeout < 0 {
- // must have had a timeout... wait before trying again
- p.waitForPacket()
- continue
- }
- default:
- return result
- }
- }
-
- // stop must be set
- return io.EOF
-}
-
-// ZeroCopyReadPacketData reads the next packet off the wire, and returns its data.
-// The slice returned by ZeroCopyReadPacketData points to bytes owned by the
-// the Handle. Each call to ZeroCopyReadPacketData invalidates any data previously
-// returned by ZeroCopyReadPacketData. Care must be taken not to keep pointers
-// to old bytes when using ZeroCopyReadPacketData... if you need to keep data past
-// the next time you call ZeroCopyReadPacketData, use ReadPacketData, which copies
-// the bytes into a new buffer for you.
-// data1, _, _ := handle.ZeroCopyReadPacketData()
-// // do everything you want with data1 here, copying bytes out of it if you'd like to keep them around.
-// data2, _, _ := handle.ZeroCopyReadPacketData() // invalidates bytes in data1
-func (p *Handle) ZeroCopyReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
- p.mu.Lock()
- err = p.getNextBufPtrLocked(&ci)
- if err == nil {
- slice := (*reflect.SliceHeader)(unsafe.Pointer(&data))
- slice.Data = uintptr(unsafe.Pointer(p.bufptr))
- slice.Len = ci.CaptureLength
- slice.Cap = ci.CaptureLength
- }
- p.mu.Unlock()
- if err == NextErrorTimeoutExpired {
- runtime.Gosched()
- }
- return
-}
-
-// Close closes the underlying pcap handle.
-func (p *Handle) Close() {
- p.closeMu.Lock()
- defer p.closeMu.Unlock()
-
- if p.cptr == nil {
- return
- }
-
- atomic.StoreUint64(&p.stop, 1)
-
- // wait for packet reader to stop
- p.mu.Lock()
- defer p.mu.Unlock()
-
- C.pcap_close(p.cptr)
- p.cptr = nil
-}
-
-// Error returns the current error associated with a pcap handle (pcap_geterr).
-func (p *Handle) Error() error {
- return errors.New(C.GoString(C.pcap_geterr(p.cptr)))
-}
-
-// Stats returns statistics on the underlying pcap handle.
-func (p *Handle) Stats() (stat *Stats, err error) {
- var cstats _Ctype_struct_pcap_stat
- if -1 == C.pcap_stats(p.cptr, &cstats) {
- return nil, p.Error()
- }
- return &Stats{
- PacketsReceived: int(cstats.ps_recv),
- PacketsDropped: int(cstats.ps_drop),
- PacketsIfDropped: int(cstats.ps_ifdrop),
- }, nil
-}
-
-// ListDataLinks obtains a list of all possible data link types supported for an interface.
-func (p *Handle) ListDataLinks() (datalinks []Datalink, err error) {
- var dltbuf *C.int
-
- n := int(C.pcap_list_datalinks(p.cptr, &dltbuf))
- if -1 == n {
- return nil, p.Error()
- }
-
- defer C.pcap_free_datalinks(dltbuf)
-
- datalinks = make([]Datalink, n)
-
- dltArray := (*[100]C.int)(unsafe.Pointer(dltbuf))
-
- for i := 0; i < n; i++ {
- expr := C.pcap_datalink_val_to_name((*dltArray)[i])
- datalinks[i].Name = C.GoString(expr)
-
- expr = C.pcap_datalink_val_to_description((*dltArray)[i])
- datalinks[i].Description = C.GoString(expr)
- }
-
- return datalinks, nil
-}
-
-// pcap_compile is NOT thread-safe, so protect it.
-var pcapCompileMu sync.Mutex
-
-// compileBPFFilter always returns an allocated _Ctype_struct_bpf_program
-// It is the callers responsibility to free the memory again, e.g.
-//
-// C.pcap_freecode(&bpf)
-//
-func (p *Handle) compileBPFFilter(expr string) (_Ctype_struct_bpf_program, error) {
- errorBuf := (*C.char)(C.calloc(errorBufferSize, 1))
- defer C.free(unsafe.Pointer(errorBuf))
-
- var netp uint32
- var maskp uint32
-
- // Only do the lookup on network interfaces.
- // No device indicates we're handling a pcap file.
- if len(p.device) > 0 {
- dev := C.CString(p.device)
- defer C.free(unsafe.Pointer(dev))
- if -1 == C.pcap_lookupnet(
- dev,
- (*C.bpf_u_int32)(unsafe.Pointer(&netp)),
- (*C.bpf_u_int32)(unsafe.Pointer(&maskp)),
- errorBuf,
- ) {
- // We can't lookup the network, but that could be because the interface
- // doesn't have an IPv4.
- }
- }
-
- var bpf _Ctype_struct_bpf_program
- cexpr := C.CString(expr)
- defer C.free(unsafe.Pointer(cexpr))
-
- pcapCompileMu.Lock()
- defer pcapCompileMu.Unlock()
- if -1 == C.pcap_compile(p.cptr, &bpf, cexpr, 1, C.bpf_u_int32(maskp)) {
- return bpf, p.Error()
- }
-
- return bpf, nil
-}
-
-// CompileBPFFilter compiles and returns a BPF filter with given a link type and capture length.
-func CompileBPFFilter(linkType layers.LinkType, captureLength int, expr string) ([]BPFInstruction, error) {
- cptr := C.pcap_open_dead(C.int(linkType), C.int(captureLength))
- if cptr == nil {
- return nil, errors.New("error opening dead capture")
- }
-
- h := Handle{cptr: cptr}
- defer h.Close()
- return h.CompileBPFFilter(expr)
-}
-
-// CompileBPFFilter compiles and returns a BPF filter for the pcap handle.
-func (p *Handle) CompileBPFFilter(expr string) ([]BPFInstruction, error) {
- bpf, err := p.compileBPFFilter(expr)
- defer C.pcap_freecode(&bpf)
- if err != nil {
- return nil, err
- }
-
- bpfInsn := (*[bpfInstructionBufferSize]_Ctype_struct_bpf_insn)(unsafe.Pointer(bpf.bf_insns))[0:bpf.bf_len:bpf.bf_len]
- bpfInstruction := make([]BPFInstruction, len(bpfInsn), len(bpfInsn))
-
- for i, v := range bpfInsn {
- bpfInstruction[i].Code = uint16(v.code)
- bpfInstruction[i].Jt = uint8(v.jt)
- bpfInstruction[i].Jf = uint8(v.jf)
- bpfInstruction[i].K = uint32(v.k)
- }
-
- return bpfInstruction, nil
-}
-
-// SetBPFFilter compiles and sets a BPF filter for the pcap handle.
-func (p *Handle) SetBPFFilter(expr string) (err error) {
- bpf, err := p.compileBPFFilter(expr)
- defer C.pcap_freecode(&bpf)
- if err != nil {
- return err
- }
-
- if -1 == C.pcap_setfilter(p.cptr, &bpf) {
- return p.Error()
- }
-
- return nil
-}
-
-// SetBPFInstructionFilter may be used to apply a filter in BPF asm byte code format.
-//
-// Simplest way to generate BPF asm byte code is with tcpdump:
-// tcpdump -dd 'udp'
-//
-// The output may be used directly to add a filter, e.g.:
-// bpfInstructions := []pcap.BpfInstruction{
-// {0x28, 0, 0, 0x0000000c},
-// {0x15, 0, 9, 0x00000800},
-// {0x30, 0, 0, 0x00000017},
-// {0x15, 0, 7, 0x00000006},
-// {0x28, 0, 0, 0x00000014},
-// {0x45, 5, 0, 0x00001fff},
-// {0xb1, 0, 0, 0x0000000e},
-// {0x50, 0, 0, 0x0000001b},
-// {0x54, 0, 0, 0x00000012},
-// {0x15, 0, 1, 0x00000012},
-// {0x6, 0, 0, 0x0000ffff},
-// {0x6, 0, 0, 0x00000000},
-// }
-//
-// An other posibility is to write the bpf code in bpf asm.
-// Documentation: https://www.kernel.org/doc/Documentation/networking/filter.txt
-//
-// To compile the code use bpf_asm from
-// https://github.com/torvalds/linux/tree/master/tools/net
-//
-// The following command may be used to convert bpf_asm output to c/go struct, usable for SetBPFFilterByte:
-// bpf_asm -c tcp.bpf
-func (p *Handle) SetBPFInstructionFilter(bpfInstructions []BPFInstruction) (err error) {
- bpf, err := bpfInstructionFilter(bpfInstructions)
- if err != nil {
- return err
- }
-
- if -1 == C.pcap_setfilter(p.cptr, &bpf) {
- C.pcap_freecode(&bpf)
- return p.Error()
- }
-
- C.pcap_freecode(&bpf)
-
- return nil
-}
-func bpfInstructionFilter(bpfInstructions []BPFInstruction) (bpf _Ctype_struct_bpf_program, err error) {
- if len(bpfInstructions) < 1 {
- return bpf, errors.New("bpfInstructions must not be empty")
- }
-
- if len(bpfInstructions) > MaxBpfInstructions {
- return bpf, fmt.Errorf("bpfInstructions must not be larger than %d", MaxBpfInstructions)
- }
-
- bpf.bf_len = C.u_int(len(bpfInstructions))
- cbpfInsns := C.calloc(C.size_t(len(bpfInstructions)), C.size_t(unsafe.Sizeof(bpfInstructions[0])))
-
- copy((*[bpfInstructionBufferSize]BPFInstruction)(cbpfInsns)[0:len(bpfInstructions)], bpfInstructions)
- bpf.bf_insns = (*_Ctype_struct_bpf_insn)(cbpfInsns)
-
- return
-}
-
-// NewBPF compiles the given string into a new filter program.
-//
-// BPF filters need to be created from activated handles, because they need to
-// know the underlying link type to correctly compile their offsets.
-func (p *Handle) NewBPF(expr string) (*BPF, error) {
- bpf := &BPF{orig: expr}
- cexpr := C.CString(expr)
- defer C.free(unsafe.Pointer(cexpr))
-
- pcapCompileMu.Lock()
- defer pcapCompileMu.Unlock()
- if C.pcap_compile(p.cptr, &bpf.bpf, cexpr /* optimize */, 1, C.PCAP_NETMASK_UNKNOWN) != 0 {
- return nil, p.Error()
- }
-
- runtime.SetFinalizer(bpf, destroyBPF)
- return bpf, nil
-}
-
-// NewBPFInstructionFilter sets the given BPFInstructions as new filter program.
-//
-// More details see func SetBPFInstructionFilter
-//
-// BPF filters need to be created from activated handles, because they need to
-// know the underlying link type to correctly compile their offsets.
-func (p *Handle) NewBPFInstructionFilter(bpfInstructions []BPFInstruction) (*BPF, error) {
- var err error
- bpf := &BPF{orig: "BPF Instruction Filter"}
-
- bpf.bpf, err = bpfInstructionFilter(bpfInstructions)
- if err != nil {
- return nil, err
- }
-
- runtime.SetFinalizer(bpf, destroyBPF)
- return bpf, nil
-}
-func destroyBPF(bpf *BPF) {
- C.pcap_freecode(&bpf.bpf)
-}
-
-// String returns the original string this BPF filter was compiled from.
-func (b *BPF) String() string {
- return b.orig
-}
-
-// Matches returns true if the given packet data matches this filter.
-func (b *BPF) Matches(ci gopacket.CaptureInfo, data []byte) bool {
- var hdr C.struct_pcap_pkthdr
- hdr.ts.tv_sec = C.gopacket_time_secs_t(ci.Timestamp.Unix())
- hdr.ts.tv_usec = C.gopacket_time_usecs_t(ci.Timestamp.Nanosecond() / 1000)
- hdr.caplen = C.bpf_u_int32(len(data)) // Trust actual length over ci.Length.
- hdr.len = C.bpf_u_int32(ci.Length)
- dataptr := (*C.u_char)(unsafe.Pointer(&data[0]))
- return C.pcap_offline_filter(&b.bpf, &hdr, dataptr) != 0
-}
-
-// Version returns pcap_lib_version.
-func Version() string {
- return C.GoString(C.pcap_lib_version())
-}
-
-// LinkType returns pcap_datalink, as a layers.LinkType.
-func (p *Handle) LinkType() layers.LinkType {
- return layers.LinkType(C.pcap_datalink(p.cptr))
-}
-
-// SetLinkType calls pcap_set_datalink on the pcap handle.
-func (p *Handle) SetLinkType(dlt layers.LinkType) error {
- if -1 == C.pcap_set_datalink(p.cptr, C.int(dlt)) {
- return p.Error()
- }
- return nil
-}
-
-// FindAllDevs attempts to enumerate all interfaces on the current machine.
-func FindAllDevs() (ifs []Interface, err error) {
- var buf *C.char
- buf = (*C.char)(C.calloc(errorBufferSize, 1))
- defer C.free(unsafe.Pointer(buf))
- var alldevsp *C.pcap_if_t
-
- if -1 == C.pcap_findalldevs((**C.pcap_if_t)(&alldevsp), buf) {
- return nil, errors.New(C.GoString(buf))
- }
- defer C.pcap_freealldevs((*C.pcap_if_t)(alldevsp))
- dev := alldevsp
- var i uint32
- for i = 0; dev != nil; dev = (*C.pcap_if_t)(dev.next) {
- i++
- }
- ifs = make([]Interface, i)
- dev = alldevsp
- for j := uint32(0); dev != nil; dev = (*C.pcap_if_t)(dev.next) {
- var iface Interface
- iface.Name = C.GoString(dev.name)
- iface.Description = C.GoString(dev.description)
- iface.Addresses = findalladdresses(dev.addresses)
- // TODO: add more elements
- ifs[j] = iface
- j++
- }
- return
-}
-
-func findalladdresses(addresses *_Ctype_struct_pcap_addr) (retval []InterfaceAddress) {
- // TODO - make it support more than IPv4 and IPv6?
- retval = make([]InterfaceAddress, 0, 1)
- for curaddr := addresses; curaddr != nil; curaddr = (*_Ctype_struct_pcap_addr)(curaddr.next) {
- // Strangely, it appears that in some cases, we get a pcap address back from
- // pcap_findalldevs with a nil .addr. It appears that we can skip over
- // these.
- if curaddr.addr == nil {
- continue
- }
- var a InterfaceAddress
- var err error
- if a.IP, err = sockaddrToIP((*syscall.RawSockaddr)(unsafe.Pointer(curaddr.addr))); err != nil {
- continue
- }
- // To be safe, we'll also check for netmask.
- if curaddr.netmask == nil {
- continue
- }
- if a.Netmask, err = sockaddrToIP((*syscall.RawSockaddr)(unsafe.Pointer(curaddr.netmask))); err != nil {
- // If we got an IP address but we can't get a netmask, just return the IP
- // address.
- a.Netmask = nil
- }
- retval = append(retval, a)
- }
- return
-}
-
-func sockaddrToIP(rsa *syscall.RawSockaddr) (IP []byte, err error) {
- switch rsa.Family {
- case syscall.AF_INET:
- pp := (*syscall.RawSockaddrInet4)(unsafe.Pointer(rsa))
- IP = make([]byte, 4)
- for i := 0; i < len(IP); i++ {
- IP[i] = pp.Addr[i]
- }
- return
- case syscall.AF_INET6:
- pp := (*syscall.RawSockaddrInet6)(unsafe.Pointer(rsa))
- IP = make([]byte, 16)
- for i := 0; i < len(IP); i++ {
- IP[i] = pp.Addr[i]
- }
- return
- }
- err = errors.New("Unsupported address type")
- return
-}
-
-// WritePacketData calls pcap_sendpacket, injecting the given data into the pcap handle.
-func (p *Handle) WritePacketData(data []byte) (err error) {
- if -1 == C.pcap_sendpacket(p.cptr, (*C.u_char)(&data[0]), (C.int)(len(data))) {
- err = p.Error()
- }
- return
-}
-
-// Direction is used by Handle.SetDirection.
-type Direction uint8
-
-// Direction values for Handle.SetDirection.
-const (
- DirectionIn Direction = C.PCAP_D_IN
- DirectionOut Direction = C.PCAP_D_OUT
- DirectionInOut Direction = C.PCAP_D_INOUT
-)
-
-// SetDirection sets the direction for which packets will be captured.
-func (p *Handle) SetDirection(direction Direction) error {
- if direction != DirectionIn && direction != DirectionOut && direction != DirectionInOut {
- return fmt.Errorf("Invalid direction: %v", direction)
- }
- if status := C.pcap_setdirection(p.cptr, (C.pcap_direction_t)(direction)); status < 0 {
- return statusError(status)
- }
- return nil
-}
-
-// TimestampSource tells PCAP which type of timestamp to use for packets.
-type TimestampSource C.int
-
-// String returns the timestamp type as a human-readable string.
-func (t TimestampSource) String() string {
- return C.GoString(C.pcap_tstamp_type_val_to_name(C.int(t)))
-}
-
-// TimestampSourceFromString translates a string into a timestamp type, case
-// insensitive.
-func TimestampSourceFromString(s string) (TimestampSource, error) {
- cs := C.CString(s)
- defer C.free(unsafe.Pointer(cs))
- t := C.pcap_tstamp_type_name_to_val(cs)
- if t < 0 {
- return 0, statusError(t)
- }
- return TimestampSource(t), nil
-}
-
-func statusError(status C.int) error {
- return errors.New(C.GoString(C.pcap_statustostr(status)))
-}
-
-// InactiveHandle allows you to call pre-pcap_activate functions on your pcap
-// handle to set it up just the way you'd like.
-type InactiveHandle struct {
- // cptr is the handle for the actual pcap C object.
- cptr *C.pcap_t
- device string
- deviceIndex int
- timeout time.Duration
-}
-
-// Activate activates the handle. The current InactiveHandle becomes invalid
-// and all future function calls on it will fail.
-func (p *InactiveHandle) Activate() (*Handle, error) {
- err := activateError(C.pcap_activate(p.cptr))
- if err != aeNoError {
- return nil, err
- }
- h := &Handle{
- cptr: p.cptr,
- timeout: p.timeout,
- device: p.device,
- deviceIndex: p.deviceIndex,
- }
- p.cptr = nil
- return h, nil
-}
-
-// CleanUp cleans up any stuff left over from a successful or failed building
-// of a handle.
-func (p *InactiveHandle) CleanUp() {
- if p.cptr != nil {
- C.pcap_close(p.cptr)
- }
-}
-
-// NewInactiveHandle creates a new InactiveHandle, which wraps an un-activated PCAP handle.
-// Callers of NewInactiveHandle should immediately defer 'CleanUp', as in:
-// inactive := NewInactiveHandle("eth0")
-// defer inactive.CleanUp()
-func NewInactiveHandle(device string) (*InactiveHandle, error) {
- buf := (*C.char)(C.calloc(errorBufferSize, 1))
- defer C.free(unsafe.Pointer(buf))
- dev := C.CString(device)
- defer C.free(unsafe.Pointer(dev))
-
- // Try to get the interface index, but iy could be something like "any"
- // in which case use 0, which doesn't exist in nature
- deviceIndex := 0
- ifc, err := net.InterfaceByName(device)
- if err == nil {
- deviceIndex = ifc.Index
- }
-
- // This copies a bunch of the pcap_open_live implementation from pcap.c:
- cptr := C.pcap_create(dev, buf)
- if cptr == nil {
- return nil, errors.New(C.GoString(buf))
- }
- return &InactiveHandle{cptr: cptr, device: device, deviceIndex: deviceIndex}, nil
-}
-
-// SetSnapLen sets the snap length (max bytes per packet to capture).
-func (p *InactiveHandle) SetSnapLen(snaplen int) error {
- if status := C.pcap_set_snaplen(p.cptr, C.int(snaplen)); status < 0 {
- return statusError(status)
- }
- return nil
-}
-
-// SetPromisc sets the handle to either be promiscuous (capture packets
-// unrelated to this host) or not.
-func (p *InactiveHandle) SetPromisc(promisc bool) error {
- var pro C.int
- if promisc {
- pro = 1
- }
- if status := C.pcap_set_promisc(p.cptr, pro); status < 0 {
- return statusError(status)
- }
- return nil
-}
-
-// SetTimeout sets the read timeout for the handle.
-//
-// See the package documentation for important details regarding 'timeout'.
-func (p *InactiveHandle) SetTimeout(timeout time.Duration) error {
- if status := C.pcap_set_timeout(p.cptr, timeoutMillis(timeout)); status < 0 {
- return statusError(status)
- }
- p.timeout = timeout
- return nil
-}
-
-// SupportedTimestamps returns a list of supported timstamp types for this
-// handle.
-func (p *InactiveHandle) SupportedTimestamps() (out []TimestampSource) {
- var types *C.int
- n := int(C.pcap_list_tstamp_types(p.cptr, &types))
- defer C.pcap_free_tstamp_types(types)
- typesArray := (*[100]C.int)(unsafe.Pointer(types))
- for i := 0; i < n; i++ {
- out = append(out, TimestampSource((*typesArray)[i]))
- }
- return
-}
-
-// SetTimestampSource sets the type of timestamp generator PCAP uses when
-// attaching timestamps to packets.
-func (p *InactiveHandle) SetTimestampSource(t TimestampSource) error {
- if status := C.pcap_set_tstamp_type(p.cptr, C.int(t)); status < 0 {
- return statusError(status)
- }
- return nil
-}
-
-// CannotSetRFMon is returned by SetRFMon if the handle does not allow
-// setting RFMon because pcap_can_set_rfmon returns 0.
-var CannotSetRFMon = errors.New("Cannot set rfmon for this handle")
-
-// SetRFMon turns on radio monitoring mode, similar to promiscuous mode but for
-// wireless networks. If this mode is enabled, the interface will not need to
-// associate with an access point before it can receive traffic.
-func (p *InactiveHandle) SetRFMon(monitor bool) error {
- var mon C.int
- if monitor {
- mon = 1
- }
- switch canset := C.pcap_can_set_rfmon(p.cptr); canset {
- case 0:
- return CannotSetRFMon
- case 1:
- // success
- default:
- return statusError(canset)
- }
- if status := C.pcap_set_rfmon(p.cptr, mon); status != 0 {
- return statusError(status)
- }
- return nil
-}
-
-// SetBufferSize sets the buffer size (in bytes) of the handle.
-func (p *InactiveHandle) SetBufferSize(bufferSize int) error {
- if status := C.pcap_set_buffer_size(p.cptr, C.int(bufferSize)); status < 0 {
- return statusError(status)
- }
- return nil
-}
-
-// SetImmediateMode sets (or unsets) the immediate mode of the
-// handle. In immediate mode, packets are delivered to the application
-// as soon as they arrive. In other words, this overrides SetTimeout.
-func (p *InactiveHandle) SetImmediateMode(mode bool) error {
- var md C.int
- if mode {
- md = 1
- }
- if status := C.pcap_set_immediate_mode(p.cptr, md); status < 0 {
- return statusError(status)
- }
- return nil
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcap_test.go b/vendor/github.com/google/gopacket/pcap/pcap_test.go
deleted file mode 100644
index 04f1812..0000000
--- a/vendor/github.com/google/gopacket/pcap/pcap_test.go
+++ /dev/null
@@ -1,308 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcap
-
-import (
- "fmt"
- "io"
- "io/ioutil"
- "log"
- "os"
- "testing"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
-)
-
-func TestPcapNonexistentFile(t *testing.T) {
- handle, err := OpenOffline("/path/to/nonexistent/file")
- if err == nil {
- t.Error("No error returned for nonexistent file open")
- } else {
- t.Logf("Error returned for nonexistent file: %v", err)
- }
- if handle != nil {
- t.Error("Non-nil handle returned for nonexistent file open")
- }
-}
-
-func TestPcapFileRead(t *testing.T) {
- invalidData := []byte{
- 0xAB, 0xAD, 0x1D, 0xEA,
- }
-
- invalidPcap, err := ioutil.TempFile("", "invalid.pcap")
- if err != nil {
- t.Fatal(err)
- }
- defer os.Remove(invalidPcap.Name())
-
- err = ioutil.WriteFile(invalidPcap.Name(), invalidData, 0644)
- if err != nil {
- t.Fatal(err)
- }
- defer invalidPcap.Close()
-
- for _, file := range []struct {
- filename string
- num int
- expectedLayers []gopacket.LayerType
- err string
- }{
- {filename: "test_loopback.pcap",
- num: 24,
- expectedLayers: []gopacket.LayerType{
- layers.LayerTypeLoopback,
- layers.LayerTypeIPv6,
- layers.LayerTypeTCP,
- },
- },
- {filename: "test_ethernet.pcap",
- num: 16,
- expectedLayers: []gopacket.LayerType{
- layers.LayerTypeEthernet,
- layers.LayerTypeIPv4,
- layers.LayerTypeTCP,
- },
- },
- {filename: "test_dns.pcap",
- num: 10,
- expectedLayers: []gopacket.LayerType{
- layers.LayerTypeEthernet,
- layers.LayerTypeIPv4,
- layers.LayerTypeUDP,
- layers.LayerTypeDNS,
- },
- },
- {filename: invalidPcap.Name(),
- num: 0,
- err: "unknown file format",
- },
- } {
- t.Logf("\n\n\n\nProcessing file %s\n\n\n\n", file.filename)
-
- packets := []gopacket.Packet{}
- if handle, err := OpenOffline(file.filename); err != nil {
- if file.err != "" {
- if err.Error() != file.err {
- t.Errorf("expected message %q; got %q", file.err, err.Error())
- }
- } else {
- t.Fatal(err)
- }
- } else {
- if file.err != "" {
- t.Fatalf("Expected error, got none")
- }
- packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
- for packet := range packetSource.Packets() {
- packets = append(packets, packet)
- }
- }
- if len(packets) != file.num {
- t.Fatal("Incorrect number of packets, want", file.num, "got", len(packets))
- }
- for i, p := range packets {
- t.Log(p.Dump())
- for _, layertype := range file.expectedLayers {
- if p.Layer(layertype) == nil {
- t.Fatal("Packet", i, "has no layer type\n%s", layertype, p.Dump())
- }
- }
- }
- }
-}
-
-func TestBPF(t *testing.T) {
- handle, err := OpenOffline("test_ethernet.pcap")
- if err != nil {
- t.Fatal(err)
- }
-
- for _, expected := range []struct {
- expr string
- Error bool
- Result bool
- }{
- {"foobar", true, false},
- {"tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)", false, true},
- {"tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-ack", false, true},
- {"udp", false, false},
- } {
- data, ci, err := handle.ReadPacketData()
- if err != nil {
- t.Fatal(err)
- }
- t.Log("Testing filter", expected.expr)
- if bpf, err := handle.NewBPF(expected.expr); err != nil {
- if !expected.Error {
- t.Error(err, "while compiling filter was unexpected")
- }
- } else if expected.Error {
- t.Error("expected error but didn't see one")
- } else if matches := bpf.Matches(ci, data); matches != expected.Result {
- t.Error("Filter result was", matches, "but should be", expected.Result)
- }
- }
-}
-
-func TestBPFInstruction(t *testing.T) {
- handle, err := OpenOffline("test_ethernet.pcap")
- if err != nil {
- t.Fatal(err)
- }
-
- cntr := 0
- oversizedBpfInstructionBuffer := [MaxBpfInstructions + 1]BPFInstruction{}
-
- for _, expected := range []struct {
- Filter string
- BpfInstruction []BPFInstruction
- Error bool
- Result bool
- }{
- // {"foobar", true, false},
- {"foobar", []BPFInstruction{}, true, false},
-
- // tcpdump -dd 'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)'
- {"tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)",
- []BPFInstruction{
- {0x28, 0, 0, 0x0000000c},
- {0x15, 0, 9, 0x00000800},
- {0x30, 0, 0, 0x00000017},
- {0x15, 0, 7, 0x00000006},
- {0x28, 0, 0, 0x00000014},
- {0x45, 5, 0, 0x00001fff},
- {0xb1, 0, 0, 0x0000000e},
- {0x50, 0, 0, 0x0000001b},
- {0x54, 0, 0, 0x00000012},
- {0x15, 0, 1, 0x00000012},
- {0x6, 0, 0, 0x0000ffff},
- {0x6, 0, 0, 0x00000000},
- }, false, true},
-
- // tcpdump -dd 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-ack'
- {"tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-ack",
- []BPFInstruction{
- {0x28, 0, 0, 0x0000000c},
- {0x15, 0, 9, 0x00000800},
- {0x30, 0, 0, 0x00000017},
- {0x15, 0, 7, 0x00000006},
- {0x28, 0, 0, 0x00000014},
- {0x45, 5, 0, 0x00001fff},
- {0xb1, 0, 0, 0x0000000e},
- {0x50, 0, 0, 0x0000001b},
- {0x54, 0, 0, 0x00000012},
- {0x15, 0, 1, 0x00000010},
- {0x6, 0, 0, 0x0000ffff},
- {0x6, 0, 0, 0x00000000},
- }, false, true},
-
- // tcpdump -dd 'udp'
- {"udp",
- []BPFInstruction{
- {0x28, 0, 0, 0x0000000c},
- {0x15, 0, 5, 0x000086dd},
- {0x30, 0, 0, 0x00000014},
- {0x15, 6, 0, 0x00000011},
- {0x15, 0, 6, 0x0000002c},
- {0x30, 0, 0, 0x00000036},
- {0x15, 3, 4, 0x00000011},
- {0x15, 0, 3, 0x00000800},
- {0x30, 0, 0, 0x00000017},
- {0x15, 0, 1, 0x00000011},
- {0x6, 0, 0, 0x0000ffff},
- {0x6, 0, 0, 0x00000000},
- }, false, false},
-
- {"", oversizedBpfInstructionBuffer[:], true, false},
- } {
- cntr++
- data, ci, err := handle.ReadPacketData()
- if err != nil {
- t.Fatal(err)
- }
-
- t.Log("Testing BpfInstruction filter", cntr)
- if bpf, err := handle.NewBPFInstructionFilter(expected.BpfInstruction); err != nil {
- if !expected.Error {
- t.Error(err, "while compiling filter was unexpected")
- }
- } else if expected.Error {
- t.Error("expected error but didn't see one")
- } else if matches := bpf.Matches(ci, data); matches != expected.Result {
- t.Error("Filter result was", matches, "but should be", expected.Result)
- }
-
- if expected.Filter != "" {
- t.Log("Testing dead bpf filter", cntr)
- if bpf, err := CompileBPFFilter(layers.LinkTypeEthernet, 65535, expected.Filter); err != nil {
- if !expected.Error {
- t.Error(err, "while compiling filter was unexpected")
- }
- } else if expected.Error {
- t.Error("expected error but didn't see one")
- } else {
- if len(bpf) != len(expected.BpfInstruction) {
- t.Errorf("expected %d instructions, got %d", len(expected.BpfInstruction), len(bpf))
- }
- for i := 0; i < len(bpf); i++ {
- if bpf[i] != expected.BpfInstruction[i] {
- t.Errorf("expected instruction %d = %d, got %d", i, expected.BpfInstruction[i], bpf[i])
- }
- }
- }
- }
- }
-}
-
-func ExampleBPF() {
- handle, err := OpenOffline("test_ethernet.pcap")
- if err != nil {
- log.Fatal(err)
- }
- synack, err := handle.NewBPF("tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)")
- if err != nil {
- log.Fatal(err)
- }
- syn, err := handle.NewBPF("tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn")
- if err != nil {
- log.Fatal(err)
- }
- for {
- data, ci, err := handle.ReadPacketData()
- switch {
- case err == io.EOF:
- return
- case err != nil:
- log.Fatal(err)
- case synack.Matches(ci, data):
- fmt.Println("SYN/ACK packet")
- case syn.Matches(ci, data):
- fmt.Println("SYN packet")
- default:
- fmt.Println("SYN flag not set")
- }
- }
- // Output:
- // SYN packet
- // SYN/ACK packet
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
- // SYN flag not set
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcap_tester.go b/vendor/github.com/google/gopacket/pcap/pcap_tester.go
deleted file mode 100644
index ee32690..0000000
--- a/vendor/github.com/google/gopacket/pcap/pcap_tester.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build ignore
-
-// This binary tests that PCAP packet capture is working correctly by issuing
-// HTTP requests, then making sure we actually capture data off the wire.
-package main
-
-import (
- "errors"
- "flag"
- "fmt"
- "log"
- "net"
- "net/http"
- "os"
- "time"
-
- "github.com/google/gopacket/pcap"
-)
-
-var mode = flag.String("mode", "basic", "One of: basic,filtered,timestamp")
-
-func generatePackets() {
- if resp, err := http.Get("http://code.google.com"); err != nil {
- log.Printf("Could not get HTTP: %v", err)
- } else {
- resp.Body.Close()
- }
-}
-
-func main() {
- flag.Parse()
- ifaces, err := net.Interfaces()
- if err != nil {
- log.Fatal(err)
- }
- for _, iface := range ifaces {
- log.Printf("Trying capture on %q", iface.Name)
- if err := tryCapture(iface); err != nil {
- log.Printf("Error capturing on %q: %v", iface.Name, err)
- } else {
- log.Printf("Successfully captured on %q", iface.Name)
- return
- }
- }
- os.Exit(1)
-}
-
-func tryCapture(iface net.Interface) error {
- if iface.Name[:2] == "lo" {
- return errors.New("skipping loopback")
- }
- var h *pcap.Handle
- var err error
- switch *mode {
- case "basic":
- h, err = pcap.OpenLive(iface.Name, 65536, false, time.Second*3)
- if err != nil {
- return fmt.Errorf("openlive: %v", err)
- }
- defer h.Close()
- case "filtered":
- h, err = pcap.OpenLive(iface.Name, 65536, false, time.Second*3)
- if err != nil {
- return fmt.Errorf("openlive: %v", err)
- }
- defer h.Close()
- if err := h.SetBPFFilter("port 80 or port 443"); err != nil {
- return fmt.Errorf("setbpf: %v", err)
- }
- case "timestamp":
- u, err := pcap.NewInactiveHandle(iface.Name)
- if err != nil {
- return err
- }
- defer u.CleanUp()
- if err = u.SetSnapLen(65536); err != nil {
- return err
- } else if err = u.SetPromisc(false); err != nil {
- return err
- } else if err = u.SetTimeout(time.Second * 3); err != nil {
- return err
- }
- sources := u.SupportedTimestamps()
- if len(sources) == 0 {
- return errors.New("no supported timestamp sources")
- } else if err := u.SetTimestampSource(sources[0]); err != nil {
- return fmt.Errorf("settimestampsource(%v): %v", sources[0], err)
- } else if h, err = u.Activate(); err != nil {
- return fmt.Errorf("could not activate: %v", err)
- }
- defer h.Close()
- default:
- panic("Invalid --mode: " + *mode)
- }
- go generatePackets()
- h.ReadPacketData() // Do one dummy read to clear any timeouts.
- data, ci, err := h.ReadPacketData()
- if err != nil {
- return fmt.Errorf("readpacketdata: %v", err)
- }
- log.Printf("Read packet, %v bytes, CI: %+v", len(data), ci)
- return nil
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcap_unix.go b/vendor/github.com/google/gopacket/pcap/pcap_unix.go
deleted file mode 100644
index b2a6dcd..0000000
--- a/vendor/github.com/google/gopacket/pcap/pcap_unix.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-//
-// +build !windows
-
-package pcap
-
-/*
-#include <stdlib.h>
-#include <pcap.h>
-
-// pcap_wait returns when the next packet is available or the timeout expires.
-// Since it uses pcap_get_selectable_fd, it will not work in Windows.
-int pcap_wait(pcap_t *p, int usec) {
- fd_set fds;
- int fd;
- struct timeval tv;
-
- fd = pcap_get_selectable_fd(p);
- if(fd < 0) {
- return fd;
- }
-
- FD_ZERO(&fds);
- FD_SET(fd, &fds);
-
- tv.tv_sec = 0;
- tv.tv_usec = usec;
-
- if(usec != 0) {
- return select(fd+1, &fds, NULL, NULL, &tv);
- }
-
- // block indefinitely if no timeout provided
- return select(fd+1, &fds, NULL, NULL, NULL);
-}
-*/
-import "C"
-
-import (
- "errors"
- "unsafe"
-)
-
-func (p *Handle) openLive() error {
- buf := (*C.char)(C.calloc(errorBufferSize, 1))
- defer C.free(unsafe.Pointer(buf))
-
- // Change the device to non-blocking, we'll use pcap_wait to wait until the
- // handle is ready to read.
- if v := C.pcap_setnonblock(p.cptr, 1, buf); v == -1 {
- return errors.New(C.GoString(buf))
- }
-
- return nil
-}
-
-// waitForPacket waits for a packet or for the timeout to expire.
-func (p *Handle) waitForPacket() {
- // need to wait less than the read timeout according to pcap documentation.
- // timeoutMillis rounds up to at least one millisecond so we can safely
- // subtract up to a millisecond.
- usec := timeoutMillis(p.timeout) * 1000
- usec -= 100
-
- C.pcap_wait(p.cptr, usec)
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcap_windows.go b/vendor/github.com/google/gopacket/pcap/pcap_windows.go
deleted file mode 100644
index e3df123..0000000
--- a/vendor/github.com/google/gopacket/pcap/pcap_windows.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcap
-
-import (
- "runtime"
-)
-
-func (p *Handle) openLive() error {
- // do nothing
- return nil
-}
-
-// waitForPacket waits for a packet or for the timeout to expire.
-func (p *Handle) waitForPacket() {
- // can't use select() so instead just switch goroutines
- runtime.Gosched()
-}
diff --git a/vendor/github.com/google/gopacket/pcap/pcapgo_test.go b/vendor/github.com/google/gopacket/pcap/pcapgo_test.go
deleted file mode 100644
index 4de018a..0000000
--- a/vendor/github.com/google/gopacket/pcap/pcapgo_test.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcap
-
-import (
- "bytes"
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
- "github.com/google/gopacket/pcapgo"
- "io/ioutil"
- "reflect"
- "testing"
- "time"
-)
-
-func TestPCAPGoWrite(t *testing.T) {
- f, err := ioutil.TempFile("", "pcapgo")
- if err != nil {
- t.Fatal(err)
- }
- data := []byte{0xab, 0xcd, 0xef, 0x01, 0x02, 0x03, 0x04}
- ci := gopacket.CaptureInfo{
- Timestamp: time.Unix(12345667, 1234567000),
- Length: 700,
- CaptureLength: len(data),
- }
- func() {
- defer f.Close()
- w := pcapgo.NewWriter(f)
- if err := w.WriteFileHeader(65536, layers.LinkTypeEthernet); err != nil {
- t.Fatal(err)
- }
- if err := w.WritePacket(ci, data); err != nil {
- t.Fatal(err)
- }
- }()
- h, err := OpenOffline(f.Name())
- if err != nil {
- t.Fatal(err)
- }
- defer h.Close()
- gotData, gotCI, err := h.ReadPacketData()
- if err != nil {
- t.Fatal("could not read first packet:", err)
- }
- if !bytes.Equal(gotData, data) {
- t.Errorf("byte mismatch:\nwant: %v\n got: %v", data, gotData)
- }
- if !reflect.DeepEqual(ci, gotCI) {
- t.Errorf("CI mismatch:\nwant: %v\n got: %v", ci, gotCI)
- }
-}
diff --git a/vendor/github.com/google/gopacket/pcap/test_dns.pcap b/vendor/github.com/google/gopacket/pcap/test_dns.pcap
deleted file mode 100644
index 3a79f92..0000000
--- a/vendor/github.com/google/gopacket/pcap/test_dns.pcap
+++ /dev/null
Binary files differ
diff --git a/vendor/github.com/google/gopacket/pcap/test_ethernet.pcap b/vendor/github.com/google/gopacket/pcap/test_ethernet.pcap
deleted file mode 100644
index 1f8a87c..0000000
--- a/vendor/github.com/google/gopacket/pcap/test_ethernet.pcap
+++ /dev/null
Binary files differ
diff --git a/vendor/github.com/google/gopacket/pcap/test_loopback.pcap b/vendor/github.com/google/gopacket/pcap/test_loopback.pcap
deleted file mode 100644
index ddeb82c..0000000
--- a/vendor/github.com/google/gopacket/pcap/test_loopback.pcap
+++ /dev/null
Binary files differ
diff --git a/vendor/github.com/google/gopacket/pcapgo/read.go b/vendor/github.com/google/gopacket/pcapgo/read.go
deleted file mode 100644
index 5acd06f..0000000
--- a/vendor/github.com/google/gopacket/pcapgo/read.go
+++ /dev/null
@@ -1,155 +0,0 @@
-// Copyright 2014 Damjan Cvetko. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcapgo
-
-import (
- "encoding/binary"
- "errors"
- "fmt"
- "io"
- "time"
-
- "bufio"
- "compress/gzip"
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
-)
-
-// Reader wraps an underlying io.Reader to read packet data in PCAP
-// format. See http://wiki.wireshark.org/Development/LibpcapFileFormat
-// for information on the file format.
-//
-// We currenty read v2.4 file format with nanosecond and microsecdond
-// timestamp resolution in little-endian and big-endian encoding.
-//
-// If the PCAP data is gzip compressed it is transparently uncompressed
-// by wrapping the given io.Reader with a gzip.Reader.
-type Reader struct {
- r io.Reader
- byteOrder binary.ByteOrder
- nanoSecsFactor uint32
- versionMajor uint16
- versionMinor uint16
- // timezone
- // sigfigs
- snaplen uint32
- linkType layers.LinkType
- // reusable buffer
- buf [16]byte
-}
-
-const magicNanoseconds = 0xA1B23C4D
-const magicMicrosecondsBigendian = 0xD4C3B2A1
-const magicNanosecondsBigendian = 0x4D3CB2A1
-
-const magicGzip1 = 0x1f
-const magicGzip2 = 0x8b
-
-// NewReader returns a new reader object, for reading packet data from
-// the given reader. The reader must be open and header data is
-// read from it at this point.
-// If the file format is not supported an error is returned
-//
-// // Create new reader:
-// f, _ := os.Open("/tmp/file.pcap")
-// defer f.Close()
-// r, err := NewReader(f)
-// data, ci, err := r.ReadPacketData()
-func NewReader(r io.Reader) (*Reader, error) {
- ret := Reader{r: r}
- if err := ret.readHeader(); err != nil {
- return nil, err
- }
- return &ret, nil
-}
-
-func (r *Reader) readHeader() error {
- br := bufio.NewReader(r.r)
- gzipMagic, err := br.Peek(2)
- if err != nil {
- return err
- }
-
- if gzipMagic[0] == magicGzip1 && gzipMagic[1] == magicGzip2 {
- if r.r, err = gzip.NewReader(br); err != nil {
- return err
- }
- } else {
- r.r = br
- }
-
- buf := make([]byte, 24)
- if n, err := io.ReadFull(r.r, buf); err != nil {
- return err
- } else if n < 24 {
- return errors.New("Not enough data for read")
- }
- if magic := binary.LittleEndian.Uint32(buf[0:4]); magic == magicNanoseconds {
- r.byteOrder = binary.LittleEndian
- r.nanoSecsFactor = 1
- } else if magic == magicNanosecondsBigendian {
- r.byteOrder = binary.BigEndian
- r.nanoSecsFactor = 1
- } else if magic == magicMicroseconds {
- r.byteOrder = binary.LittleEndian
- r.nanoSecsFactor = 1000
- } else if magic == magicMicrosecondsBigendian {
- r.byteOrder = binary.BigEndian
- r.nanoSecsFactor = 1000
- } else {
- return fmt.Errorf("Unknown magic %x", magic)
- }
- if r.versionMajor = r.byteOrder.Uint16(buf[4:6]); r.versionMajor != versionMajor {
- return fmt.Errorf("Unknown major version %d", r.versionMajor)
- }
- if r.versionMinor = r.byteOrder.Uint16(buf[6:8]); r.versionMinor != versionMinor {
- return fmt.Errorf("Unknown minor version %d", r.versionMinor)
- }
- // ignore timezone 8:12 and sigfigs 12:16
- r.snaplen = r.byteOrder.Uint32(buf[16:20])
- r.linkType = layers.LinkType(r.byteOrder.Uint32(buf[20:24]))
- return nil
-}
-
-// ReadPacketData reads next packet from file.
-func (r *Reader) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
- if ci, err = r.readPacketHeader(); err != nil {
- return
- }
- if ci.CaptureLength > int(r.snaplen) {
- err = fmt.Errorf("capture length exceeds snap length: %d > %d", 16+ci.CaptureLength, r.snaplen)
- return
- }
- data = make([]byte, ci.CaptureLength)
- _, err = io.ReadFull(r.r, data)
- return data, ci, err
-}
-
-func (r *Reader) readPacketHeader() (ci gopacket.CaptureInfo, err error) {
- if _, err = io.ReadFull(r.r, r.buf[:]); err != nil {
- return
- }
- ci.Timestamp = time.Unix(int64(r.byteOrder.Uint32(r.buf[0:4])), int64(r.byteOrder.Uint32(r.buf[4:8])*r.nanoSecsFactor)).UTC()
- ci.CaptureLength = int(r.byteOrder.Uint32(r.buf[8:12]))
- ci.Length = int(r.byteOrder.Uint32(r.buf[12:16]))
- return
-}
-
-// LinkType returns network, as a layers.LinkType.
-func (r *Reader) LinkType() layers.LinkType {
- return r.linkType
-}
-
-// Snaplen returns the snapshot length of the capture file.
-func (r *Reader) Snaplen() uint32 {
- return r.snaplen
-}
-
-// Reader formater
-func (r *Reader) String() string {
- return fmt.Sprintf("PcapFile maj: %x min: %x snaplen: %d linktype: %s", r.versionMajor, r.versionMinor, r.snaplen, r.linkType)
-}
diff --git a/vendor/github.com/google/gopacket/pcapgo/read_test.go b/vendor/github.com/google/gopacket/pcapgo/read_test.go
deleted file mode 100644
index 87bf7ab..0000000
--- a/vendor/github.com/google/gopacket/pcapgo/read_test.go
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright 2014 Damjan Cvetko. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-package pcapgo
-
-import (
- "bytes"
- "testing"
- "time"
-)
-
-// test header read
-func TestCreatePcapReader(t *testing.T) {
- test := []byte{
- 0xd4, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- }
- buf := bytes.NewBuffer(test)
- _, err := NewReader(buf)
- if err != nil {
- t.Error(err)
- t.FailNow()
- }
-}
-
-// test big endian file read
-func TestCreatePcapReaderBigEndian(t *testing.T) {
- test := []byte{
- 0xa1, 0xb2, 0xc3, 0xd4, 0x00, 0x02, 0x00, 0x04,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01,
- }
- buf := bytes.NewBuffer(test)
- _, err := NewReader(buf)
- if err != nil {
- t.Error(err)
- t.FailNow()
- }
-}
-
-// test opening invalid data
-func TestCreatePcapReaderFail(t *testing.T) {
- test := []byte{
- 0xd0, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- }
- buf := bytes.NewBuffer(test)
- _, err := NewReader(buf)
- if err == nil {
- t.Error("Should fail but did not")
- t.FailNow()
- }
-}
-
-func TestPacket(t *testing.T) {
- test := []byte{
- 0xd4, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00, // magic, maj, min
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // tz, sigfigs
- 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // snaplen, linkType
- 0x5A, 0xCC, 0x1A, 0x54, 0x01, 0x00, 0x00, 0x00, // sec, usec
- 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // cap len, full len
- 0x01, 0x02, 0x03, 0x04, // data
- }
-
- buf := bytes.NewBuffer(test)
- r, err := NewReader(buf)
-
- data, ci, err := r.ReadPacketData()
- if err != nil {
- t.Error(err)
- t.FailNow()
- }
- if !ci.Timestamp.Equal(time.Date(2014, 9, 18, 12, 13, 14, 1000, time.UTC)) {
- t.Error("Invalid time read")
- t.FailNow()
- }
- if ci.CaptureLength != 4 || ci.Length != 8 {
- t.Error("Invalid CapLen or Len")
- }
- want := []byte{1, 2, 3, 4}
- if !bytes.Equal(data, want) {
- t.Errorf("buf mismatch:\nwant: %+v\ngot: %+v", want, data)
- }
-}
-
-func TestPacketNano(t *testing.T) {
- test := []byte{
- 0x4d, 0x3c, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00, // magic, maj, min
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // tz, sigfigs
- 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // snaplen, linkType
- 0x5A, 0xCC, 0x1A, 0x54, 0x01, 0x00, 0x00, 0x00, // sec, usec
- 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // cap len, full len
- 0x01, 0x02, 0x03, 0x04, // data
- }
-
- buf := bytes.NewBuffer(test)
- r, err := NewReader(buf)
-
- data, ci, err := r.ReadPacketData()
- if err != nil {
- t.Error(err)
- t.FailNow()
- }
- if !ci.Timestamp.Equal(time.Date(2014, 9, 18, 12, 13, 14, 1, time.UTC)) {
- t.Error("Invalid time read")
- t.FailNow()
- }
- if ci.CaptureLength != 4 || ci.Length != 8 {
- t.Error("Invalid CapLen or Len")
- }
- want := []byte{1, 2, 3, 4}
- if !bytes.Equal(data, want) {
- t.Errorf("buf mismatch:\nwant: %+v\ngot: %+v", want, data)
- }
-}
-
-func TestGzipPacket(t *testing.T) {
- test := []byte{
- 0x1f, 0x8b, 0x08, 0x08, 0x92, 0x4d, 0x81, 0x57,
- 0x00, 0x03, 0x74, 0x65, 0x73, 0x74, 0x00, 0xbb,
- 0x72, 0x78, 0xd3, 0x42, 0x26, 0x06, 0x16, 0x06,
- 0x18, 0xf8, 0xff, 0x9f, 0x81, 0x81, 0x11, 0x48,
- 0x47, 0x9d, 0x91, 0x0a, 0x01, 0xd1, 0x20, 0x19,
- 0x0e, 0x20, 0x66, 0x64, 0x62, 0x66, 0x01, 0x00,
- 0xe4, 0x76, 0x9b, 0x75, 0x2c, 0x00, 0x00, 0x00,
- }
- buf := bytes.NewBuffer(test)
- r, err := NewReader(buf)
- if err != nil {
- t.Error("Unexpected error returned:", err)
- t.FailNow()
- }
-
- data, ci, err := r.ReadPacketData()
- if err != nil {
- t.Error(err)
- t.FailNow()
- }
- if !ci.Timestamp.Equal(time.Date(2014, 9, 18, 12, 13, 14, 1000, time.UTC)) {
- t.Error("Invalid time read")
- t.FailNow()
- }
- if ci.CaptureLength != 4 || ci.Length != 8 {
- t.Error("Invalid CapLen or Len")
- }
- want := []byte{1, 2, 3, 4}
- if !bytes.Equal(data, want) {
- t.Errorf("buf mismatch:\nwant: %+v\ngot: %+v", want, data)
- }
-}
-
-func TestTruncatedGzipPacket(t *testing.T) {
- test := []byte{
- 0x1f, 0x8b, 0x08,
- }
- buf := bytes.NewBuffer(test)
- _, err := NewReader(buf)
- if err == nil {
- t.Error("Should fail but did not")
- t.FailNow()
- }
-}
-
-func TestPacketBufferReuse(t *testing.T) {
- test := []byte{
- 0xd4, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00, // magic, maj, min
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // tz, sigfigs
- 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // snaplen, linkType
- 0x5A, 0xCC, 0x1A, 0x54, 0x01, 0x00, 0x00, 0x00, // sec, usec
- 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // cap len, full len
- 0x01, 0x02, 0x03, 0x04, // data
- 0x5A, 0xCC, 0x1A, 0x54, 0x01, 0x00, 0x00, 0x00, // sec, usec
- 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // cap len, full len
- 0x01, 0x02, 0x03, 0x04, // data
- }
-
- buf := bytes.NewBuffer(test)
- r, err := NewReader(buf)
-
- data1, _, err := r.ReadPacketData()
- if err != nil {
- t.Error(err)
- t.FailNow()
- }
- if want := []byte{1, 2, 3, 4}; !bytes.Equal(data1, want) {
- t.Errorf("buf mismatch:\nwant: %+v\ngot: %+v", want, data1)
- }
- data2, _, err := r.ReadPacketData()
- if err != nil {
- t.Error(err)
- t.FailNow()
- }
- for i := range data1 {
- data1[i] = 0xff // modify data1 after getting data2, make sure we don't overlap buffers.
- }
- if want := []byte{1, 2, 3, 4}; !bytes.Equal(data2, want) {
- t.Errorf("buf mismatch:\nwant: %+v\ngot: %+v", want, data2)
- }
-}
diff --git a/vendor/github.com/google/gopacket/pcapgo/write.go b/vendor/github.com/google/gopacket/pcapgo/write.go
deleted file mode 100644
index bfc312f..0000000
--- a/vendor/github.com/google/gopacket/pcapgo/write.go
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package pcapgo provides some native PCAP support, not requiring
-// C libpcap to be installed.
-package pcapgo
-
-import (
- "encoding/binary"
- "fmt"
- "io"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
-)
-
-// Writer wraps an underlying io.Writer to write packet data in PCAP
-// format. See http://wiki.wireshark.org/Development/LibpcapFileFormat
-// for information on the file format.
-//
-// For those that care, we currently write v2.4 files with nanosecond
-// timestamp resolution and little-endian encoding.
-type Writer struct {
- w io.Writer
-}
-
-const magicMicroseconds = 0xA1B2C3D4
-const versionMajor = 2
-const versionMinor = 4
-
-// NewWriter returns a new writer object, for writing packet data out
-// to the given writer. If this is a new empty writer (as opposed to
-// an append), you must call WriteFileHeader before WritePacket.
-//
-// // Write a new file:
-// f, _ := os.Create("/tmp/file.pcap")
-// w := pcapgo.NewWriter(f)
-// w.WriteFileHeader(65536, layers.LinkTypeEthernet) // new file, must do this.
-// w.WritePacket(gopacket.CaptureInfo{...}, data1)
-// f.Close()
-// // Append to existing file (must have same snaplen and linktype)
-// f2, _ := os.OpenFile("/tmp/file.pcap", os.O_APPEND, 0700)
-// w2 := pcapgo.NewWriter(f2)
-// // no need for file header, it's already written.
-// w2.WritePacket(gopacket.CaptureInfo{...}, data2)
-// f2.Close()
-func NewWriter(w io.Writer) *Writer {
- return &Writer{w: w}
-}
-
-// WriteFileHeader writes a file header out to the writer.
-// This must be called exactly once per output.
-func (w *Writer) WriteFileHeader(snaplen uint32, linktype layers.LinkType) error {
- var buf [24]byte
- binary.LittleEndian.PutUint32(buf[0:4], magicMicroseconds)
- binary.LittleEndian.PutUint16(buf[4:6], versionMajor)
- binary.LittleEndian.PutUint16(buf[6:8], versionMinor)
- // bytes 8:12 stay 0 (timezone = UTC)
- // bytes 12:16 stay 0 (sigfigs is always set to zero, according to
- // http://wiki.wireshark.org/Development/LibpcapFileFormat
- binary.LittleEndian.PutUint32(buf[16:20], snaplen)
- binary.LittleEndian.PutUint32(buf[20:24], uint32(linktype))
- _, err := w.w.Write(buf[:])
- return err
-}
-
-const nanosPerMicro = 1000
-
-func (w *Writer) writePacketHeader(ci gopacket.CaptureInfo) error {
- var buf [16]byte
-
- t := ci.Timestamp
- if t.IsZero() {
- t = time.Now()
- }
- secs := t.Unix()
- usecs := t.Nanosecond() / nanosPerMicro
- binary.LittleEndian.PutUint32(buf[0:4], uint32(secs))
- binary.LittleEndian.PutUint32(buf[4:8], uint32(usecs))
- binary.LittleEndian.PutUint32(buf[8:12], uint32(ci.CaptureLength))
- binary.LittleEndian.PutUint32(buf[12:16], uint32(ci.Length))
- _, err := w.w.Write(buf[:])
- return err
-}
-
-// WritePacket writes the given packet data out to the file.
-func (w *Writer) WritePacket(ci gopacket.CaptureInfo, data []byte) error {
- if ci.CaptureLength != len(data) {
- return fmt.Errorf("capture length %d does not match data length %d", ci.CaptureLength, len(data))
- }
- if ci.CaptureLength > ci.Length {
- return fmt.Errorf("invalid capture info %+v: capture length > length", ci)
- }
- if err := w.writePacketHeader(ci); err != nil {
- return fmt.Errorf("error writing packet header: %v", err)
- }
- _, err := w.w.Write(data)
- return err
-}
diff --git a/vendor/github.com/google/gopacket/pcapgo/write_test.go b/vendor/github.com/google/gopacket/pcapgo/write_test.go
deleted file mode 100644
index 5b87d6a..0000000
--- a/vendor/github.com/google/gopacket/pcapgo/write_test.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pcapgo
-
-import (
- "bytes"
- "github.com/google/gopacket"
- "testing"
- "time"
-)
-
-func TestWriteHeader(t *testing.T) {
- var buf bytes.Buffer
- w := NewWriter(&buf)
- w.WriteFileHeader(0x1234, 0x56)
- want := []byte{
- 0xd4, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x34, 0x12, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00,
- }
- if got := buf.Bytes(); !bytes.Equal(got, want) {
- t.Errorf("buf mismatch:\nwant: %+v\ngot: %+v", want, got)
- }
-}
-
-func TestWritePacket(t *testing.T) {
- ci := gopacket.CaptureInfo{
- Timestamp: time.Unix(0x01020304, 0xAA*1000),
- Length: 0xABCD,
- CaptureLength: 10,
- }
- data := []byte{9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
- var buf bytes.Buffer
- w := NewWriter(&buf)
- w.WritePacket(ci, data)
- want := []byte{
- 0x04, 0x03, 0x02, 0x01, 0xAA, 0x00, 0x00, 0x00,
- 0x0A, 0x00, 0x00, 0x00, 0xCD, 0xAB, 0x00, 0x00,
- 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
- }
- if got := buf.Bytes(); !bytes.Equal(got, want) {
- t.Errorf("buf mismatch:\nwant: %+v\ngot: %+v", want, got)
- }
-}
-
-func TestCaptureInfoErrors(t *testing.T) {
- data := []byte{1, 2, 3, 4}
- ts := time.Unix(0, 0)
- for _, test := range []gopacket.CaptureInfo{
- gopacket.CaptureInfo{
- Timestamp: ts,
- Length: 5,
- CaptureLength: 5,
- },
- gopacket.CaptureInfo{
- Timestamp: ts,
- Length: 3,
- CaptureLength: 4,
- },
- } {
- var buf bytes.Buffer
- w := NewWriter(&buf)
- if err := w.WritePacket(test, data); err == nil {
- t.Errorf("CaptureInfo %+v should have error", test)
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/pfring/doc.go b/vendor/github.com/google/gopacket/pfring/doc.go
deleted file mode 100644
index 32baaf6..0000000
--- a/vendor/github.com/google/gopacket/pfring/doc.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-/*Package pfring wraps the PF_RING C library for Go.
-
-PF_RING is a high-performance packet capture library written by ntop.org (see
-http://www.ntop.org/products/pf_ring/). This library allows you to utilize the
-PF_RING library with gopacket to read packet data and decode it.
-
-This package is meant to be used with its parent,
-http://github.com/google/gopacket, although it can also be used independently
-if you just want to get packet data from the wire.
-
-Simple Example
-
-This is probably the simplest code you can use to start getting packets through
-pfring:
-
- if ring, err := pfring.NewRing("eth0", 65536, pfring.FlagPromisc); err != nil {
- panic(err)
- } else if err := ring.SetBPFFilter("tcp and port 80"); err != nil { // optional
- panic(err)
- } else if err := ring.Enable(); err != nil { // Must do this!, or you get no packets!
- panic(err)
- } else {
- packetSource := gopacket.NewPacketSource(ring, layers.LinkTypeEthernet)
- for packet := range packetSource.Packets() {
- handlePacket(packet) // Do something with a packet here.
- }
- }
-
-Pfring Tweaks
-
-PF_RING has a ton of optimizations and tweaks to make sure you get just the
-packets you want. For example, if you're only using pfring to read packets,
-consider running:
-
- ring.SetSocketMode(pfring.ReadOnly)
-
-If you only care about packets received on your interface (not those transmitted
-by the interface), you can run:
-
- ring.SetDirection(pfring.ReceiveOnly)
-
-Pfring Clusters
-
-PF_RING has an idea of 'clusters', where multiple applications can all read from
-the same cluster, and PF_RING will multiplex packets over that cluster such that
-only one application receives each packet. We won't discuss this mechanism in
-too much more detail (see the ntop.org docs for more info), but here's how to
-utilize this with the pfring go library:
-
- ring.SetCluster(1, pfring.ClusterPerFlow5Tuple)
-*/
-package pfring
diff --git a/vendor/github.com/google/gopacket/pfring/pfring.go b/vendor/github.com/google/gopacket/pfring/pfring.go
deleted file mode 100644
index 1d2fa68..0000000
--- a/vendor/github.com/google/gopacket/pfring/pfring.go
+++ /dev/null
@@ -1,343 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-// Copyright 2009-2011 Andreas Krennmair. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package pfring
-
-/*
-#cgo LDFLAGS: -lpfring -lpcap
-#include <stdlib.h>
-#include <pfring.h>
-#include <linux/pf_ring.h>
-
-int pfring_readpacketdatato_wrapper(
- pfring* ring,
- u_char* buffer,
- u_int buffer_len,
- struct pfring_pkthdr* hdr) {
- // We can't pass a Go pointer to a Go pointer which means we can't pass
- // buffer as a uchar**, like pfring_recv wants, for ReadPacketDataTo. So,
- // this wrapper does the pointer conversion in C code. Since this isn't
- // zero-copy, it turns out that the pointer-to-pointer part of things isn't
- // actually used anyway.
- return pfring_recv(ring, &buffer, buffer_len, hdr, 1);
-}
-*/
-import "C"
-
-// NOTE: If you install PF_RING with non-standard options, you may also need
-// to use LDFLAGS -lnuma and/or -lrt. Both have been reported necessary if
-// PF_RING is configured with --disable-bpf.
-
-import (
- "fmt"
- "net"
- "os"
- "strconv"
- "sync"
- "time"
- "unsafe"
-
- "github.com/google/gopacket"
-)
-
-const errorBufferSize = 256
-
-// Ring provides a handle to a pf_ring.
-type Ring struct {
- // cptr is the handle for the actual pcap C object.
- cptr *C.pfring
- snaplen int
- useExtendedPacketHeader bool
- interfaceIndex int
- mu sync.Mutex
- // Since pointers to these objects are passed into a C function, if
- // they're declared locally then the Go compiler thinks they may have
- // escaped into C-land, so it allocates them on the heap. This causes a
- // huge memory hit, so to handle that we store them here instead.
- pkthdr C.struct_pfring_pkthdr
- bufPtr *C.u_char
-}
-
-// Flag provides a set of boolean flags to use when creating a new ring.
-type Flag uint32
-
-// Set of flags that can be passed (OR'd together) to NewRing.
-const (
- FlagReentrant Flag = C.PF_RING_REENTRANT
- FlagLongHeader Flag = C.PF_RING_LONG_HEADER
- FlagPromisc Flag = C.PF_RING_PROMISC
- FlagDNASymmetricRSS Flag = C.PF_RING_DNA_SYMMETRIC_RSS
- FlagTimestamp Flag = C.PF_RING_TIMESTAMP
- FlagHWTimestamp Flag = C.PF_RING_HW_TIMESTAMP
-)
-
-// NewRing creates a new PFRing. Note that when the ring is initially created,
-// it is disabled. The caller must call Enable to start receiving packets.
-// The caller should call Close on the given ring when finished with it.
-func NewRing(device string, snaplen uint32, flags Flag) (ring *Ring, _ error) {
- dev := C.CString(device)
- defer C.free(unsafe.Pointer(dev))
-
- cptr, err := C.pfring_open(dev, C.u_int32_t(snaplen), C.u_int32_t(flags))
- if cptr == nil || err != nil {
- return nil, fmt.Errorf("pfring NewRing error: %v", err)
- }
- ring = &Ring{cptr: cptr, snaplen: int(snaplen)}
-
- if flags&FlagLongHeader == FlagLongHeader {
- ring.useExtendedPacketHeader = true
- } else {
- ifc, err := net.InterfaceByName(device)
- if err == nil {
- ring.interfaceIndex = ifc.Index
- }
- }
- ring.SetApplicationName(os.Args[0])
- return
-}
-
-// Close closes the given Ring. After this call, the Ring should no longer be
-// used.
-func (r *Ring) Close() {
- C.pfring_close(r.cptr)
-}
-
-// NextResult is the return code from a call to Next.
-type NextResult int32
-
-// Set of results that could be returned from a call to get another packet.
-const (
- NextNoPacketNonblocking NextResult = 0
- NextError NextResult = -1
- NextOk NextResult = 1
- NextNotEnabled NextResult = -7
-)
-
-// NextResult implements the error interface.
-func (n NextResult) Error() string {
- switch n {
- case NextNoPacketNonblocking:
- return "No packet available, nonblocking socket"
- case NextError:
- return "Generic error"
- case NextOk:
- return "Success (not an error)"
- case NextNotEnabled:
- return "Ring not enabled"
- }
- return strconv.Itoa(int(n))
-}
-
-// ReadPacketDataTo reads packet data into a user-supplied buffer.
-// This function ignores snaplen and instead reads up to the length of the
-// passed-in slice.
-// The number of bytes read into data will be returned in ci.CaptureLength.
-func (r *Ring) ReadPacketDataTo(data []byte) (ci gopacket.CaptureInfo, err error) {
- // This tricky bufPtr points to the start of our slice data, so pfring_recv
- // will actually write directly into our Go slice. Nice!
- r.mu.Lock()
- r.bufPtr = (*C.u_char)(unsafe.Pointer(&data[0]))
- result := NextResult(C.pfring_readpacketdatato_wrapper(r.cptr, r.bufPtr, C.u_int(len(data)), &r.pkthdr))
- if result != NextOk {
- err = result
- r.mu.Unlock()
- return
- }
- ci.Timestamp = time.Unix(int64(r.pkthdr.ts.tv_sec),
- int64(r.pkthdr.ts.tv_usec)*1000) // convert micros to nanos
- ci.CaptureLength = int(r.pkthdr.caplen)
- ci.Length = int(r.pkthdr.len)
- if r.useExtendedPacketHeader {
- ci.InterfaceIndex = int(r.pkthdr.extended_hdr.if_index)
- } else {
- ci.InterfaceIndex = r.interfaceIndex
- }
- r.mu.Unlock()
- return
-}
-
-// ReadPacketData returns the next packet read from the pcap handle, along with an error
-// code associated with that packet. If the packet is read successfully, the
-// returned error is nil.
-func (r *Ring) ReadPacketData() (data []byte, ci gopacket.CaptureInfo, err error) {
- data = make([]byte, r.snaplen)
- ci, err = r.ReadPacketDataTo(data)
- if err != nil {
- data = nil
- return
- }
- data = data[:ci.CaptureLength]
- return
-}
-
-// ClusterType is a type of clustering used when balancing across multiple
-// rings.
-type ClusterType C.cluster_type
-
-const (
- // ClusterPerFlow clusters by <src ip, src port, dst ip, dst port, proto,
- // vlan>
- ClusterPerFlow ClusterType = C.cluster_per_flow
- // ClusterRoundRobin round-robins packets between applications, ignoring
- // packet information.
- ClusterRoundRobin ClusterType = C.cluster_round_robin
- // ClusterPerFlow2Tuple clusters by <src ip, dst ip>
- ClusterPerFlow2Tuple ClusterType = C.cluster_per_flow_2_tuple
- // ClusterPerFlow4Tuple clusters by <src ip, src port, dst ip, dst port>
- ClusterPerFlow4Tuple ClusterType = C.cluster_per_flow_4_tuple
- // ClusterPerFlow5Tuple clusters by <src ip, src port, dst ip, dst port,
- // proto>
- ClusterPerFlow5Tuple ClusterType = C.cluster_per_flow_5_tuple
- // ClusterPerFlowTCP5Tuple acts like ClusterPerFlow5Tuple for TCP packets and
- // like ClusterPerFlow2Tuple for all other packets.
- ClusterPerFlowTCP5Tuple ClusterType = C.cluster_per_flow_tcp_5_tuple
-)
-
-// SetCluster sets which cluster the ring should be part of, and the cluster
-// type to use.
-func (r *Ring) SetCluster(cluster int, typ ClusterType) error {
- if rv := C.pfring_set_cluster(r.cptr, C.u_int(cluster), C.cluster_type(typ)); rv != 0 {
- return fmt.Errorf("Unable to set cluster, got error code %d", rv)
- }
- return nil
-}
-
-// RemoveFromCluster removes the ring from the cluster it was put in with
-// SetCluster.
-func (r *Ring) RemoveFromCluster() error {
- if rv := C.pfring_remove_from_cluster(r.cptr); rv != 0 {
- return fmt.Errorf("Unable to remove from cluster, got error code %d", rv)
- }
- return nil
-}
-
-// SetSamplingRate sets the sampling rate to 1/<rate>.
-func (r *Ring) SetSamplingRate(rate int) error {
- if rv := C.pfring_set_sampling_rate(r.cptr, C.u_int32_t(rate)); rv != 0 {
- return fmt.Errorf("Unable to set sampling rate, got error code %d", rv)
- }
- return nil
-}
-
-// SetBPFFilter sets the BPF filter for the ring.
-func (r *Ring) SetBPFFilter(bpfFilter string) error {
- filter := C.CString(bpfFilter)
- defer C.free(unsafe.Pointer(filter))
- if rv := C.pfring_set_bpf_filter(r.cptr, filter); rv != 0 {
- return fmt.Errorf("Unable to set BPF filter, got error code %d", rv)
- }
- return nil
-}
-
-// RemoveBPFFilter removes the BPF filter from the ring.
-func (r *Ring) RemoveBPFFilter() error {
- if rv := C.pfring_remove_bpf_filter(r.cptr); rv != 0 {
- return fmt.Errorf("Unable to remove BPF filter, got error code %d", rv)
- }
- return nil
-}
-
-// WritePacketData uses the ring to send raw packet data to the interface.
-func (r *Ring) WritePacketData(data []byte) error {
- buf := (*C.char)(unsafe.Pointer(&data[0]))
- if rv := C.pfring_send(r.cptr, buf, C.u_int(len(data)), 1); rv < 0 {
- return fmt.Errorf("Unable to send packet data, got error code %d", rv)
- }
- return nil
-}
-
-// Enable enables the given ring. This function MUST be called on each new
-// ring after it has been set up, or that ring will NOT receive packets.
-func (r *Ring) Enable() error {
- if rv := C.pfring_enable_ring(r.cptr); rv != 0 {
- return fmt.Errorf("Unable to enable ring, got error code %d", rv)
- }
- return nil
-}
-
-// Disable disables the given ring. After this call, it will no longer receive
-// packets.
-func (r *Ring) Disable() error {
- if rv := C.pfring_disable_ring(r.cptr); rv != 0 {
- return fmt.Errorf("Unable to disable ring, got error code %d", rv)
- }
- return nil
-}
-
-// Stats provides simple statistics on a ring.
-type Stats struct {
- Received, Dropped uint64
-}
-
-// Stats returns statistsics for the ring.
-func (r *Ring) Stats() (s Stats, err error) {
- var stats C.pfring_stat
- if rv := C.pfring_stats(r.cptr, &stats); rv != 0 {
- err = fmt.Errorf("Unable to get ring stats, got error code %d", rv)
- return
- }
- s.Received = uint64(stats.recv)
- s.Dropped = uint64(stats.drop)
- return
-}
-
-// Direction is a simple enum to set which packets (TX, RX, or both) a ring
-// captures.
-type Direction C.packet_direction
-
-const (
- // TransmitOnly will only capture packets transmitted by the ring's
- // interface(s).
- TransmitOnly Direction = C.tx_only_direction
- // ReceiveOnly will only capture packets received by the ring's
- // interface(s).
- ReceiveOnly Direction = C.rx_only_direction
- // ReceiveAndTransmit will capture both received and transmitted packets on
- // the ring's interface(s).
- ReceiveAndTransmit Direction = C.rx_and_tx_direction
-)
-
-// SetDirection sets which packets should be captured by the ring.
-func (r *Ring) SetDirection(d Direction) error {
- if rv := C.pfring_set_direction(r.cptr, C.packet_direction(d)); rv != 0 {
- return fmt.Errorf("Unable to set ring direction, got error code %d", rv)
- }
- return nil
-}
-
-// SocketMode is an enum for setting whether a ring should read, write, or both.
-type SocketMode C.socket_mode
-
-const (
- // WriteOnly sets up the ring to only send packets (Inject), not read them.
- WriteOnly SocketMode = C.send_only_mode
- // ReadOnly sets up the ring to only receive packets (ReadPacketData), not
- // send them.
- ReadOnly SocketMode = C.recv_only_mode
- // WriteAndRead sets up the ring to both send and receive packets.
- WriteAndRead SocketMode = C.send_and_recv_mode
-)
-
-// SetSocketMode sets the mode of the ring socket to send, receive, or both.
-func (r *Ring) SetSocketMode(s SocketMode) error {
- if rv := C.pfring_set_socket_mode(r.cptr, C.socket_mode(s)); rv != 0 {
- return fmt.Errorf("Unable to set socket mode, got error code %d", rv)
- }
- return nil
-}
-
-// SetApplicationName sets a string name to the ring. This name is available in
-// /proc stats for pf_ring. By default, NewRing automatically calls this with
-// argv[0].
-func (r *Ring) SetApplicationName(name string) error {
- buf := C.CString(name)
- defer C.free(unsafe.Pointer(buf))
- if rv := C.pfring_set_application_name(r.cptr, buf); rv != 0 {
- return fmt.Errorf("Unable to set ring application name, got error code %d", rv)
- }
- return nil
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/cap2test.go b/vendor/github.com/google/gopacket/reassembly/cap2test.go
deleted file mode 100644
index 1d43f1d..0000000
--- a/vendor/github.com/google/gopacket/reassembly/cap2test.go
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build ignore
-
-package main
-
-import (
- "bytes"
- "flag"
- "fmt"
- "log"
- "os"
- "strings"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
- "github.com/google/gopacket/pcap"
-)
-
-var input = flag.String("i", "", "Input filename")
-
-func main() {
- var handler *pcap.Handle
- var err error
- flag.Parse()
- if *input == "" {
- log.Fatalf("Please specify input filename")
- }
- if handler, err = pcap.OpenOffline(*input); err != nil {
- log.Fatalf("Failed to open: %s: %s", *input, err)
- }
- args := flag.Args()
- if len(args) > 0 {
- filter := strings.Join(args, " ")
- if err := handler.SetBPFFilter(filter); err != nil {
- log.Fatalf("Failed to set BPF filter \"%s\": %s", filter, err)
- }
- handler.Stats()
- }
- var decoder gopacket.Decoder
- var ok bool
- linkType := fmt.Sprintf("%s", handler.LinkType())
- if decoder, ok = gopacket.DecodersByLayerName[linkType]; !ok {
- log.Fatalf("Failed to find decoder to pcap's linktype %s", linkType)
- }
- source := gopacket.NewPacketSource(handler, decoder)
- count := uint64(0)
- pktNonTcp := uint64(0)
- pktTcp := uint64(0)
- fmt.Println("test([]testSequence{")
- for packet := range source.Packets() {
- count++
- tcp := packet.Layer(layers.LayerTypeTCP)
- if tcp == nil {
- pktNonTcp++
- continue
- } else {
- pktTcp++
- tcp := tcp.(*layers.TCP)
- //fmt.Printf("packet: %s\n", tcp)
- var b bytes.Buffer
- b.WriteString("{\n")
- // TCP
- b.WriteString("tcp: layers.TCP{\n")
- if tcp.SYN {
- b.WriteString(" SYN: true,\n")
- }
- if tcp.ACK {
- b.WriteString(" ACK: true,\n")
- }
- if tcp.RST {
- b.WriteString(" RST: true,\n")
- }
- if tcp.FIN {
- b.WriteString(" FIN: true,\n")
- }
- b.WriteString(fmt.Sprintf(" SrcPort: %d,\n", tcp.SrcPort))
- b.WriteString(fmt.Sprintf(" DstPort: %d,\n", tcp.DstPort))
- b.WriteString(fmt.Sprintf(" Seq: %d,\n", tcp.Seq))
- b.WriteString(fmt.Sprintf(" Ack: %d,\n", tcp.Ack))
- b.WriteString(" BaseLayer: layers.BaseLayer{Payload: []byte{")
- for _, p := range tcp.Payload {
- b.WriteString(fmt.Sprintf("%d,", p))
- }
- b.WriteString("}},\n")
- b.WriteString("},\n")
- // CaptureInfo
- b.WriteString("ci: gopacket.CaptureInfo{\n")
- ts := packet.Metadata().CaptureInfo.Timestamp
- b.WriteString(fmt.Sprintf(" Timestamp: time.Unix(%d,%d),\n", ts.Unix(), ts.Nanosecond()))
- b.WriteString("},\n")
- // Struct
- b.WriteString("},\n")
- fmt.Print(b.String())
- }
-
- }
- fmt.Println("})")
-
- fmt.Fprintf(os.Stderr, "Total: %d, TCP: %d, non-TCP: %d\n", count, pktTcp, pktNonTcp)
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/memory.go b/vendor/github.com/google/gopacket/reassembly/memory.go
deleted file mode 100644
index c1b2ae7..0000000
--- a/vendor/github.com/google/gopacket/reassembly/memory.go
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package reassembly
-
-import (
- "flag"
- "log"
- "sync"
- "time"
-
- "github.com/google/gopacket/layers"
-)
-
-var memLog = flag.Bool("assembly_memuse_log", defaultDebug, "If true, the github.com/google/gopacket/reassembly library will log information regarding its memory use every once in a while.")
-
-/*
- * pageCache
- */
-// pageCache is a concurrency-unsafe store of page objects we use to avoid
-// memory allocation as much as we can.
-type pageCache struct {
- free []*page
- pcSize int
- size, used int
- pageRequests int64
- ops int
- nextShrink int
-}
-
-const initialAllocSize = 1024
-
-func newPageCache() *pageCache {
- pc := &pageCache{
- free: make([]*page, 0, initialAllocSize),
- pcSize: initialAllocSize,
- }
- pc.grow()
- return pc
-}
-
-// grow exponentially increases the size of our page cache as much as necessary.
-func (c *pageCache) grow() {
- pages := make([]page, c.pcSize)
- c.size += c.pcSize
- for i := range pages {
- c.free = append(c.free, &pages[i])
- }
- if *memLog {
- log.Println("PageCache: created", c.pcSize, "new pages, size:", c.size, "cap:", cap(c.free), "len:", len(c.free))
- }
- // control next shrink attempt
- c.nextShrink = c.pcSize
- c.ops = 0
- // prepare for next alloc
- c.pcSize *= 2
-}
-
-// Remove references to unused pages to let GC collect them
-// Note: memory used by c.free itself it not collected.
-func (c *pageCache) tryShrink() {
- var min = c.pcSize / 2
- if min < initialAllocSize {
- min = initialAllocSize
- }
- if len(c.free) <= min {
- return
- }
- for i := range c.free[min:] {
- c.free[min+i] = nil
- }
- c.size -= len(c.free) - min
- c.free = c.free[:min]
- c.pcSize = min
-}
-
-// next returns a clean, ready-to-use page object.
-func (c *pageCache) next(ts time.Time) (p *page) {
- if *memLog {
- c.pageRequests++
- if c.pageRequests&0xFFFF == 0 {
- log.Println("PageCache:", c.pageRequests, "requested,", c.used, "used,", len(c.free), "free")
- }
- }
- if len(c.free) == 0 {
- c.grow()
- }
- i := len(c.free) - 1
- p, c.free = c.free[i], c.free[:i]
- p.seen = ts
- p.bytes = p.buf[:0]
- c.used++
- if *memLog {
- log.Printf("allocator returns %s\n", p)
- }
- c.ops++
- if c.ops > c.nextShrink {
- c.ops = 0
- c.tryShrink()
- }
-
- return p
-}
-
-// replace replaces a page into the pageCache.
-func (c *pageCache) replace(p *page) {
- c.used--
- if *memLog {
- log.Printf("replacing %s\n", p)
- }
- p.prev = nil
- p.next = nil
- c.free = append(c.free, p)
-}
-
-/*
- * StreamPool
- */
-
-// StreamPool stores all streams created by Assemblers, allowing multiple
-// assemblers to work together on stream processing while enforcing the fact
-// that a single stream receives its data serially. It is safe
-// for concurrency, usable by multiple Assemblers at once.
-//
-// StreamPool handles the creation and storage of Stream objects used by one or
-// more Assembler objects. When a new TCP stream is found by an Assembler, it
-// creates an associated Stream by calling its StreamFactory's New method.
-// Thereafter (until the stream is closed), that Stream object will receive
-// assembled TCP data via Assembler's calls to the stream's Reassembled
-// function.
-//
-// Like the Assembler, StreamPool attempts to minimize allocation. Unlike the
-// Assembler, though, it does have to do some locking to make sure that the
-// connection objects it stores are accessible to multiple Assemblers.
-type StreamPool struct {
- conns map[key]*connection
- users int
- mu sync.RWMutex
- factory StreamFactory
- free []*connection
- all [][]connection
- nextAlloc int
- newConnectionCount int64
-}
-
-func (p *StreamPool) grow() {
- conns := make([]connection, p.nextAlloc)
- p.all = append(p.all, conns)
- for i := range conns {
- p.free = append(p.free, &conns[i])
- }
- if *memLog {
- log.Println("StreamPool: created", p.nextAlloc, "new connections")
- }
- p.nextAlloc *= 2
-}
-
-// Dump logs all connections
-func (p *StreamPool) Dump() {
- p.mu.Lock()
- defer p.mu.Unlock()
- log.Printf("Remaining %d connections: ", len(p.conns))
- for _, conn := range p.conns {
- log.Printf("%v %s", conn.key, conn)
- }
-}
-
-func (p *StreamPool) remove(conn *connection) {
- p.mu.Lock()
- if _, ok := p.conns[conn.key]; ok {
- delete(p.conns, conn.key)
- p.free = append(p.free, conn)
- }
- p.mu.Unlock()
-}
-
-// NewStreamPool creates a new connection pool. Streams will
-// be created as necessary using the passed-in StreamFactory.
-func NewStreamPool(factory StreamFactory) *StreamPool {
- return &StreamPool{
- conns: make(map[key]*connection, initialAllocSize),
- free: make([]*connection, 0, initialAllocSize),
- factory: factory,
- nextAlloc: initialAllocSize,
- }
-}
-
-func (p *StreamPool) connections() []*connection {
- p.mu.RLock()
- conns := make([]*connection, 0, len(p.conns))
- for _, conn := range p.conns {
- conns = append(conns, conn)
- }
- p.mu.RUnlock()
- return conns
-}
-
-func (p *StreamPool) newConnection(k key, s Stream, ts time.Time) (c *connection, h *halfconnection, r *halfconnection) {
- if *memLog {
- p.newConnectionCount++
- if p.newConnectionCount&0x7FFF == 0 {
- log.Println("StreamPool:", p.newConnectionCount, "requests,", len(p.conns), "used,", len(p.free), "free")
- }
- }
- if len(p.free) == 0 {
- p.grow()
- }
- index := len(p.free) - 1
- c, p.free = p.free[index], p.free[:index]
- c.reset(k, s, ts)
- return c, &c.c2s, &c.s2c
-}
-
-func (p *StreamPool) getHalf(k key) (*connection, *halfconnection, *halfconnection) {
- conn := p.conns[k]
- if conn != nil {
- return conn, &conn.c2s, &conn.s2c
- }
- rk := k.Reverse()
- conn = p.conns[rk]
- if conn != nil {
- return conn, &conn.s2c, &conn.c2s
- }
- return nil, nil, nil
-}
-
-// getConnection returns a connection. If end is true and a connection
-// does not already exist, returns nil. This allows us to check for a
-// connection without actually creating one if it doesn't already exist.
-func (p *StreamPool) getConnection(k key, end bool, ts time.Time, tcp *layers.TCP, ac AssemblerContext) (*connection, *halfconnection, *halfconnection) {
- p.mu.RLock()
- conn, half, rev := p.getHalf(k)
- p.mu.RUnlock()
- if end || conn != nil {
- return conn, half, rev
- }
- s := p.factory.New(k[0], k[1], tcp, ac)
- p.mu.Lock()
- defer p.mu.Unlock()
- conn, half, rev = p.newConnection(k, s, ts)
- conn2, half2, rev2 := p.getHalf(k)
- if conn2 != nil {
- if conn2.key != k {
- panic("FIXME: other dir added in the meantime...")
- }
- // FIXME: delete s ?
- return conn2, half2, rev2
- }
- p.conns[k] = conn
- return conn, half, rev
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/tcpassembly.go b/vendor/github.com/google/gopacket/reassembly/tcpassembly.go
deleted file mode 100644
index bdf0deb..0000000
--- a/vendor/github.com/google/gopacket/reassembly/tcpassembly.go
+++ /dev/null
@@ -1,1311 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package reassembly provides TCP stream re-assembly.
-//
-// The reassembly package implements uni-directional TCP reassembly, for use in
-// packet-sniffing applications. The caller reads packets off the wire, then
-// presents them to an Assembler in the form of gopacket layers.TCP packets
-// (github.com/google/gopacket, github.com/google/gopacket/layers).
-//
-// The Assembler uses a user-supplied
-// StreamFactory to create a user-defined Stream interface, then passes packet
-// data in stream order to that object. A concurrency-safe StreamPool keeps
-// track of all current Streams being reassembled, so multiple Assemblers may
-// run at once to assemble packets while taking advantage of multiple cores.
-//
-// TODO: Add simplest example
-package reassembly
-
-import (
- "encoding/hex"
- "flag"
- "fmt"
- "log"
- "sync"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
-)
-
-// TODO:
-// - push to Stream on Ack
-// - implement chunked (cheap) reads and Reader() interface
-// - better organize file: split files: 'mem', 'misc' (seq + flow)
-
-var defaultDebug = false
-
-var debugLog = flag.Bool("assembly_debug_log", defaultDebug, "If true, the github.com/google/gopacket/reassembly library will log verbose debugging information (at least one line per packet)")
-
-const invalidSequence = -1
-const uint32Max = 0xFFFFFFFF
-
-// Sequence is a TCP sequence number. It provides a few convenience functions
-// for handling TCP wrap-around. The sequence should always be in the range
-// [0,0xFFFFFFFF]... its other bits are simply used in wrap-around calculations
-// and should never be set.
-type Sequence int64
-
-// Difference defines an ordering for comparing TCP sequences that's safe for
-// roll-overs. It returns:
-// > 0 : if t comes after s
-// < 0 : if t comes before s
-// 0 : if t == s
-// The number returned is the sequence difference, so 4.Difference(8) will
-// return 4.
-//
-// It handles rollovers by considering any sequence in the first quarter of the
-// uint32 space to be after any sequence in the last quarter of that space, thus
-// wrapping the uint32 space.
-func (s Sequence) Difference(t Sequence) int {
- if s > uint32Max-uint32Max/4 && t < uint32Max/4 {
- t += uint32Max
- } else if t > uint32Max-uint32Max/4 && s < uint32Max/4 {
- s += uint32Max
- }
- return int(t - s)
-}
-
-// Add adds an integer to a sequence and returns the resulting sequence.
-func (s Sequence) Add(t int) Sequence {
- return (s + Sequence(t)) & uint32Max
-}
-
-// TCPAssemblyStats provides some figures for a ScatterGather
-type TCPAssemblyStats struct {
- // For this ScatterGather
- Chunks int
- Packets int
- // For the half connection, since last call to ReassembledSG()
- QueuedBytes int
- QueuedPackets int
- OverlapBytes int
- OverlapPackets int
-}
-
-// ScatterGather is used to pass reassembled data and metadata of reassembled
-// packets to a Stream via ReassembledSG
-type ScatterGather interface {
- // Returns the length of available bytes and saved bytes
- Lengths() (int, int)
- // Returns the bytes up to length (shall be <= available bytes)
- Fetch(length int) []byte
- // Tell to keep from offset
- KeepFrom(offset int)
- // Return CaptureInfo of packet corresponding to given offset
- CaptureInfo(offset int) gopacket.CaptureInfo
- // Return some info about the reassembled chunks
- Info() (direction TCPFlowDirection, start bool, end bool, skip int)
- // Return some stats regarding the state of the stream
- Stats() TCPAssemblyStats
-}
-
-// byteContainer is either a page or a livePacket
-type byteContainer interface {
- getBytes() []byte
- length() int
- convertToPages(*pageCache, int, AssemblerContext) (*page, *page, int)
- captureInfo() gopacket.CaptureInfo
- assemblerContext() AssemblerContext
- release(*pageCache) int
- isStart() bool
- isEnd() bool
- getSeq() Sequence
- isPacket() bool
-}
-
-// Implements a ScatterGather
-type reassemblyObject struct {
- all []byteContainer
- Skip int
- Direction TCPFlowDirection
- saved int
- toKeep int
- // stats
- queuedBytes int
- queuedPackets int
- overlapBytes int
- overlapPackets int
-}
-
-func (rl *reassemblyObject) Lengths() (int, int) {
- l := 0
- for _, r := range rl.all {
- l += r.length()
- }
- return l, rl.saved
-}
-
-func (rl *reassemblyObject) Fetch(l int) []byte {
- if l <= rl.all[0].length() {
- return rl.all[0].getBytes()[:l]
- }
- bytes := make([]byte, 0, l)
- for _, bc := range rl.all {
- bytes = append(bytes, bc.getBytes()...)
- }
- return bytes[:l]
-}
-
-func (rl *reassemblyObject) KeepFrom(offset int) {
- rl.toKeep = offset
-}
-
-func (rl *reassemblyObject) CaptureInfo(offset int) gopacket.CaptureInfo {
- current := 0
- for _, r := range rl.all {
- if current >= offset {
- return r.captureInfo()
- }
- current += r.length()
- }
- // Invalid offset
- return gopacket.CaptureInfo{}
-}
-
-func (rl *reassemblyObject) Info() (TCPFlowDirection, bool, bool, int) {
- return rl.Direction, rl.all[0].isStart(), rl.all[len(rl.all)-1].isEnd(), rl.Skip
-}
-
-func (rl *reassemblyObject) Stats() TCPAssemblyStats {
- packets := int(0)
- for _, r := range rl.all {
- if r.isPacket() {
- packets++
- }
- }
- return TCPAssemblyStats{
- Chunks: len(rl.all),
- Packets: packets,
- QueuedBytes: rl.queuedBytes,
- QueuedPackets: rl.queuedPackets,
- OverlapBytes: rl.overlapBytes,
- OverlapPackets: rl.overlapPackets,
- }
-}
-
-const pageBytes = 1900
-
-// TCPFlowDirection distinguish the two half-connections directions.
-//
-// TCPDirClientToServer is assigned to half-connection for the first received
-// packet, hence might be wrong if packets are not received in order.
-// It's up to the caller (e.g. in Accept()) to decide if the direction should
-// be interpretted differently.
-type TCPFlowDirection bool
-
-// Value are not really useful
-const (
- TCPDirClientToServer TCPFlowDirection = false
- TCPDirServerToClient TCPFlowDirection = true
-)
-
-func (dir TCPFlowDirection) String() string {
- switch dir {
- case TCPDirClientToServer:
- return "client->server"
- case TCPDirServerToClient:
- return "server->client"
- }
- return ""
-}
-
-// Reverse returns the reversed direction
-func (dir TCPFlowDirection) Reverse() TCPFlowDirection {
- return !dir
-}
-
-/* page: implements a byteContainer */
-
-// page is used to store TCP data we're not ready for yet (out-of-order
-// packets). Unused pages are stored in and returned from a pageCache, which
-// avoids memory allocation. Used pages are stored in a doubly-linked list in
-// a connection.
-type page struct {
- bytes []byte
- seq Sequence
- prev, next *page
- buf [pageBytes]byte
- ac AssemblerContext // only set for the first page of a packet
- seen time.Time
- start, end bool
-}
-
-func (p *page) getBytes() []byte {
- return p.bytes
-}
-func (p *page) captureInfo() gopacket.CaptureInfo {
- return p.ac.GetCaptureInfo()
-}
-func (p *page) assemblerContext() AssemblerContext {
- return p.ac
-}
-func (p *page) convertToPages(pc *pageCache, skip int, ac AssemblerContext) (*page, *page, int) {
- if skip != 0 {
- p.bytes = p.bytes[skip:]
- p.seq = p.seq.Add(skip)
- }
- p.prev, p.next = nil, nil
- return p, p, 1
-}
-func (p *page) length() int {
- return len(p.bytes)
-}
-func (p *page) release(pc *pageCache) int {
- pc.replace(p)
- return 1
-}
-func (p *page) isStart() bool {
- return p.start
-}
-func (p *page) isEnd() bool {
- return p.end
-}
-func (p *page) getSeq() Sequence {
- return p.seq
-}
-func (p *page) isPacket() bool {
- return p.ac != nil
-}
-func (p *page) String() string {
- return fmt.Sprintf("page@%p{seq: %v, bytes:%d, -> nextSeq:%v} (prev:%p, next:%p)", p, p.seq, len(p.bytes), p.seq+Sequence(len(p.bytes)), p.prev, p.next)
-}
-
-/* livePacket: implements a byteContainer */
-type livePacket struct {
- bytes []byte
- start bool
- end bool
- ci gopacket.CaptureInfo
- ac AssemblerContext
- seq Sequence
-}
-
-func (lp *livePacket) getBytes() []byte {
- return lp.bytes
-}
-func (lp *livePacket) captureInfo() gopacket.CaptureInfo {
- return lp.ci
-}
-func (lp *livePacket) assemblerContext() AssemblerContext {
- return lp.ac
-}
-func (lp *livePacket) length() int {
- return len(lp.bytes)
-}
-func (lp *livePacket) isStart() bool {
- return lp.start
-}
-func (lp *livePacket) isEnd() bool {
- return lp.end
-}
-func (lp *livePacket) getSeq() Sequence {
- return lp.seq
-}
-func (lp *livePacket) isPacket() bool {
- return true
-}
-
-// Creates a page (or set of pages) from a TCP packet: returns the first and last
-// page in its doubly-linked list of new pages.
-func (lp *livePacket) convertToPages(pc *pageCache, skip int, ac AssemblerContext) (*page, *page, int) {
- ts := lp.ci.Timestamp
- first := pc.next(ts)
- current := first
- current.prev = nil
- first.ac = ac
- numPages := 1
- seq, bytes := lp.seq.Add(skip), lp.bytes[skip:]
- for {
- length := min(len(bytes), pageBytes)
- current.bytes = current.buf[:length]
- copy(current.bytes, bytes)
- current.seq = seq
- bytes = bytes[length:]
- if len(bytes) == 0 {
- current.end = lp.isEnd()
- current.next = nil
- break
- }
- seq = seq.Add(length)
- current.next = pc.next(ts)
- current.next.prev = current
- current = current.next
- current.ac = nil
- numPages++
- }
- return first, current, numPages
-}
-func (lp *livePacket) estimateNumberOfPages() int {
- return (len(lp.bytes) + pageBytes + 1) / pageBytes
-}
-
-func (lp *livePacket) release(*pageCache) int {
- return 0
-}
-
-// Stream is implemented by the caller to handle incoming reassembled
-// TCP data. Callers create a StreamFactory, then StreamPool uses
-// it to create a new Stream for every TCP stream.
-//
-// assembly will, in order:
-// 1) Create the stream via StreamFactory.New
-// 2) Call ReassembledSG 0 or more times, passing in reassembled TCP data in order
-// 3) Call ReassemblyComplete one time, after which the stream is dereferenced by assembly.
-type Stream interface {
- // Tell whether the TCP packet should be accepted, start could be modified to force a start even if no SYN have been seen
- Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, ackSeq Sequence, start *bool, ac AssemblerContext) bool
-
- // ReassembledSG is called zero or more times.
- // ScatterGather is reused after each Reassembled call,
- // so it's important to copy anything you need out of it,
- // especially bytes (or use KeepFrom())
- ReassembledSG(sg ScatterGather, ac AssemblerContext)
-
- // ReassemblyComplete is called when assembly decides there is
- // no more data for this Stream, either because a FIN or RST packet
- // was seen, or because the stream has timed out without any new
- // packet data (due to a call to FlushCloseOlderThan).
- // It should return true if the connection should be removed from the pool
- // It can return false if it want to see subsequent packets with Accept(), e.g. to
- // see FIN-ACK, for deeper state-machine analysis.
- ReassemblyComplete(ac AssemblerContext) bool
-}
-
-// StreamFactory is used by assembly to create a new stream for each
-// new TCP session.
-type StreamFactory interface {
- // New should return a new stream for the given TCP key.
- New(netFlow, tcpFlow gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream
-}
-
-type key [2]gopacket.Flow
-
-func (k *key) String() string {
- return fmt.Sprintf("%s:%s", k[0], k[1])
-}
-
-func (k *key) Reverse() key {
- return key{
- k[0].Reverse(),
- k[1].Reverse(),
- }
-}
-
-const assemblerReturnValueInitialSize = 16
-
-/* one-way connection, i.e. halfconnection */
-type halfconnection struct {
- dir TCPFlowDirection
- pages int // Number of pages used (both in first/last and saved)
- saved *page // Doubly-linked list of in-order pages (seq < nextSeq) already given to Stream who told us to keep
- first, last *page // Doubly-linked list of out-of-order pages (seq > nextSeq)
- nextSeq Sequence // sequence number of in-order received bytes
- ackSeq Sequence
- created, lastSeen time.Time
- stream Stream
- closed bool
- // for stats
- queuedBytes int
- queuedPackets int
- overlapBytes int
- overlapPackets int
-}
-
-func (half *halfconnection) String() string {
- closed := ""
- if half.closed {
- closed = "closed "
- }
- return fmt.Sprintf("%screated:%v, last:%v", closed, half.created, half.lastSeen)
-}
-
-// Dump returns a string (crypticly) describing the halfconnction
-func (half *halfconnection) Dump() string {
- s := fmt.Sprintf("pages: %d\n"+
- "nextSeq: %d\n"+
- "ackSeq: %d\n"+
- "Seen : %s\n"+
- "dir: %s\n", half.pages, half.nextSeq, half.ackSeq, half.lastSeen, half.dir)
- nb := 0
- for p := half.first; p != nil; p = p.next {
- s += fmt.Sprintf(" Page[%d] %s len: %d\n", nb, p, len(p.bytes))
- nb++
- }
- return s
-}
-
-/* Bi-directionnal connection */
-
-type connection struct {
- key key // client->server
- c2s, s2c halfconnection
- mu sync.Mutex
-}
-
-func (c *connection) reset(k key, s Stream, ts time.Time) {
- c.key = k
- base := halfconnection{
- nextSeq: invalidSequence,
- ackSeq: invalidSequence,
- created: ts,
- lastSeen: ts,
- stream: s,
- }
- c.c2s, c.s2c = base, base
- c.c2s.dir, c.s2c.dir = TCPDirClientToServer, TCPDirServerToClient
-}
-
-func (c *connection) String() string {
- return fmt.Sprintf("c2s: %s, s2c: %s", &c.c2s, &c.s2c)
-}
-
-/*
- * Assembler
- */
-
-// DefaultAssemblerOptions provides default options for an assembler.
-// These options are used by default when calling NewAssembler, so if
-// modified before a NewAssembler call they'll affect the resulting Assembler.
-//
-// Note that the default options can result in ever-increasing memory usage
-// unless one of the Flush* methods is called on a regular basis.
-var DefaultAssemblerOptions = AssemblerOptions{
- MaxBufferedPagesPerConnection: 0, // unlimited
- MaxBufferedPagesTotal: 0, // unlimited
-}
-
-// AssemblerOptions controls the behavior of each assembler. Modify the
-// options of each assembler you create to change their behavior.
-type AssemblerOptions struct {
- // MaxBufferedPagesTotal is an upper limit on the total number of pages to
- // buffer while waiting for out-of-order packets. Once this limit is
- // reached, the assembler will degrade to flushing every connection it
- // gets a packet for. If <= 0, this is ignored.
- MaxBufferedPagesTotal int
- // MaxBufferedPagesPerConnection is an upper limit on the number of pages
- // buffered for a single connection. Should this limit be reached for a
- // particular connection, the smallest sequence number will be flushed, along
- // with any contiguous data. If <= 0, this is ignored.
- MaxBufferedPagesPerConnection int
-}
-
-// Assembler handles reassembling TCP streams. It is not safe for
-// concurrency... after passing a packet in via the Assemble call, the caller
-// must wait for that call to return before calling Assemble again. Callers can
-// get around this by creating multiple assemblers that share a StreamPool. In
-// that case, each individual stream will still be handled serially (each stream
-// has an individual mutex associated with it), however multiple assemblers can
-// assemble different connections concurrently.
-//
-// The Assembler provides (hopefully) fast TCP stream re-assembly for sniffing
-// applications written in Go. The Assembler uses the following methods to be
-// as fast as possible, to keep packet processing speedy:
-//
-// Avoids Lock Contention
-//
-// Assemblers locks connections, but each connection has an individual lock, and
-// rarely will two Assemblers be looking at the same connection. Assemblers
-// lock the StreamPool when looking up connections, but they use Reader
-// locks initially, and only force a write lock if they need to create a new
-// connection or close one down. These happen much less frequently than
-// individual packet handling.
-//
-// Each assembler runs in its own goroutine, and the only state shared between
-// goroutines is through the StreamPool. Thus all internal Assembler state
-// can be handled without any locking.
-//
-// NOTE: If you can guarantee that packets going to a set of Assemblers will
-// contain information on different connections per Assembler (for example,
-// they're already hashed by PF_RING hashing or some other hashing mechanism),
-// then we recommend you use a seperate StreamPool per Assembler, thus
-// avoiding all lock contention. Only when different Assemblers could receive
-// packets for the same Stream should a StreamPool be shared between them.
-//
-// Avoids Memory Copying
-//
-// In the common case, handling of a single TCP packet should result in zero
-// memory allocations. The Assembler will look up the connection, figure out
-// that the packet has arrived in order, and immediately pass that packet on to
-// the appropriate connection's handling code. Only if a packet arrives out of
-// order is its contents copied and stored in memory for later.
-//
-// Avoids Memory Allocation
-//
-// Assemblers try very hard to not use memory allocation unless absolutely
-// necessary. Packet data for sequential packets is passed directly to streams
-// with no copying or allocation. Packet data for out-of-order packets is
-// copied into reusable pages, and new pages are only allocated rarely when the
-// page cache runs out. Page caches are Assembler-specific, thus not used
-// concurrently and requiring no locking.
-//
-// Internal representations for connection objects are also reused over time.
-// Because of this, the most common memory allocation done by the Assembler is
-// generally what's done by the caller in StreamFactory.New. If no allocation
-// is done there, then very little allocation is done ever, mostly to handle
-// large increases in bandwidth or numbers of connections.
-//
-// TODO: The page caches used by an Assembler will grow to the size necessary
-// to handle a workload, and currently will never shrink. This means that
-// traffic spikes can result in large memory usage which isn't garbage
-// collected when typical traffic levels return.
-type Assembler struct {
- AssemblerOptions
- ret []byteContainer
- pc *pageCache
- connPool *StreamPool
- cacheLP livePacket
- cacheSG reassemblyObject
- start bool
-}
-
-// NewAssembler creates a new assembler. Pass in the StreamPool
-// to use, may be shared across assemblers.
-//
-// This sets some sane defaults for the assembler options,
-// see DefaultAssemblerOptions for details.
-func NewAssembler(pool *StreamPool) *Assembler {
- pool.mu.Lock()
- pool.users++
- pool.mu.Unlock()
- return &Assembler{
- ret: make([]byteContainer, assemblerReturnValueInitialSize),
- pc: newPageCache(),
- connPool: pool,
- AssemblerOptions: DefaultAssemblerOptions,
- }
-}
-
-// Dump returns a short string describing the page usage of the Assembler
-func (a *Assembler) Dump() string {
- s := ""
- s += fmt.Sprintf("pageCache: used: %d, size: %d, free: %d", a.pc.used, a.pc.size, len(a.pc.free))
- return s
-}
-
-// AssemblerContext provides method to get metadata
-type AssemblerContext interface {
- GetCaptureInfo() gopacket.CaptureInfo
-}
-
-// Implements AssemblerContext for Assemble()
-type assemblerSimpleContext gopacket.CaptureInfo
-
-func (asc *assemblerSimpleContext) GetCaptureInfo() gopacket.CaptureInfo {
- return gopacket.CaptureInfo(*asc)
-}
-
-// Assemble calls AssembleWithContext with the current timestamp, useful for
-// packets being read directly off the wire.
-func (a *Assembler) Assemble(netFlow gopacket.Flow, t *layers.TCP) {
- ctx := assemblerSimpleContext(gopacket.CaptureInfo{Timestamp: time.Now()})
- a.AssembleWithContext(netFlow, t, &ctx)
-}
-
-type assemblerAction struct {
- nextSeq Sequence
- queue bool
-}
-
-// AssembleWithContext reassembles the given TCP packet into its appropriate
-// stream.
-//
-// The timestamp passed in must be the timestamp the packet was seen.
-// For packets read off the wire, time.Now() should be fine. For packets read
-// from PCAP files, CaptureInfo.Timestamp should be passed in. This timestamp
-// will affect which streams are flushed by a call to FlushCloseOlderThan.
-//
-// Each AssembleWithContext call results in, in order:
-//
-// zero or one call to StreamFactory.New, creating a stream
-// zero or one call to ReassembledSG on a single stream
-// zero or one call to ReassemblyComplete on the same stream
-func (a *Assembler) AssembleWithContext(netFlow gopacket.Flow, t *layers.TCP, ac AssemblerContext) {
- var conn *connection
- var half *halfconnection
- var rev *halfconnection
-
- a.ret = a.ret[:0]
- key := key{netFlow, t.TransportFlow()}
- ci := ac.GetCaptureInfo()
- timestamp := ci.Timestamp
-
- conn, half, rev = a.connPool.getConnection(key, false, timestamp, t, ac)
- if conn == nil {
- if *debugLog {
- log.Printf("%v got empty packet on otherwise empty connection", key)
- }
- return
- }
- conn.mu.Lock()
- defer conn.mu.Unlock()
- if half.lastSeen.Before(timestamp) {
- half.lastSeen = timestamp
- }
- a.start = half.nextSeq == invalidSequence && t.SYN
- if !half.stream.Accept(t, ci, half.dir, rev.ackSeq, &a.start, ac) {
- if *debugLog {
- log.Printf("Ignoring packet")
- }
- return
- }
- if half.closed {
- // this way is closed
- return
- }
-
- seq, ack, bytes := Sequence(t.Seq), Sequence(t.Ack), t.Payload
- if t.ACK {
- half.ackSeq = ack
- }
- // TODO: push when Ack is seen ??
- action := assemblerAction{
- nextSeq: Sequence(invalidSequence),
- queue: true,
- }
- a.dump("AssembleWithContext()", half)
- if half.nextSeq == invalidSequence {
- if t.SYN {
- if *debugLog {
- log.Printf("%v saw first SYN packet, returning immediately, seq=%v", key, seq)
- }
- seq = seq.Add(1)
- half.nextSeq = seq
- action.queue = false
- } else if a.start {
- if *debugLog {
- log.Printf("%v start forced", key)
- }
- half.nextSeq = seq
- action.queue = false
- } else {
- if *debugLog {
- log.Printf("%v waiting for start, storing into connection", key)
- }
- }
- } else {
- diff := half.nextSeq.Difference(seq)
- if diff > 0 {
- if *debugLog {
- log.Printf("%v gap in sequence numbers (%v, %v) diff %v, storing into connection", key, half.nextSeq, seq, diff)
- }
- } else {
- if *debugLog {
- log.Printf("%v found contiguous data (%v, %v), returning immediately: len:%d", key, seq, half.nextSeq, len(bytes))
- }
- action.queue = false
- }
- }
-
- action = a.handleBytes(bytes, seq, half, ci, t.SYN, t.RST || t.FIN, action, ac)
- if len(a.ret) > 0 {
- action.nextSeq = a.sendToConnection(conn, half, ac)
- }
- if action.nextSeq != invalidSequence {
- half.nextSeq = action.nextSeq
- if t.FIN {
- half.nextSeq = half.nextSeq.Add(1)
- }
- }
- if *debugLog {
- log.Printf("%v nextSeq:%d", key, half.nextSeq)
- }
-}
-
-// Overlap strategies:
-// - new packet overlaps with sent packets:
-// 1) discard new overlapping part
-// 2) overwrite old overlapped (TODO)
-// - new packet overlaps existing queued packets:
-// a) consider "age" by timestamp (TODO)
-// b) consider "age" by being present
-// Then
-// 1) discard new overlapping part
-// 2) overwrite queued part
-
-func (a *Assembler) checkOverlap(half *halfconnection, queue bool, ac AssemblerContext) {
- var next *page
- cur := half.last
- bytes := a.cacheLP.bytes
- start := a.cacheLP.seq
- end := start.Add(len(bytes))
-
- a.dump("before checkOverlap", half)
-
- // [s6 : e6]
- // [s1:e1][s2:e2] -- [s3:e3] -- [s4:e4][s5:e5]
- // [s <--ds-- : --de--> e]
- for cur != nil {
-
- if *debugLog {
- log.Printf("cur = %p (%s)\n", cur, cur)
- }
-
- // end < cur.start: continue (5)
- if end.Difference(cur.seq) > 0 {
- if *debugLog {
- log.Printf("case 5\n")
- }
- next = cur
- cur = cur.prev
- continue
- }
-
- curEnd := cur.seq.Add(len(cur.bytes))
- // start > cur.end: stop (1)
- if start.Difference(curEnd) <= 0 {
- if *debugLog {
- log.Printf("case 1\n")
- }
- break
- }
-
- diffStart := start.Difference(cur.seq)
- diffEnd := end.Difference(curEnd)
-
- // end > cur.end && start < cur.start: drop (3)
- if diffEnd <= 0 && diffStart >= 0 {
- if *debugLog {
- log.Printf("case 3\n")
- }
- if cur.isPacket() {
- half.overlapPackets++
- }
- half.overlapBytes += len(cur.bytes)
- // update links
- if cur.prev != nil {
- cur.prev.next = cur.next
- } else {
- half.first = cur.next
- }
- if cur.next != nil {
- cur.next.prev = cur.prev
- } else {
- half.last = cur.prev
- }
- tmp := cur.prev
- half.pages -= cur.release(a.pc)
- cur = tmp
- continue
- }
-
- // end > cur.end && start < cur.end: drop cur's end (2)
- if diffEnd < 0 && start.Difference(curEnd) > 0 {
- if *debugLog {
- log.Printf("case 2\n")
- }
- cur.bytes = cur.bytes[:-start.Difference(cur.seq)]
- break
- } else
-
- // start < cur.start && end > cur.start: drop cur's start (4)
- if diffStart > 0 && end.Difference(cur.seq) < 0 {
- if *debugLog {
- log.Printf("case 4\n")
- }
- cur.bytes = cur.bytes[-end.Difference(cur.seq):]
- cur.seq = cur.seq.Add(-end.Difference(cur.seq))
- next = cur
- } else
-
- // end < cur.end && start > cur.start: replace bytes inside cur (6)
- if diffEnd > 0 && diffStart < 0 {
- if *debugLog {
- log.Printf("case 6\n")
- }
- copy(cur.bytes[-diffStart:-diffStart+len(bytes)], bytes)
- bytes = bytes[:0]
- } else {
- if *debugLog {
- log.Printf("no overlap\n")
- }
- next = cur
- }
- cur = cur.prev
- }
-
- // Split bytes into pages, and insert in queue
- a.cacheLP.bytes = bytes
- a.cacheLP.seq = start
- if len(bytes) > 0 && queue {
- p, p2, numPages := a.cacheLP.convertToPages(a.pc, 0, ac)
- half.queuedPackets++
- half.queuedBytes += len(bytes)
- half.pages += numPages
- if cur != nil {
- if *debugLog {
- log.Printf("adding %s after %s", p, cur)
- }
- cur.next = p
- p.prev = cur
- } else {
- if *debugLog {
- log.Printf("adding %s as first", p)
- }
- half.first = p
- }
- if next != nil {
- if *debugLog {
- log.Printf("setting %s as next of new %s", next, p2)
- }
- p2.next = next
- next.prev = p2
- } else {
- if *debugLog {
- log.Printf("setting %s as last", p2)
- }
- half.last = p2
- }
- }
- a.dump("After checkOverlap", half)
-}
-
-// Warning: this is a low-level dumper, i.e. a.ret or a.cacheSG might
-// be strange, but it could be ok.
-func (a *Assembler) dump(text string, half *halfconnection) {
- if !*debugLog {
- return
- }
- log.Printf("%s: dump\n", text)
- if half != nil {
- p := half.first
- if p == nil {
- log.Printf(" * half.first = %p, no chunks queued\n", p)
- } else {
- s := 0
- nb := 0
- log.Printf(" * half.first = %p, queued chunks:", p)
- for p != nil {
- log.Printf("\t%s bytes:%s\n", p, hex.EncodeToString(p.bytes))
- s += len(p.bytes)
- nb++
- p = p.next
- }
- log.Printf("\t%d chunks for %d bytes", nb, s)
- }
- log.Printf(" * half.last = %p\n", half.last)
- log.Printf(" * half.saved = %p\n", half.saved)
- p = half.saved
- for p != nil {
- log.Printf("\tseq:%d %s bytes:%s\n", p.getSeq(), p, hex.EncodeToString(p.bytes))
- p = p.next
- }
- }
- log.Printf(" * a.ret\n")
- for i, r := range a.ret {
- log.Printf("\t%d: %s b:%s\n", i, r.captureInfo(), hex.EncodeToString(r.getBytes()))
- }
- log.Printf(" * a.cacheSG.all\n")
- for i, r := range a.cacheSG.all {
- log.Printf("\t%d: %s b:%s\n", i, r.captureInfo(), hex.EncodeToString(r.getBytes()))
- }
-}
-
-func (a *Assembler) overlapExisting(half *halfconnection, start, end Sequence, bytes []byte) ([]byte, Sequence) {
- if half.nextSeq == invalidSequence {
- // no start yet
- return bytes, start
- }
- diff := start.Difference(half.nextSeq)
- if diff == 0 {
- return bytes, start
- }
- s := 0
- e := len(bytes)
- // TODO: depending on strategy, we might want to shrink half.saved if possible
- if e != 0 {
- if *debugLog {
- log.Printf("Overlap detected: ignoring current packet's first %d bytes", diff)
- }
- half.overlapPackets++
- half.overlapBytes += diff
- }
- start = start.Add(diff)
- s += diff
- if s >= e {
- // Completely included in sent
- s = e
- }
- bytes = bytes[s:]
- e -= diff
- return bytes, start
-}
-
-// Prepare send or queue
-func (a *Assembler) handleBytes(bytes []byte, seq Sequence, half *halfconnection, ci gopacket.CaptureInfo, start bool, end bool, action assemblerAction, ac AssemblerContext) assemblerAction {
- a.cacheLP.bytes = bytes
- a.cacheLP.start = start
- a.cacheLP.end = end
- a.cacheLP.seq = seq
- a.cacheLP.ci = ci
- a.cacheLP.ac = ac
-
- if action.queue {
- a.checkOverlap(half, true, ac)
- if (a.MaxBufferedPagesPerConnection > 0 && half.pages >= a.MaxBufferedPagesPerConnection) ||
- (a.MaxBufferedPagesTotal > 0 && a.pc.used >= a.MaxBufferedPagesTotal) {
- if *debugLog {
- log.Printf("hit max buffer size: %+v, %v, %v", a.AssemblerOptions, half.pages, a.pc.used)
- }
- action.queue = false
- a.addNextFromConn(half)
- }
- a.dump("handleBytes after queue", half)
- } else {
- a.cacheLP.bytes, a.cacheLP.seq = a.overlapExisting(half, seq, seq.Add(len(bytes)), a.cacheLP.bytes)
- a.checkOverlap(half, false, ac)
- if len(a.cacheLP.bytes) != 0 || end || start {
- a.ret = append(a.ret, &a.cacheLP)
- }
- a.dump("handleBytes after no queue", half)
- }
- return action
-}
-
-func (a *Assembler) setStatsToSG(half *halfconnection) {
- a.cacheSG.queuedBytes = half.queuedBytes
- half.queuedBytes = 0
- a.cacheSG.queuedPackets = half.queuedPackets
- half.queuedPackets = 0
- a.cacheSG.overlapBytes = half.overlapBytes
- half.overlapBytes = 0
- a.cacheSG.overlapPackets = half.overlapPackets
- half.overlapPackets = 0
-}
-
-// Build the ScatterGather object, i.e. prepend saved bytes and
-// append continuous bytes.
-func (a *Assembler) buildSG(half *halfconnection) (bool, Sequence) {
- // find if there are skipped bytes
- skip := -1
- if half.nextSeq != invalidSequence {
- skip = half.nextSeq.Difference(a.ret[0].getSeq())
- }
- last := a.ret[0].getSeq().Add(a.ret[0].length())
- // Prepend saved bytes
- saved := a.addPending(half, a.ret[0].getSeq())
- // Append continuous bytes
- nextSeq := a.addContiguous(half, last)
- a.cacheSG.all = a.ret
- a.cacheSG.Direction = half.dir
- a.cacheSG.Skip = skip
- a.cacheSG.saved = saved
- a.cacheSG.toKeep = -1
- a.setStatsToSG(half)
- a.dump("after buildSG", half)
- return a.ret[len(a.ret)-1].isEnd(), nextSeq
-}
-
-func (a *Assembler) cleanSG(half *halfconnection, ac AssemblerContext) {
- cur := 0
- ndx := 0
- skip := 0
-
- a.dump("cleanSG(start)", half)
-
- var r byteContainer
- // Find first page to keep
- if a.cacheSG.toKeep < 0 {
- ndx = len(a.cacheSG.all)
- } else {
- skip = a.cacheSG.toKeep
- found := false
- for ndx, r = range a.cacheSG.all {
- if a.cacheSG.toKeep < cur+r.length() {
- found = true
- break
- }
- cur += r.length()
- if skip >= r.length() {
- skip -= r.length()
- }
- }
- if !found {
- ndx++
- }
- }
- // Release consumed pages
- for _, r := range a.cacheSG.all[:ndx] {
- if r == half.saved {
- if half.saved.next != nil {
- half.saved.next.prev = nil
- }
- half.saved = half.saved.next
- } else if r == half.first {
- if half.first.next != nil {
- half.first.next.prev = nil
- }
- if half.first == half.last {
- half.first, half.last = nil, nil
- } else {
- half.first = half.first.next
- }
- }
- half.pages -= r.release(a.pc)
- }
- a.dump("after consumed release", half)
- // Keep un-consumed pages
- nbKept := 0
- half.saved = nil
- var saved *page
- for _, r := range a.cacheSG.all[ndx:] {
- first, last, nb := r.convertToPages(a.pc, skip, ac)
- if half.saved == nil {
- half.saved = first
- } else {
- saved.next = first
- first.prev = saved
- }
- saved = last
- nbKept += nb
- }
- if *debugLog {
- log.Printf("Remaining %d chunks in SG\n", nbKept)
- log.Printf("%s\n", a.Dump())
- a.dump("after cleanSG()", half)
- }
-}
-
-// sendToConnection sends the current values in a.ret to the connection, closing
-// the connection if the last thing sent had End set.
-func (a *Assembler) sendToConnection(conn *connection, half *halfconnection, ac AssemblerContext) Sequence {
- if *debugLog {
- log.Printf("sendToConnection\n")
- }
- end, nextSeq := a.buildSG(half)
- half.stream.ReassembledSG(&a.cacheSG, ac)
- a.cleanSG(half, ac)
- if end {
- a.closeHalfConnection(conn, half)
- }
- if *debugLog {
- log.Printf("after sendToConnection: nextSeq: %d\n", nextSeq)
- }
- return nextSeq
-}
-
-//
-func (a *Assembler) addPending(half *halfconnection, firstSeq Sequence) int {
- if half.saved == nil {
- return 0
- }
- s := 0
- ret := []byteContainer{}
- for p := half.saved; p != nil; p = p.next {
- if *debugLog {
- log.Printf("adding pending @%p %s (%s)\n", p, p, hex.EncodeToString(p.bytes))
- }
- ret = append(ret, p)
- s += len(p.bytes)
- }
- if half.saved.seq.Add(s) != firstSeq {
- // non-continuous saved: drop them
- var next *page
- for p := half.saved; p != nil; p = next {
- next = p.next
- p.release(a.pc)
- }
- half.saved = nil
- ret = []byteContainer{}
- s = 0
- }
-
- a.ret = append(ret, a.ret...)
- return s
-}
-
-// addContiguous adds contiguous byte-sets to a connection.
-func (a *Assembler) addContiguous(half *halfconnection, lastSeq Sequence) Sequence {
- page := half.first
- if page == nil {
- if *debugLog {
- log.Printf("addContiguous(%d): no pages\n", lastSeq)
- }
- return lastSeq
- }
- if lastSeq == invalidSequence {
- lastSeq = page.seq
- }
- for page != nil && lastSeq.Difference(page.seq) == 0 {
- if *debugLog {
- log.Printf("addContiguous: lastSeq: %d, first.seq=%d, page.seq=%d\n", half.nextSeq, half.first.seq, page.seq)
- }
- lastSeq = lastSeq.Add(len(page.bytes))
- a.ret = append(a.ret, page)
- half.first = page.next
- if half.first == nil {
- half.last = nil
- }
- if page.next != nil {
- page.next.prev = nil
- }
- page = page.next
- }
- return lastSeq
-}
-
-// skipFlush skips the first set of bytes we're waiting for and returns the
-// first set of bytes we have. If we have no bytes saved, it closes the
-// connection.
-func (a *Assembler) skipFlush(conn *connection, half *halfconnection) {
- if *debugLog {
- log.Printf("skipFlush %v\n", half.nextSeq)
- }
- // Well, it's embarassing it there is still something in half.saved
- // FIXME: change API to give back saved + new/no packets
- if half.first == nil {
- a.closeHalfConnection(conn, half)
- return
- }
- a.ret = a.ret[:0]
- a.addNextFromConn(half)
- nextSeq := a.sendToConnection(conn, half, a.ret[0].assemblerContext())
- if nextSeq != invalidSequence {
- half.nextSeq = nextSeq
- }
-}
-
-func (a *Assembler) closeHalfConnection(conn *connection, half *halfconnection) {
- if *debugLog {
- log.Printf("%v closing", conn)
- }
- half.closed = true
- for p := half.first; p != nil; p = p.next {
- // FIXME: it should be already empty
- a.pc.replace(p)
- half.pages--
- }
- if conn.s2c.closed && conn.c2s.closed {
- if half.stream.ReassemblyComplete(nil) { //FIXME: which context to pass ?
- a.connPool.remove(conn)
- }
- }
-}
-
-// addNextFromConn pops the first page from a connection off and adds it to the
-// return array.
-func (a *Assembler) addNextFromConn(conn *halfconnection) {
- if conn.first == nil {
- return
- }
- if *debugLog {
- log.Printf(" adding from conn (%v, %v) %v (%d)\n", conn.first.seq, conn.nextSeq, conn.nextSeq-conn.first.seq, len(conn.first.bytes))
- }
- a.ret = append(a.ret, conn.first)
- conn.first = conn.first.next
- if conn.first != nil {
- conn.first.prev = nil
- } else {
- conn.last = nil
- }
-}
-
-// FlushOptions provide options for flushing connections.
-type FlushOptions struct {
- T time.Time // If nonzero, only connections with data older than T are flushed
- TC time.Time // If nonzero, only connections with data older than TC are closed (if no FIN/RST received)
-}
-
-// FlushWithOptions finds any streams waiting for packets older than
-// the given time T, and pushes through the data they have (IE: tells
-// them to stop waiting and skip the data they're waiting for).
-//
-// It also closes streams older than TC (that can be set to zero, to keep
-// long-lived stream alive, but to flush data anyway).
-//
-// Each Stream maintains a list of zero or more sets of bytes it has received
-// out-of-order. For example, if it has processed up through sequence number
-// 10, it might have bytes [15-20), [20-25), [30,50) in its list. Each set of
-// bytes also has the timestamp it was originally viewed. A flush call will
-// look at the smallest subsequent set of bytes, in this case [15-20), and if
-// its timestamp is older than the passed-in time, it will push it and all
-// contiguous byte-sets out to the Stream's Reassembled function. In this case,
-// it will push [15-20), but also [20-25), since that's contiguous. It will
-// only push [30-50) if its timestamp is also older than the passed-in time,
-// otherwise it will wait until the next FlushCloseOlderThan to see if bytes
-// [25-30) come in.
-//
-// Returns the number of connections flushed, and of those, the number closed
-// because of the flush.
-func (a *Assembler) FlushWithOptions(opt FlushOptions) (flushed, closed int) {
- conns := a.connPool.connections()
- closes := 0
- flushes := 0
- for _, conn := range conns {
- remove := false
- conn.mu.Lock()
- for _, half := range []*halfconnection{&conn.s2c, &conn.c2s} {
- flushed, closed := a.flushClose(conn, half, opt.T, opt.TC)
- if flushed {
- flushes++
- }
- if closed {
- closes++
- }
- }
- if conn.s2c.closed && conn.c2s.closed && conn.s2c.lastSeen.Before(opt.TC) && conn.c2s.lastSeen.Before(opt.TC) {
- remove = true
- }
- conn.mu.Unlock()
- if remove {
- a.connPool.remove(conn)
- }
- }
- return flushes, closes
-}
-
-// FlushCloseOlderThan flushes and closes streams older than given time
-func (a *Assembler) FlushCloseOlderThan(t time.Time) (flushed, closed int) {
- return a.FlushWithOptions(FlushOptions{T: t, TC: t})
-}
-
-func (a *Assembler) flushClose(conn *connection, half *halfconnection, t time.Time, tc time.Time) (bool, bool) {
- flushed, closed := false, false
- if half.closed {
- return flushed, closed
- }
- for half.first != nil && half.first.seen.Before(t) {
- flushed = true
- a.skipFlush(conn, half)
- if half.closed {
- closed = true
- }
- }
- if !half.closed && half.first == nil && half.lastSeen.Before(tc) {
- a.closeHalfConnection(conn, half)
- closed = true
- }
- return flushed, closed
-}
-
-// FlushAll flushes all remaining data into all remaining connections and closes
-// those connections. It returns the total number of connections flushed/closed
-// by the call.
-func (a *Assembler) FlushAll() (closed int) {
- conns := a.connPool.connections()
- closed = len(conns)
- for _, conn := range conns {
- conn.mu.Lock()
- for _, half := range []*halfconnection{&conn.s2c, &conn.c2s} {
- for !half.closed {
- a.skipFlush(conn, half)
- }
- if !half.closed {
- a.closeHalfConnection(conn, half)
- }
- }
- conn.mu.Unlock()
- }
- return
-}
-
-func min(a, b int) int {
- if a < b {
- return a
- }
- return b
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/tcpassembly_test.go b/vendor/github.com/google/gopacket/reassembly/tcpassembly_test.go
deleted file mode 100644
index b29cf2f..0000000
--- a/vendor/github.com/google/gopacket/reassembly/tcpassembly_test.go
+++ /dev/null
@@ -1,1660 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package reassembly
-
-import (
- "encoding/hex"
- "fmt"
- "net"
- "reflect"
- "runtime"
- "testing"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
-)
-
-var netFlow gopacket.Flow
-
-var testDebug = false
-
-func init() {
- netFlow, _ = gopacket.FlowFromEndpoints(
- layers.NewIPEndpoint(net.IP{1, 2, 3, 4}),
- layers.NewIPEndpoint(net.IP{5, 6, 7, 8}))
-}
-
-type Reassembly struct {
- Bytes []byte
- Start bool
- End bool
- Skip int
-}
-
-type testSequence struct {
- in layers.TCP
- want []Reassembly
-}
-
-/* For benchmark: do nothing */
-type testFactoryBench struct {
-}
-
-func (t *testFactoryBench) New(a, b gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream {
- return t
-}
-func (t *testFactoryBench) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, seq Sequence, start *bool, ac AssemblerContext) bool {
- return true
-}
-func (t *testFactoryBench) ReassembledSG(sg ScatterGather, ac AssemblerContext) {
-}
-func (t *testFactoryBench) ReassemblyComplete(ac AssemblerContext) bool {
- return true
-}
-
-/* For tests: append bytes */
-type testFactory struct {
- reassembly []Reassembly
-}
-
-func (t *testFactory) New(a, b gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream {
- return t
-}
-func (t *testFactory) Reassembled(r []Reassembly) {
- t.reassembly = r
- for i := 0; i < len(r); i++ {
- //t.reassembly[i].Seen = time.Time{}
- }
-}
-func (t *testFactory) ReassembledSG(sg ScatterGather, ac AssemblerContext) {
- _, start, end, skip := sg.Info()
- l, _ := sg.Lengths()
- t.reassembly = append(t.reassembly, Reassembly{
- Bytes: sg.Fetch(l),
- Skip: skip,
- Start: start,
- End: end,
- })
-}
-
-func (t *testFactory) ReassemblyComplete(ac AssemblerContext) bool {
- return true
-}
-
-func (t *testFactory) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, seq Sequence, start *bool, ac AssemblerContext) bool {
- return true
-}
-
-/* For memory checks: counts bytes */
-type testMemoryFactory struct {
- bytes int
-}
-
-func (tf *testMemoryFactory) New(a, b gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream {
- return tf
-}
-func (tf *testMemoryFactory) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, seq Sequence, start *bool, ac AssemblerContext) bool {
- return true
-}
-func (tf *testMemoryFactory) ReassembledSG(sg ScatterGather, ac AssemblerContext) {
- bytes, _ := sg.Lengths()
- tf.bytes += bytes
-}
-func (tf *testMemoryFactory) ReassemblyComplete(ac AssemblerContext) bool {
- return true
-}
-
-/*
- * Tests
- */
-
-func test(t *testing.T, s []testSequence) {
- fact := &testFactory{}
- p := NewStreamPool(fact)
- a := NewAssembler(p)
- a.MaxBufferedPagesPerConnection = 4
- for i, test := range s {
- fact.reassembly = []Reassembly{}
- if testDebug {
- fmt.Printf("#### test: #%d: sending:%s\n", i, hex.EncodeToString(test.in.BaseLayer.Payload))
- }
- a.Assemble(netFlow, &test.in)
- final := []Reassembly{}
- if len(test.want) > 0 {
- final = append(final, Reassembly{})
- for _, w := range test.want {
- final[0].Bytes = append(final[0].Bytes, w.Bytes...)
- if w.End {
- final[0].End = true
- }
- if w.Start {
- final[0].Start = true
- }
- if w.Skip != 0 {
- final[0].Skip = w.Skip
- }
- }
- }
- if !reflect.DeepEqual(fact.reassembly, final) {
- t.Fatalf("test %v:\nwant: %v\n got: %v\n", i, final, fact.reassembly)
- }
- if testDebug {
- fmt.Printf("test %v passing...(%s)\n", i, final)
- }
- }
-}
-
-func TestReorder(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1001,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1004,
- BaseLayer: layers.BaseLayer{Payload: []byte{4, 5, 6}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{10, 11, 12}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9}},
- },
- want: []Reassembly{
- Reassembly{
- Skip: -1,
- Bytes: []byte{1, 2, 3},
- },
- Reassembly{
- Bytes: []byte{4, 5, 6},
- },
- Reassembly{
- Bytes: []byte{7, 8, 9},
- },
- Reassembly{
- Bytes: []byte{10, 11, 12},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1016,
- BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1019,
- BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1013,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{1, 2, 3},
- },
- Reassembly{
- Bytes: []byte{2, 2, 3},
- },
- Reassembly{
- Bytes: []byte{3, 2, 3},
- },
- },
- },
- })
-}
-
-func TestMaxPerSkip(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1000,
- SYN: true,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{4, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1013,
- BaseLayer: layers.BaseLayer{Payload: []byte{5, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1016,
- BaseLayer: layers.BaseLayer{Payload: []byte{6, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Skip: 3,
- Bytes: []byte{3, 2, 3},
- },
- Reassembly{
- Bytes: []byte{4, 2, 3},
- },
- Reassembly{
- Bytes: []byte{5, 2, 3},
- },
- Reassembly{
- Bytes: []byte{6, 2, 3},
- },
- },
- },
- })
-}
-
-func TestReorderFast(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1004,
- BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{2, 2, 3},
- },
- Reassembly{
- Bytes: []byte{3, 2, 3},
- },
- },
- },
- })
-}
-
-func TestOverlap(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{1, 2, 3, 4, 5},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{0, 1, 2, 3, 4, 5, 6, 7}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{6, 7},
- },
- },
- },
- })
-}
-
-func TestBufferedOverlap1(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{0, 1, 2, 3, 4, 5, 6, 7}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- Reassembly{
- Bytes: []byte{1, 2, 3, 4, 5},
- },
- Reassembly{
- Bytes: []byte{6, 7},
- },
- },
- },
- })
-}
-
-func TestBufferedOverlapCase6(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{10, 11, 12, 13, 14}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- Reassembly{
- Bytes: []byte{11, 12, 13, 14, 5},
- },
- },
- },
- })
-}
-
-func TestBufferedOverlapExisting(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1000,
- SYN: true,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1005,
- BaseLayer: layers.BaseLayer{Payload: []byte{5, 6, 7, 8, 9, 10}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{8, 9, 10},
- },
- },
- },
- })
-}
-
-func TestBufferedOverlapReemit(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1000,
- SYN: true,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1003,
- BaseLayer: layers.BaseLayer{Payload: []byte{3, 4, 5}},
- },
- want: []Reassembly{},
- },
- })
-}
-
-func TestReorderRetransmission2(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1001,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{10, 11}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1004,
- BaseLayer: layers.BaseLayer{Payload: []byte{6, 6, 6, 2, 2}},
- },
- want: []Reassembly{
- Reassembly{
- Skip: -1,
- Bytes: []byte{1, 2, 3},
- },
- Reassembly{
- Bytes: []byte{6, 6, 6},
- },
- Reassembly{
- Bytes: []byte{2, 2, 3},
- },
- Reassembly{
- Bytes: []byte{10, 11},
- },
- },
- },
- })
-}
-
-func TestOverrun1(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 0xFFFFFFFF,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 10,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{1, 2, 3, 4},
- },
- },
- },
- })
-}
-
-func TestOverrun2(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 10,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 0xFFFFFFFF,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- Reassembly{
- Bytes: []byte{1, 2, 3, 4},
- },
- },
- },
- })
-}
-
-func TestCacheLargePacket(t *testing.T) {
- data := make([]byte, pageBytes*3)
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1001,
- BaseLayer: layers.BaseLayer{Payload: data},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1000,
- SYN: true,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{},
- },
- Reassembly{
- Bytes: data[:pageBytes],
- },
- Reassembly{
- Bytes: data[pageBytes : pageBytes*2],
- },
- Reassembly{
- Bytes: data[pageBytes*2 : pageBytes*3],
- },
- },
- },
- })
-}
-
-/*
- * Keep
- */
-type testKeepFactory struct {
- keep int
- bytes []byte
- skipped int
- t *testing.T
-}
-
-func (tkf *testKeepFactory) New(a, b gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream {
- return tkf
-}
-func (tkf *testKeepFactory) ReassembledSG(sg ScatterGather, ac AssemblerContext) {
- l, _ := sg.Lengths()
- _, _, _, tkf.skipped = sg.Info()
- tkf.bytes = sg.Fetch(l)
- sg.KeepFrom(tkf.keep)
-}
-func (tkf *testKeepFactory) ReassemblyComplete(ac AssemblerContext) bool {
- return true
-}
-
-func (tkf *testKeepFactory) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, seq Sequence, start *bool, ac AssemblerContext) bool {
- return true
-}
-
-type testKeepSequence struct {
- tcp layers.TCP
- keep int
- want []byte
- skipped int
-}
-
-func testKeep(t *testing.T, s []testKeepSequence) {
- fact := &testKeepFactory{t: t}
- p := NewStreamPool(fact)
- a := NewAssembler(p)
- a.MaxBufferedPagesPerConnection = 4
- port := layers.TCPPort(0)
- for i, test := range s {
- // Fake some values according to ports
- flow := netFlow
- dir := TCPDirClientToServer
- if port == 0 {
- port = test.tcp.SrcPort
- }
- if port != test.tcp.SrcPort {
- dir = dir.Reverse()
- flow = flow.Reverse()
- }
- test.tcp.SetInternalPortsForTesting()
- fact.keep = test.keep
- fact.bytes = []byte{}
- if testDebug {
- fmt.Printf("#### testKeep: #%d: sending:%s\n", i, hex.EncodeToString(test.tcp.BaseLayer.Payload))
- }
- a.Assemble(flow, &test.tcp)
- if !reflect.DeepEqual(fact.bytes, test.want) {
- t.Fatalf("#%d: invalid bytes: got %v, expected %v", i, fact.bytes, test.want)
- }
- if fact.skipped != test.skipped {
- t.Fatalf("#%d: expecting %d skipped bytes, got %d", i, test.skipped, fact.skipped)
- }
- if testDebug {
- fmt.Printf("#### testKeep: #%d: bytes: %s\n", i, hex.EncodeToString(fact.bytes))
- }
- }
-}
-
-func TestKeepSimpleOnBoundary(t *testing.T) {
- testKeep(t, []testKeepSequence{
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- keep: 0,
- want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
- },
- want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5},
- },
- })
-}
-
-func TestKeepSimpleNotBoundaryLive(t *testing.T) {
- testKeep(t, []testKeepSequence{
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- keep: 1,
- want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
- },
- want: []byte{2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5},
- },
- })
-}
-
-func TestKeepSimpleNotBoundaryAlreadyKept(t *testing.T) {
- testKeep(t, []testKeepSequence{
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0x10}},
- },
- keep: 0, // 1→10
- want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0x10},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15}},
- },
- keep: 11, // 12→15
- want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1016,
- BaseLayer: layers.BaseLayer{Payload: []byte{0x16, 0x17, 0x18}},
- },
- want: []byte{0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18},
- },
- })
-}
-
-func TestKeepLonger(t *testing.T) {
- testKeep(t, []testKeepSequence{
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}},
- },
- keep: 0,
- want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 10, 11, 12, 13, 14, 15}},
- },
- keep: 0,
- want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{10, 11, 12, 13, 14, 15, 16, 17}},
- },
- want: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17},
- },
- })
-}
-
-func TestKeepWithFlush(t *testing.T) {
- testKeep(t, []testKeepSequence{
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1}},
- },
- keep: 1,
- want: []byte{1},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1003,
- BaseLayer: layers.BaseLayer{Payload: []byte{3}},
- },
- keep: 0,
- want: []byte{},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1004,
- BaseLayer: layers.BaseLayer{Payload: []byte{4}},
- },
- keep: 0,
- want: []byte{},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1006,
- BaseLayer: layers.BaseLayer{Payload: []byte{6}},
- },
- keep: 0,
- want: []byte{},
- },
- // Exceeding 4 pages: flushing first continuous pages
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1008,
- BaseLayer: layers.BaseLayer{Payload: []byte{8}},
- },
- keep: 0,
- skipped: 1,
- want: []byte{3, 4},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{10}},
- },
- keep: 0,
- skipped: 1,
- want: []byte{6},
- },
- {
- tcp: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1012,
- BaseLayer: layers.BaseLayer{Payload: []byte{12}},
- },
- keep: 0,
- skipped: 1,
- want: []byte{8},
- },
- })
-}
-
-/*
- * FSM tests
- */
-/* For FSM: bump nb on accepted packet */
-type testFSMFactory struct {
- nb int
- fsm TCPSimpleFSM
-}
-
-func (t *testFSMFactory) New(a, b gopacket.Flow, tcp *layers.TCP, ac AssemblerContext) Stream {
- return t
-}
-func (t *testFSMFactory) ReassembledSG(sg ScatterGather, ac AssemblerContext) {
-}
-func (t *testFSMFactory) ReassemblyComplete(ac AssemblerContext) bool {
- return false
-}
-
-func (t *testFSMFactory) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, seq Sequence, start *bool, ac AssemblerContext) bool {
- ok := t.fsm.CheckState(tcp, dir)
- if ok {
- t.nb++
- }
- return ok
-}
-
-type testFSMSequence struct {
- tcp layers.TCP
- ci gopacket.CaptureInfo
- nb int
-}
-
-func (seq *testFSMSequence) GetCaptureInfo() gopacket.CaptureInfo {
- return seq.ci
-}
-
-func testFSM(t *testing.T, s []testFSMSequence) {
- fact := &testFSMFactory{}
- p := NewStreamPool(fact)
- a := NewAssembler(p)
- //a.MaxBufferedPagesPerConnection = 4
- fact.nb = 0
- port := layers.TCPPort(0)
- for i, test := range s {
- // Fake some values according to ports
- flow := netFlow
- dir := TCPDirClientToServer
- if port == 0 {
- port = test.tcp.SrcPort
- }
- if port != test.tcp.SrcPort {
- dir = dir.Reverse()
- flow = flow.Reverse()
- }
- test.tcp.SetInternalPortsForTesting()
- a.AssembleWithContext(flow, &test.tcp, &test)
- if fact.nb != test.nb {
- t.Fatalf("#%d: packet rejected: got %d, expected %d", i, fact.nb, test.nb)
- }
- }
-}
-
-func TestFSMnormalFlow(t *testing.T) {
- testFSM(t, []testFSMSequence{
- {
- tcp: layers.TCP{
- SYN: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511116,
- Ack: 0,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 566690000),
- },
- nb: 1,
- },
- {
- tcp: layers.TCP{
- SYN: true,
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787765,
- Ack: 374511117,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590332000),
- },
- nb: 2,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590346000),
- },
- nb: 3,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590387000),
- },
- nb: 4,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787766,
- Ack: 374511150,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 613687000),
- },
- nb: 5,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787766,
- Ack: 374511150,
- BaseLayer: layers.BaseLayer{Payload: []byte{8, 133, 104, 196, 132, 0, 0, 1, 0, 2, 0, 7, 0, 19, 2, 85, 83, 0, 0, 6, 0, 1, 2, 117, 115, 0, 0, 6, 0, 1, 0, 0, 3, 132, 0, 54, 1, 97, 5, 99, 99, 116, 108, 100, 192, 20, 10, 104, 111, 115, 116, 109, 97, 115, 116, 101, 114, 7, 110, 101, 117, 115, 116, 97, 114, 3, 98, 105, 122, 0, 120, 18, 40, 205, 0, 0, 3, 132, 0, 0, 3, 132, 0, 9, 58, 128, 0, 1, 81, 128, 192, 20, 0, 46, 0, 1, 0, 0, 3, 132, 0, 150, 0, 6, 5, 1, 0, 0, 3, 132, 85, 138, 90, 146, 85, 98, 191, 130, 27, 78, 2, 117, 115, 0, 69, 13, 35, 189, 141, 225, 107, 238, 108, 182, 207, 44, 105, 31, 212, 103, 32, 93, 217, 108, 20, 231, 188, 28, 241, 237, 104, 182, 117, 121, 195, 112, 64, 96, 237, 248, 6, 181, 186, 96, 60, 6, 18, 29, 188, 96, 201, 140, 251, 61, 71, 177, 108, 156, 9, 83, 125, 172, 188, 75, 81, 67, 218, 55, 93, 131, 243, 15, 190, 75, 4, 165, 226, 124, 49, 67, 142, 131, 239, 240, 76, 225, 10, 242, 68, 88, 240, 200, 27, 97, 102, 73, 92, 73, 133, 170, 175, 198, 99, 109, 90, 16, 162, 101, 95, 96, 102, 250, 91, 74, 80, 3, 87, 167, 50, 230, 9, 213, 7, 222, 197, 87, 183, 190, 148, 247, 207, 204, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 10, 1, 102, 5, 99, 99, 116, 108, 100, 192, 12, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 97, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 98, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 99, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 101, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 107, 193, 8, 192, 118, 0, 46, 0, 1, 0, 7, 233, 0, 0, 150, 0, 2, 5, 1, 0, 7, 233, 0, 85, 127, 33, 92, 85, 87, 134, 98, 27, 78, 2, 117, 115, 0, 19, 227, 175, 75, 88, 245, 164, 158, 150, 198, 57, 253, 150, 179, 161, 52, 24, 56, 229, 176, 175, 40, 45, 232, 188, 171, 131, 197, 107, 125, 218, 192, 78, 221, 146, 33, 114, 55, 43, 12, 131, 213, 51, 98, 37, 2, 102, 161, 232, 115, 177, 210, 51, 169, 215, 133, 56, 190, 91, 75, 8, 222, 231, 202, 139, 28, 187, 249, 72, 21, 23, 56, 63, 72, 126, 142, 242, 195, 242, 64, 208, 134, 100, 157, 197, 159, 43, 148, 20, 70, 117, 152, 159, 35, 200, 220, 49, 234, 173, 210, 91, 34, 210, 192, 7, 197, 112, 117, 208, 234, 42, 49, 133, 237, 197, 14, 244, 149, 191, 142, 36, 252, 42, 48, 182, 189, 9, 68, 1, 65, 5, 67, 67, 84, 76, 68, 193, 126, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 124, 70, 1, 66, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 125, 70, 194, 26, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 209, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 1, 67, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 127, 70, 1, 69, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 126, 70, 1, 70, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 209, 173, 58, 70, 194, 108, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 0, 54, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 1, 75, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 128, 70, 194, 154, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 226, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 194, 2, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 230, 49, 85, 73, 83, 2, 27, 78, 2, 117, 115, 0, 82, 36, 11, 141, 74, 85, 70, 98, 179, 63, 173, 83, 8, 70, 155, 41, 102, 166, 140, 62, 71, 178, 130, 38, 171, 200, 180, 68, 2, 215, 45, 6, 43, 59, 171, 146, 223, 215, 9, 77, 5, 104, 167, 42, 237, 170, 30, 114, 205, 129, 59, 225, 152, 224, 79, 1, 65, 68, 208, 153, 121, 237, 199, 87, 2, 251, 100, 105, 59, 24, 73, 226, 169, 121, 250, 91, 41, 124, 14, 23, 135, 52, 2, 86, 72, 224, 100, 135, 70, 216, 16, 107, 84, 59, 13, 168, 58, 187, 54, 98, 230, 167, 246, 42, 46, 156, 206, 238, 120, 199, 25, 144, 98, 249, 70, 162, 34, 43, 145, 114, 186, 233, 47, 42, 75, 95, 152, 235, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 160, 95, 100, 37, 167, 82, 93, 165, 126, 247, 147, 173, 238, 154, 206, 174, 96, 175, 209, 7, 8, 169, 171, 223, 29, 201, 161, 177, 98, 54, 94, 62, 70, 127, 142, 109, 206, 42, 179, 109, 156, 160, 156, 20, 59, 24, 147, 164, 13, 121, 192, 84, 157, 26, 56, 177, 151, 210, 7, 197, 229, 110, 60, 58, 224, 42, 77, 5, 59, 80, 216, 221, 248, 19, 66, 102, 74, 199, 238, 120, 231, 201, 187, 29, 11, 46, 195, 164, 8, 221, 128, 25, 205, 42, 247, 152, 112, 176, 14, 117, 150, 223, 245, 32, 212, 107, 4, 245, 27, 126, 224, 216, 0, 89, 106, 238, 185, 206, 44, 56, 204, 175, 7, 139, 233, 228, 127, 175, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 28, 5, 3, 0, 0, 28, 32, 85, 108, 217, 174, 85, 69, 70, 242, 27, 78, 2, 117, 115, 0, 172, 117, 89, 89, 73, 249, 245, 211, 100, 127, 48, 135, 224, 97, 172, 146, 128, 30, 190, 72, 199, 170, 97, 179, 136, 109, 86, 110, 235, 214, 47, 50, 115, 11, 226, 168, 56, 198, 24, 212, 205, 207, 2, 116, 104, 112, 99, 234, 236, 44, 70, 19, 19, 215, 127, 200, 162, 215, 142, 45, 135, 91, 219, 217, 86, 231, 154, 87, 222, 161, 32, 66, 196, 55, 117, 20, 186, 9, 134, 252, 249, 219, 9, 196, 128, 8, 222, 201, 131, 210, 182, 232, 142, 72, 160, 171, 95, 231, 232, 156, 28, 34, 54, 94, 73, 183, 38, 160, 123, 175, 157, 21, 163, 8, 214, 155, 172, 237, 169, 28, 15, 138, 105, 107, 251, 109, 131, 240, 194, 72, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 77, 207, 197, 130, 236, 138, 192, 241, 225, 114, 8, 22, 76, 54, 43, 121, 42, 44, 9, 92, 56, 253, 224, 179, 191, 131, 40, 176, 94, 61, 33, 12, 43, 82, 156, 236, 211, 29, 187, 100, 220, 243, 24, 134, 42, 204, 46, 161, 214, 91, 68, 119, 40, 252, 53, 54, 146, 136, 196, 168, 204, 195, 131, 110, 6, 73, 16, 161, 86, 35, 150, 153, 162, 185, 227, 65, 228, 160, 203, 42, 250, 121, 14, 42, 115, 221, 232, 96, 99, 164, 230, 29, 195, 149, 85, 206, 41, 1, 252, 77, 188, 88, 8, 182, 37, 249, 6, 158, 6, 244, 158, 254, 141, 203, 6, 158, 198, 103, 130, 98, 123, 34, 245, 44, 126, 77, 24, 187, 194, 90, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 108, 194, 203, 85, 69, 51, 125, 27, 78, 2, 117, 115, 0, 86, 26, 187, 56, 252, 194, 199, 140, 229, 133, 186, 187, 20, 174, 26, 48, 212, 129, 10, 20, 167, 179, 53, 72, 176, 92, 153, 48, 146, 15, 163, 182, 80, 138, 181, 135, 98, 129, 17, 66, 55, 184, 76, 225, 72, 104, 7, 221, 40, 71, 41, 202, 246, 154, 166, 199, 74, 175, 146, 54, 25, 56, 115, 243}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 621198000),
- },
- nb: 6,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511150,
- Ack: 3465789226,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 621220000),
- },
- nb: 7,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465789226,
- Ack: 374511150,
- BaseLayer: layers.BaseLayer{Payload: []byte{153, 141, 101, 187, 110, 15, 63, 42, 81, 100, 95, 68, 241, 85, 160, 227, 3, 1, 12, 80, 166, 1, 98, 2, 44, 98, 63, 203, 70, 164, 99, 195, 23, 152, 223, 253, 208, 10, 12, 19, 66, 121, 9, 158, 205, 96, 218, 0, 80, 70, 58, 95, 41, 124, 216, 13, 122, 135, 102, 200, 181, 233, 129, 174, 194, 108, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 108, 223, 157, 85, 69, 74, 55, 27, 78, 2, 117, 115, 0, 149, 71, 215, 149, 16, 165, 115, 229, 141, 136, 187, 158, 88, 225, 131, 231, 182, 218, 235, 27, 48, 65, 244, 77, 186, 135, 72, 18, 87, 52, 180, 128, 130, 67, 75, 173, 160, 243, 104, 178, 103, 117, 96, 209, 36, 51, 108, 47, 232, 214, 254, 15, 208, 182, 218, 174, 248, 237, 88, 150, 35, 190, 239, 249, 171, 151, 9, 236, 2, 252, 255, 13, 79, 190, 147, 36, 161, 210, 202, 80, 209, 136, 167, 180, 186, 68, 246, 249, 48, 123, 46, 11, 132, 103, 132, 207, 186, 68, 110, 133, 142, 109, 194, 19, 122, 57, 203, 217, 120, 93, 67, 168, 91, 252, 87, 38, 33, 228, 229, 162, 190, 170, 23, 188, 89, 15, 241, 71, 194, 108, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 28, 5, 3, 0, 0, 28, 32, 85, 108, 217, 174, 85, 69, 70, 242, 27, 78, 2, 117, 115, 0, 206, 97, 120, 37, 255, 252, 7, 156, 162, 192, 43, 84, 105, 94, 125, 55, 13, 247, 234, 9, 25, 100, 246, 25, 77, 168, 199, 208, 187, 209, 164, 123, 234, 138, 238, 15, 86, 45, 163, 108, 162, 117, 247, 128, 3, 187, 100, 185, 193, 191, 134, 86, 161, 254, 236, 99, 66, 66, 35, 173, 91, 243, 175, 3, 175, 94, 79, 68, 246, 109, 200, 154, 209, 185, 11, 210, 50, 147, 136, 213, 158, 81, 111, 17, 149, 239, 110, 114, 25, 234, 247, 158, 233, 33, 36, 181, 66, 84, 189, 37, 207, 58, 9, 171, 143, 66, 69, 137, 192, 6, 187, 59, 16, 51, 80, 56, 89, 170, 12, 195, 69, 133, 188, 110, 171, 17, 17, 213, 194, 154, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 123, 36, 154, 4, 158, 41, 96, 252, 116, 114, 16, 137, 28, 177, 206, 33, 192, 88, 89, 1, 69, 252, 206, 88, 89, 152, 210, 179, 248, 44, 202, 239, 95, 131, 126, 147, 249, 93, 57, 166, 215, 184, 211, 164, 196, 71, 170, 3, 25, 18, 177, 214, 94, 147, 181, 148, 197, 11, 171, 219, 107, 48, 105, 81, 239, 110, 249, 140, 68, 127, 193, 146, 176, 161, 246, 108, 75, 141, 205, 211, 73, 247, 125, 205, 120, 156, 82, 55, 130, 250, 26, 15, 44, 214, 91, 115, 11, 103, 22, 83, 184, 96, 107, 138, 2, 127, 168, 191, 92, 102, 137, 161, 63, 225, 134, 17, 178, 242, 11, 43, 8, 30, 164, 28, 140, 195, 83, 121, 194, 154, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 28, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 189, 98, 234, 251, 237, 24, 143, 210, 30, 242, 97, 66, 50, 211, 47, 109, 110, 121, 244, 239, 89, 0, 39, 92, 218, 155, 71, 5, 23, 136, 231, 107, 95, 52, 231, 118, 253, 206, 250, 178, 209, 136, 13, 36, 36, 54, 157, 237, 35, 110, 134, 253, 80, 237, 162, 163, 38, 21, 54, 241, 240, 253, 73, 33, 191, 128, 32, 6, 198, 165, 35, 203, 244, 15, 166, 250, 159, 67, 149, 56, 19, 243, 230, 87, 6, 44, 150, 90, 79, 107, 18, 121, 112, 23, 176, 104, 50, 110, 176, 138, 250, 6, 209, 22, 41, 73, 234, 4, 124, 233, 208, 218, 236, 117, 232, 217, 10, 172, 18, 215, 143, 119, 193, 113, 10, 59, 255, 221, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 622508000),
- },
- nb: 8,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511150,
- Ack: 3465789949,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 622531000),
- },
- nb: 9,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- FIN: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511150,
- Ack: 3465789949,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 622907000),
- },
- nb: 10,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- FIN: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465789949,
- Ack: 374511151,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 652784000),
- },
- nb: 11,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511151,
- Ack: 3465789950,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 652809000),
- },
- nb: 12,
- },
- })
-}
-
-func TestFSMearlyRST(t *testing.T) {
- testFSM(t, []testFSMSequence{
- {
- tcp: layers.TCP{
- SYN: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511116,
- Ack: 0,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 566690000),
- },
- nb: 1,
- },
- {
- tcp: layers.TCP{
- SYN: true,
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787765,
- Ack: 374511117,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590332000),
- },
- nb: 2,
- },
- {
- tcp: layers.TCP{
- RST: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590346000),
- },
- nb: 3,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590387000),
- },
- nb: 3,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787766,
- Ack: 374511150,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 613687000),
- },
- nb: 3,
- },
- })
-}
-
-func TestFSMestablishedThenRST(t *testing.T) {
- testFSM(t, []testFSMSequence{
- {
- tcp: layers.TCP{
- SYN: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511116,
- Ack: 0,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 566690000),
- },
- nb: 1,
- },
- {
- tcp: layers.TCP{
- SYN: true,
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787765,
- Ack: 374511117,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590332000),
- },
- nb: 2,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590346000),
- },
- nb: 3,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590387000),
- },
- nb: 4,
- },
- {
- tcp: layers.TCP{
- RST: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787766,
- Ack: 374511150,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 613687000),
- },
- nb: 5,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787766,
- Ack: 374511150,
- BaseLayer: layers.BaseLayer{Payload: []byte{8, 133, 104, 196, 132, 0, 0, 1, 0, 2, 0, 7, 0, 19, 2, 85, 83, 0, 0, 6, 0, 1, 2, 117, 115, 0, 0, 6, 0, 1, 0, 0, 3, 132, 0, 54, 1, 97, 5, 99, 99, 116, 108, 100, 192, 20, 10, 104, 111, 115, 116, 109, 97, 115, 116, 101, 114, 7, 110, 101, 117, 115, 116, 97, 114, 3, 98, 105, 122, 0, 120, 18, 40, 205, 0, 0, 3, 132, 0, 0, 3, 132, 0, 9, 58, 128, 0, 1, 81, 128, 192, 20, 0, 46, 0, 1, 0, 0, 3, 132, 0, 150, 0, 6, 5, 1, 0, 0, 3, 132, 85, 138, 90, 146, 85, 98, 191, 130, 27, 78, 2, 117, 115, 0, 69, 13, 35, 189, 141, 225, 107, 238, 108, 182, 207, 44, 105, 31, 212, 103, 32, 93, 217, 108, 20, 231, 188, 28, 241, 237, 104, 182, 117, 121, 195, 112, 64, 96, 237, 248, 6, 181, 186, 96, 60, 6, 18, 29, 188, 96, 201, 140, 251, 61, 71, 177, 108, 156, 9, 83, 125, 172, 188, 75, 81, 67, 218, 55, 93, 131, 243, 15, 190, 75, 4, 165, 226, 124, 49, 67, 142, 131, 239, 240, 76, 225, 10, 242, 68, 88, 240, 200, 27, 97, 102, 73, 92, 73, 133, 170, 175, 198, 99, 109, 90, 16, 162, 101, 95, 96, 102, 250, 91, 74, 80, 3, 87, 167, 50, 230, 9, 213, 7, 222, 197, 87, 183, 190, 148, 247, 207, 204, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 10, 1, 102, 5, 99, 99, 116, 108, 100, 192, 12, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 97, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 98, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 99, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 101, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 107, 193, 8, 192, 118, 0, 46, 0, 1, 0, 7, 233, 0, 0, 150, 0, 2, 5, 1, 0, 7, 233, 0, 85, 127, 33, 92, 85, 87, 134, 98, 27, 78, 2, 117, 115, 0, 19, 227, 175, 75, 88, 245, 164, 158, 150, 198, 57, 253, 150, 179, 161, 52, 24, 56, 229, 176, 175, 40, 45, 232, 188, 171, 131, 197, 107, 125, 218, 192, 78, 221, 146, 33, 114, 55, 43, 12, 131, 213, 51, 98, 37, 2, 102, 161, 232, 115, 177, 210, 51, 169, 215, 133, 56, 190, 91, 75, 8, 222, 231, 202, 139, 28, 187, 249, 72, 21, 23, 56, 63, 72, 126, 142, 242, 195, 242, 64, 208, 134, 100, 157, 197, 159, 43, 148, 20, 70, 117, 152, 159, 35, 200, 220, 49, 234, 173, 210, 91, 34, 210, 192, 7, 197, 112, 117, 208, 234, 42, 49, 133, 237, 197, 14, 244, 149, 191, 142, 36, 252, 42, 48, 182, 189, 9, 68, 1, 65, 5, 67, 67, 84, 76, 68, 193, 126, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 124, 70, 1, 66, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 125, 70, 194, 26, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 209, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 1, 67, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 127, 70, 1, 69, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 126, 70, 1, 70, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 209, 173, 58, 70, 194, 108, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 0, 54, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 1, 75, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 128, 70, 194, 154, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 226, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 194, 2, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 230, 49, 85, 73, 83, 2, 27, 78, 2, 117, 115, 0, 82, 36, 11, 141, 74, 85, 70, 98, 179, 63, 173, 83, 8, 70, 155, 41, 102, 166, 140, 62, 71, 178, 130, 38, 171, 200, 180, 68, 2, 215, 45, 6, 43, 59, 171, 146, 223, 215, 9, 77, 5, 104, 167, 42, 237, 170, 30, 114, 205, 129, 59, 225, 152, 224, 79, 1, 65, 68, 208, 153, 121, 237, 199, 87, 2, 251, 100, 105, 59, 24, 73, 226, 169, 121, 250, 91, 41, 124, 14, 23, 135, 52, 2, 86, 72, 224, 100, 135, 70, 216, 16, 107, 84, 59, 13, 168, 58, 187, 54, 98, 230, 167, 246, 42, 46, 156, 206, 238, 120, 199, 25, 144, 98, 249, 70, 162, 34, 43, 145, 114, 186, 233, 47, 42, 75, 95, 152, 235, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 160, 95, 100, 37, 167, 82, 93, 165, 126, 247, 147, 173, 238, 154, 206, 174, 96, 175, 209, 7, 8, 169, 171, 223, 29, 201, 161, 177, 98, 54, 94, 62, 70, 127, 142, 109, 206, 42, 179, 109, 156, 160, 156, 20, 59, 24, 147, 164, 13, 121, 192, 84, 157, 26, 56, 177, 151, 210, 7, 197, 229, 110, 60, 58, 224, 42, 77, 5, 59, 80, 216, 221, 248, 19, 66, 102, 74, 199, 238, 120, 231, 201, 187, 29, 11, 46, 195, 164, 8, 221, 128, 25, 205, 42, 247, 152, 112, 176, 14, 117, 150, 223, 245, 32, 212, 107, 4, 245, 27, 126, 224, 216, 0, 89, 106, 238, 185, 206, 44, 56, 204, 175, 7, 139, 233, 228, 127, 175, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 28, 5, 3, 0, 0, 28, 32, 85, 108, 217, 174, 85, 69, 70, 242, 27, 78, 2, 117, 115, 0, 172, 117, 89, 89, 73, 249, 245, 211, 100, 127, 48, 135, 224, 97, 172, 146, 128, 30, 190, 72, 199, 170, 97, 179, 136, 109, 86, 110, 235, 214, 47, 50, 115, 11, 226, 168, 56, 198, 24, 212, 205, 207, 2, 116, 104, 112, 99, 234, 236, 44, 70, 19, 19, 215, 127, 200, 162, 215, 142, 45, 135, 91, 219, 217, 86, 231, 154, 87, 222, 161, 32, 66, 196, 55, 117, 20, 186, 9, 134, 252, 249, 219, 9, 196, 128, 8, 222, 201, 131, 210, 182, 232, 142, 72, 160, 171, 95, 231, 232, 156, 28, 34, 54, 94, 73, 183, 38, 160, 123, 175, 157, 21, 163, 8, 214, 155, 172, 237, 169, 28, 15, 138, 105, 107, 251, 109, 131, 240, 194, 72, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 77, 207, 197, 130, 236, 138, 192, 241, 225, 114, 8, 22, 76, 54, 43, 121, 42, 44, 9, 92, 56, 253, 224, 179, 191, 131, 40, 176, 94, 61, 33, 12, 43, 82, 156, 236, 211, 29, 187, 100, 220, 243, 24, 134, 42, 204, 46, 161, 214, 91, 68, 119, 40, 252, 53, 54, 146, 136, 196, 168, 204, 195, 131, 110, 6, 73, 16, 161, 86, 35, 150, 153, 162, 185, 227, 65, 228, 160, 203, 42, 250, 121, 14, 42, 115, 221, 232, 96, 99, 164, 230, 29, 195, 149, 85, 206, 41, 1, 252, 77, 188, 88, 8, 182, 37, 249, 6, 158, 6, 244, 158, 254, 141, 203, 6, 158, 198, 103, 130, 98, 123, 34, 245, 44, 126, 77, 24, 187, 194, 90, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 108, 194, 203, 85, 69, 51, 125, 27, 78, 2, 117, 115, 0, 86, 26, 187, 56, 252, 194, 199, 140, 229, 133, 186, 187, 20, 174, 26, 48, 212, 129, 10, 20, 167, 179, 53, 72, 176, 92, 153, 48, 146, 15, 163, 182, 80, 138, 181, 135, 98, 129, 17, 66, 55, 184, 76, 225, 72, 104, 7, 221, 40, 71, 41, 202, 246, 154, 166, 199, 74, 175, 146, 54, 25, 56, 115, 243}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 621198000),
- },
- nb: 5,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511150,
- Ack: 3465789226,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 621220000),
- },
- nb: 5,
- },
- })
-}
-
-func TestFSMmissingSYNACK(t *testing.T) {
- testFSM(t, []testFSMSequence{
- {
- tcp: layers.TCP{
- SYN: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511116,
- Ack: 0,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 566690000),
- },
- nb: 1,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590346000),
- },
- nb: 1,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590387000),
- },
- nb: 1,
- },
- })
-}
-
-/*
- * Memory test
- */
-func TestMemoryShrink(t *testing.T) {
- tcp := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 999,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactoryBench{}))
- var before runtime.MemStats
- runtime.GC()
- runtime.ReadMemStats(&before)
- run := 1050
- // Allocate > initial
- for i := 0; i < run; i++ {
- a.Assemble(netFlow, &tcp)
- if tcp.SYN {
- tcp.SYN = false
- tcp.Seq += 1 + 1
- }
- tcp.Seq += 10
- }
- var after runtime.MemStats
- a.FlushAll()
- runtime.GC()
- runtime.ReadMemStats(&after)
- if after.HeapAlloc < before.HeapAlloc {
- t.Fatalf("Nothing allocated for %d run: before: %d, after: %d", run, before.HeapAlloc, after.HeapAlloc)
- }
- before = after
- // Do ~ initial allocs+free()
- run *= 2
- for i := 0; i < run; i++ {
- a.Assemble(netFlow, &tcp)
- if i%50 == 0 {
- a.FlushAll()
- }
- tcp.Seq += 10
- }
- runtime.GC()
- runtime.ReadMemStats(&after)
- if after.HeapAlloc >= before.HeapAlloc {
- t.Fatalf("Nothing freed for %d run: before: %d, after: %d", run, before.HeapAlloc, after.HeapAlloc)
- }
-}
-
-/*
- * Benchmark tests
- */
-func BenchmarkSingleStreamNo(b *testing.B) {
- t := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactoryBench{}))
- for i := 0; i < b.N; i++ {
- a.Assemble(netFlow, &t)
- if t.SYN {
- t.SYN = false
- t.Seq++
- }
- t.Seq += 10
- }
-}
-
-func BenchmarkSingleStreamSkips(b *testing.B) {
- t := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactoryBench{}))
- skipped := false
- for i := 0; i < b.N; i++ {
- if i%10 == 9 {
- t.Seq += 10
- skipped = true
- } else if skipped {
- t.Seq -= 20
- }
- a.Assemble(netFlow, &t)
- if t.SYN {
- t.SYN = false
- t.Seq++
- }
- t.Seq += 10
- if skipped {
- t.Seq += 10
- skipped = false
- }
- }
-}
-
-func BenchmarkSingleStreamLoss(b *testing.B) {
- t := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactoryBench{}))
- for i := 0; i < b.N; i++ {
- a.Assemble(netFlow, &t)
- t.SYN = false
- t.Seq += 11
- }
-}
-
-func BenchmarkMultiStreamGrow(b *testing.B) {
- t := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 0,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactoryBench{}))
- for i := 0; i < b.N; i++ {
- t.SrcPort = layers.TCPPort(i)
- a.Assemble(netFlow, &t)
- t.Seq += 10
- }
-}
-
-func BenchmarkMultiStreamConn(b *testing.B) {
- t := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 0,
- SYN: true,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactoryBench{}))
- for i := 0; i < b.N; i++ {
- t.SrcPort = layers.TCPPort(i)
- a.Assemble(netFlow, &t)
- if i%65536 == 65535 {
- if t.SYN {
- t.SYN = false
- t.Seq++
- }
- t.Seq += 10
- }
- }
-}
-
-type testMemoryContext struct{}
-
-func (t *testMemoryContext) GetCaptureInfo() gopacket.CaptureInfo {
- return gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590387000),
- }
-}
-
-func TestFullyOrderedAndCompleteStreamDoesNotAlloc(t *testing.T) {
- c2s := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 0,
- SYN: true,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- s2c := layers.TCP{
- SrcPort: c2s.DstPort,
- DstPort: c2s.SrcPort,
- Seq: 0,
- SYN: true,
- ACK: true,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- tf := testMemoryFactory{}
- a := NewAssembler(NewStreamPool(&tf))
-
- ctx := &testMemoryContext{}
- // First packet
- a.AssembleWithContext(netFlow, &c2s, ctx)
- a.AssembleWithContext(netFlow.Reverse(), &s2c, ctx)
- c2s.SYN, s2c.SYN = false, false
- c2s.ACK = true
- c2s.Seq++
- s2c.Seq++
- N := 1000
- if n := testing.AllocsPerRun(N, func() {
- c2s.Seq += 10
- s2c.Seq += 10
- c2s.Ack += 10
- s2c.Ack += 10
- a.AssembleWithContext(netFlow, &c2s, ctx)
- a.AssembleWithContext(netFlow.Reverse(), &s2c, ctx)
- }); n > 0 {
- t.Error(n, "mallocs for normal TCP stream")
- }
- // Ensure all bytes have been through the stream
- // +1 for first packet and +1 because AllocsPerRun seems to run fun N+1 times.
- if tf.bytes != 10*2*(N+1+1) {
- t.Error(tf.bytes, "bytes handled, expected", 10*2*(N+1+1))
- }
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/tcpcheck.go b/vendor/github.com/google/gopacket/reassembly/tcpcheck.go
deleted file mode 100644
index 4b52aba..0000000
--- a/vendor/github.com/google/gopacket/reassembly/tcpcheck.go
+++ /dev/null
@@ -1,246 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package reassembly
-
-import (
- "encoding/binary"
- "fmt"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
-)
-
-/*
- * Check TCP packet against options (window, MSS)
- */
-
-type tcpStreamOptions struct {
- mss int
- scale int
- receiveWindow uint
-}
-
-// TCPOptionCheck contains options for the two directions
-type TCPOptionCheck struct {
- options [2]tcpStreamOptions
-}
-
-func (t *TCPOptionCheck) getOptions(dir TCPFlowDirection) *tcpStreamOptions {
- if dir == TCPDirClientToServer {
- return &t.options[0]
- }
- return &t.options[1]
-}
-
-// NewTCPOptionCheck creates default options
-func NewTCPOptionCheck() TCPOptionCheck {
- return TCPOptionCheck{
- options: [2]tcpStreamOptions{
- tcpStreamOptions{
- mss: 0,
- scale: -1,
- receiveWindow: 0,
- }, tcpStreamOptions{
- mss: 0,
- scale: -1,
- receiveWindow: 0,
- },
- },
- }
-}
-
-// Accept checks whether the packet should be accepted by checking TCP options
-func (t *TCPOptionCheck) Accept(tcp *layers.TCP, ci gopacket.CaptureInfo, dir TCPFlowDirection, acked Sequence, start *bool) error {
- options := t.getOptions(dir)
- if tcp.SYN {
- mss := -1
- scale := -1
- for _, o := range tcp.Options {
- // MSS
- if o.OptionType == 2 {
- if len(o.OptionData) != 2 {
- return fmt.Errorf("MSS option data length expected 2, got %d", len(o.OptionData))
- }
- mss = int(binary.BigEndian.Uint16(o.OptionData[:2]))
- }
- // Window scaling
- if o.OptionType == 3 {
- if len(o.OptionData) != 1 {
- return fmt.Errorf("Window scaling length expected: 1, got %d", len(o.OptionData))
- }
- scale = int(o.OptionData[0])
- }
- }
- options.mss = mss
- options.scale = scale
- } else {
- if acked != invalidSequence {
- revOptions := t.getOptions(dir.Reverse())
- length := len(tcp.Payload)
-
- // Check packet is in the correct window
- diff := acked.Difference(Sequence(tcp.Seq))
- if diff == -1 && (length == 1 || length == 0) {
- // This is probably a Keep-alive
- // TODO: check byte is ok
- } else if diff < 0 {
- return fmt.Errorf("Re-emitted packet (diff:%d,seq:%d,rev-ack:%d)", diff,
- tcp.Seq, acked)
- } else if revOptions.mss > 0 && length > revOptions.mss {
- return fmt.Errorf("%d > mss (%d)", length, revOptions.mss)
- } else if revOptions.receiveWindow != 0 && revOptions.scale < 0 && diff > int(revOptions.receiveWindow) {
- return fmt.Errorf("%d > receiveWindow(%d)", diff, revOptions.receiveWindow)
- }
- }
- }
- // Compute receiveWindow
- options.receiveWindow = uint(tcp.Window)
- if options.scale > 0 {
- options.receiveWindow = options.receiveWindow << (uint(options.scale))
- }
- return nil
-}
-
-// TCPSimpleFSM implements a very simple TCP state machine
-//
-// Usage:
-// When implementing a Stream interface and to avoid to consider packets that
-// would be rejected due to client/server's TCP stack, the Accept() can call
-// TCPSimpleFSM.CheckState().
-//
-// Limitations:
-// - packet should be received in-order.
-// - no check on sequence number is performed
-// - no RST
-type TCPSimpleFSM struct {
- dir TCPFlowDirection
- state int
- options TCPSimpleFSMOptions
-}
-
-// TCPSimpleFSMOptions holds options for TCPSimpleFSM
-type TCPSimpleFSMOptions struct {
- SupportMissingEstablishment bool // Allow missing SYN, SYN+ACK, ACK
-}
-
-// Internal values of state machine
-const (
- TCPStateClosed = 0
- TCPStateSynSent = 1
- TCPStateEstablished = 2
- TCPStateCloseWait = 3
- TCPStateLastAck = 4
- TCPStateReset = 5
-)
-
-// NewTCPSimpleFSM creates a new TCPSimpleFSM
-func NewTCPSimpleFSM(options TCPSimpleFSMOptions) *TCPSimpleFSM {
- return &TCPSimpleFSM{
- state: TCPStateClosed,
- options: options,
- }
-}
-
-func (t *TCPSimpleFSM) String() string {
- switch t.state {
- case TCPStateClosed:
- return "Closed"
- case TCPStateSynSent:
- return "SynSent"
- case TCPStateEstablished:
- return "Established"
- case TCPStateCloseWait:
- return "CloseWait"
- case TCPStateLastAck:
- return "LastAck"
- case TCPStateReset:
- return "Reset"
- }
- return "?"
-}
-
-// CheckState returns false if tcp is invalid wrt current state or update the state machine's state
-func (t *TCPSimpleFSM) CheckState(tcp *layers.TCP, dir TCPFlowDirection) bool {
- if t.state == TCPStateClosed && t.options.SupportMissingEstablishment && !(tcp.SYN && !tcp.ACK) {
- /* try to figure out state */
- switch true {
- case tcp.SYN && tcp.ACK:
- t.state = TCPStateSynSent
- t.dir = dir.Reverse()
- case tcp.FIN && !tcp.ACK:
- t.state = TCPStateEstablished
- case tcp.FIN && tcp.ACK:
- t.state = TCPStateCloseWait
- t.dir = dir.Reverse()
- default:
- t.state = TCPStateEstablished
- }
- }
-
- switch t.state {
- /* openning connection */
- case TCPStateClosed:
- if tcp.SYN && !tcp.ACK {
- t.dir = dir
- t.state = TCPStateSynSent
- return true
- }
- case TCPStateSynSent:
- if tcp.RST {
- t.state = TCPStateReset
- return true
- }
-
- if tcp.SYN && tcp.ACK && dir == t.dir.Reverse() {
- t.state = TCPStateEstablished
- return true
- }
- if tcp.SYN && !tcp.ACK && dir == t.dir {
- // re-transmission
- return true
- }
- /* established */
- case TCPStateEstablished:
- if tcp.RST {
- t.state = TCPStateReset
- return true
- }
-
- if tcp.FIN {
- t.state = TCPStateCloseWait
- t.dir = dir
- return true
- }
- // accept any packet
- return true
- /* closing connection */
- case TCPStateCloseWait:
- if tcp.RST {
- t.state = TCPStateReset
- return true
- }
-
- if tcp.FIN && tcp.ACK && dir == t.dir.Reverse() {
- t.state = TCPStateLastAck
- return true
- }
- if tcp.ACK {
- return true
- }
- case TCPStateLastAck:
- if tcp.RST {
- t.state = TCPStateReset
- return true
- }
-
- if tcp.ACK && t.dir == dir {
- t.state = TCPStateClosed
- return true
- }
- }
- return false
-}
diff --git a/vendor/github.com/google/gopacket/reassembly/tcpcheck_test.go b/vendor/github.com/google/gopacket/reassembly/tcpcheck_test.go
deleted file mode 100644
index 4c2391d..0000000
--- a/vendor/github.com/google/gopacket/reassembly/tcpcheck_test.go
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package reassembly
-
-import (
- "testing"
- "time"
-
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
-)
-
-// netFlow declared in tcpassembly_test
-
-/*
- * FSM tests
- */
-
-type testCheckFSMSequence struct {
- tcp layers.TCP
- ci gopacket.CaptureInfo
- expected bool
-}
-
-func testCheckFSM(t *testing.T, options TCPSimpleFSMOptions, s []testCheckFSMSequence) {
- fsm := NewTCPSimpleFSM(options)
- port := layers.TCPPort(0)
- for i, test := range s {
- // Fake some values according to ports
- flow := netFlow
- dir := TCPDirClientToServer
- if port == 0 {
- port = test.tcp.SrcPort
- }
- if port != test.tcp.SrcPort {
- dir = dir.Reverse()
- flow = flow.Reverse()
- }
- res := fsm.CheckState(&test.tcp, dir)
- if res != test.expected {
- t.Fatalf("#%d: packet rejected (%s): got %s, expected %s. State:%s", i, gopacket.LayerDump(&test.tcp), res, test.expected, fsm.String())
- }
- }
-}
-
-func TestCheckFSM(t *testing.T) {
- testCheckFSM(t, TCPSimpleFSMOptions{}, []testCheckFSMSequence{
- {
- tcp: layers.TCP{
- SYN: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511116,
- Ack: 0,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 566690000),
- },
- expected: true,
- },
- {
- tcp: layers.TCP{
- SYN: true,
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787765,
- Ack: 374511117,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590332000),
- },
- expected: true,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590346000),
- },
- expected: true,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590387000),
- },
- expected: true,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787766,
- Ack: 374511150,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 613687000),
- },
- expected: true,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 3465787766,
- Ack: 374511150,
- BaseLayer: layers.BaseLayer{Payload: []byte{8, 133, 104, 196, 132, 0, 0, 1, 0, 2, 0, 7, 0, 19, 2, 85, 83, 0, 0, 6, 0, 1, 2, 117, 115, 0, 0, 6, 0, 1, 0, 0, 3, 132, 0, 54, 1, 97, 5, 99, 99, 116, 108, 100, 192, 20, 10, 104, 111, 115, 116, 109, 97, 115, 116, 101, 114, 7, 110, 101, 117, 115, 116, 97, 114, 3, 98, 105, 122, 0, 120, 18, 40, 205, 0, 0, 3, 132, 0, 0, 3, 132, 0, 9, 58, 128, 0, 1, 81, 128, 192, 20, 0, 46, 0, 1, 0, 0, 3, 132, 0, 150, 0, 6, 5, 1, 0, 0, 3, 132, 85, 138, 90, 146, 85, 98, 191, 130, 27, 78, 2, 117, 115, 0, 69, 13, 35, 189, 141, 225, 107, 238, 108, 182, 207, 44, 105, 31, 212, 103, 32, 93, 217, 108, 20, 231, 188, 28, 241, 237, 104, 182, 117, 121, 195, 112, 64, 96, 237, 248, 6, 181, 186, 96, 60, 6, 18, 29, 188, 96, 201, 140, 251, 61, 71, 177, 108, 156, 9, 83, 125, 172, 188, 75, 81, 67, 218, 55, 93, 131, 243, 15, 190, 75, 4, 165, 226, 124, 49, 67, 142, 131, 239, 240, 76, 225, 10, 242, 68, 88, 240, 200, 27, 97, 102, 73, 92, 73, 133, 170, 175, 198, 99, 109, 90, 16, 162, 101, 95, 96, 102, 250, 91, 74, 80, 3, 87, 167, 50, 230, 9, 213, 7, 222, 197, 87, 183, 190, 148, 247, 207, 204, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 10, 1, 102, 5, 99, 99, 116, 108, 100, 192, 12, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 97, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 98, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 99, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 101, 193, 8, 192, 118, 0, 2, 0, 1, 0, 7, 233, 0, 0, 4, 1, 107, 193, 8, 192, 118, 0, 46, 0, 1, 0, 7, 233, 0, 0, 150, 0, 2, 5, 1, 0, 7, 233, 0, 85, 127, 33, 92, 85, 87, 134, 98, 27, 78, 2, 117, 115, 0, 19, 227, 175, 75, 88, 245, 164, 158, 150, 198, 57, 253, 150, 179, 161, 52, 24, 56, 229, 176, 175, 40, 45, 232, 188, 171, 131, 197, 107, 125, 218, 192, 78, 221, 146, 33, 114, 55, 43, 12, 131, 213, 51, 98, 37, 2, 102, 161, 232, 115, 177, 210, 51, 169, 215, 133, 56, 190, 91, 75, 8, 222, 231, 202, 139, 28, 187, 249, 72, 21, 23, 56, 63, 72, 126, 142, 242, 195, 242, 64, 208, 134, 100, 157, 197, 159, 43, 148, 20, 70, 117, 152, 159, 35, 200, 220, 49, 234, 173, 210, 91, 34, 210, 192, 7, 197, 112, 117, 208, 234, 42, 49, 133, 237, 197, 14, 244, 149, 191, 142, 36, 252, 42, 48, 182, 189, 9, 68, 1, 65, 5, 67, 67, 84, 76, 68, 193, 126, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 124, 70, 1, 66, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 125, 70, 194, 26, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 209, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 126, 1, 67, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 127, 70, 1, 69, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 126, 70, 1, 70, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 209, 173, 58, 70, 194, 108, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 0, 54, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 1, 75, 194, 4, 0, 1, 0, 1, 0, 0, 28, 32, 0, 4, 156, 154, 128, 70, 194, 154, 0, 28, 0, 1, 0, 0, 28, 32, 0, 16, 32, 1, 5, 3, 226, 57, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 194, 2, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 230, 49, 85, 73, 83, 2, 27, 78, 2, 117, 115, 0, 82, 36, 11, 141, 74, 85, 70, 98, 179, 63, 173, 83, 8, 70, 155, 41, 102, 166, 140, 62, 71, 178, 130, 38, 171, 200, 180, 68, 2, 215, 45, 6, 43, 59, 171, 146, 223, 215, 9, 77, 5, 104, 167, 42, 237, 170, 30, 114, 205, 129, 59, 225, 152, 224, 79, 1, 65, 68, 208, 153, 121, 237, 199, 87, 2, 251, 100, 105, 59, 24, 73, 226, 169, 121, 250, 91, 41, 124, 14, 23, 135, 52, 2, 86, 72, 224, 100, 135, 70, 216, 16, 107, 84, 59, 13, 168, 58, 187, 54, 98, 230, 167, 246, 42, 46, 156, 206, 238, 120, 199, 25, 144, 98, 249, 70, 162, 34, 43, 145, 114, 186, 233, 47, 42, 75, 95, 152, 235, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 160, 95, 100, 37, 167, 82, 93, 165, 126, 247, 147, 173, 238, 154, 206, 174, 96, 175, 209, 7, 8, 169, 171, 223, 29, 201, 161, 177, 98, 54, 94, 62, 70, 127, 142, 109, 206, 42, 179, 109, 156, 160, 156, 20, 59, 24, 147, 164, 13, 121, 192, 84, 157, 26, 56, 177, 151, 210, 7, 197, 229, 110, 60, 58, 224, 42, 77, 5, 59, 80, 216, 221, 248, 19, 66, 102, 74, 199, 238, 120, 231, 201, 187, 29, 11, 46, 195, 164, 8, 221, 128, 25, 205, 42, 247, 152, 112, 176, 14, 117, 150, 223, 245, 32, 212, 107, 4, 245, 27, 126, 224, 216, 0, 89, 106, 238, 185, 206, 44, 56, 204, 175, 7, 139, 233, 228, 127, 175, 194, 26, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 28, 5, 3, 0, 0, 28, 32, 85, 108, 217, 174, 85, 69, 70, 242, 27, 78, 2, 117, 115, 0, 172, 117, 89, 89, 73, 249, 245, 211, 100, 127, 48, 135, 224, 97, 172, 146, 128, 30, 190, 72, 199, 170, 97, 179, 136, 109, 86, 110, 235, 214, 47, 50, 115, 11, 226, 168, 56, 198, 24, 212, 205, 207, 2, 116, 104, 112, 99, 234, 236, 44, 70, 19, 19, 215, 127, 200, 162, 215, 142, 45, 135, 91, 219, 217, 86, 231, 154, 87, 222, 161, 32, 66, 196, 55, 117, 20, 186, 9, 134, 252, 249, 219, 9, 196, 128, 8, 222, 201, 131, 210, 182, 232, 142, 72, 160, 171, 95, 231, 232, 156, 28, 34, 54, 94, 73, 183, 38, 160, 123, 175, 157, 21, 163, 8, 214, 155, 172, 237, 169, 28, 15, 138, 105, 107, 251, 109, 131, 240, 194, 72, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 112, 190, 140, 85, 73, 36, 78, 27, 78, 2, 117, 115, 0, 77, 207, 197, 130, 236, 138, 192, 241, 225, 114, 8, 22, 76, 54, 43, 121, 42, 44, 9, 92, 56, 253, 224, 179, 191, 131, 40, 176, 94, 61, 33, 12, 43, 82, 156, 236, 211, 29, 187, 100, 220, 243, 24, 134, 42, 204, 46, 161, 214, 91, 68, 119, 40, 252, 53, 54, 146, 136, 196, 168, 204, 195, 131, 110, 6, 73, 16, 161, 86, 35, 150, 153, 162, 185, 227, 65, 228, 160, 203, 42, 250, 121, 14, 42, 115, 221, 232, 96, 99, 164, 230, 29, 195, 149, 85, 206, 41, 1, 252, 77, 188, 88, 8, 182, 37, 249, 6, 158, 6, 244, 158, 254, 141, 203, 6, 158, 198, 103, 130, 98, 123, 34, 245, 44, 126, 77, 24, 187, 194, 90, 0, 46, 0, 1, 0, 0, 28, 32, 0, 150, 0, 1, 5, 3, 0, 0, 28, 32, 85, 108, 194, 203, 85, 69, 51, 125, 27, 78, 2, 117, 115, 0, 86, 26, 187, 56, 252, 194, 199, 140, 229, 133, 186, 187, 20, 174, 26, 48, 212, 129, 10, 20, 167, 179, 53, 72, 176, 92, 153, 48, 146, 15, 163, 182, 80, 138, 181, 135, 98, 129, 17, 66, 55, 184, 76, 225, 72, 104, 7, 221, 40, 71, 41, 202, 246, 154, 166, 199, 74, 175, 146, 54, 25, 56, 115, 243}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 621198000),
- },
- expected: true,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511150,
- Ack: 3465789226,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 621220000),
- },
- expected: true,
- },
- })
-}
-
-func TestCheckFSMmissingSYNACK(t *testing.T) {
- testCheckFSM(t, TCPSimpleFSMOptions{}, []testCheckFSMSequence{
- {
- tcp: layers.TCP{
- SYN: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511116,
- Ack: 0,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 566690000),
- },
- expected: true,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590346000),
- },
- expected: false,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 374511117,
- Ack: 3465787766,
- BaseLayer: layers.BaseLayer{Payload: []byte{0, 31, 104, 196, 0, 32, 0, 1, 0, 0, 0, 0, 0, 1, 2, 85, 83, 0, 0, 6, 0, 1, 0, 0, 41, 16, 0, 0, 0, 128, 0, 0, 0}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590387000),
- },
- expected: false,
- },
- })
-}
-
-// Support packets w/o SYN (+SYN+ACK) depending on option
-func TestCheckFSMmissingSYN(t *testing.T) {
- for _, val := range []bool{false, true} {
- testCheckFSM(t, TCPSimpleFSMOptions{SupportMissingEstablishment: val}, []testCheckFSMSequence{
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 54842,
- DstPort: 53,
- Seq: 12,
- Ack: 1012,
- BaseLayer: layers.BaseLayer{Payload: []byte{1}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 566690000),
- },
- expected: val,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 1012,
- Ack: 13,
- BaseLayer: layers.BaseLayer{Payload: []byte{2}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590346000),
- },
- expected: val,
- },
- {
- tcp: layers.TCP{
- ACK: true,
- SrcPort: 53,
- DstPort: 54842,
- Seq: 1013,
- Ack: 13,
- BaseLayer: layers.BaseLayer{Payload: []byte{3}},
- },
- ci: gopacket.CaptureInfo{
- Timestamp: time.Unix(1432538521, 590387000),
- },
- expected: val,
- },
- })
- }
-}
diff --git a/vendor/github.com/google/gopacket/routing/common.go b/vendor/github.com/google/gopacket/routing/common.go
deleted file mode 100644
index a6746d4..0000000
--- a/vendor/github.com/google/gopacket/routing/common.go
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package routing
-
-import (
- "net"
-)
-
-// Router implements simple IPv4/IPv6 routing based on the kernel's routing
-// table. This routing library has very few features and may actually route
-// incorrectly in some cases, but it should work the majority of the time.
-type Router interface {
- // Route returns where to route a packet based on the packet's source
- // and destination IP address.
- //
- // Callers may pass in nil for src, in which case the src is treated as
- // either 0.0.0.0 or ::, depending on whether dst is a v4 or v6 address.
- //
- // It returns the interface on which to send the packet, the gateway IP
- // to send the packet to (if necessary), the preferred src IP to use (if
- // available). If the preferred src address is not given in the routing
- // table, the first IP address of the interface is provided.
- //
- // If an error is encountered, iface, geteway, and
- // preferredSrc will be nil, and err will be set.
- Route(dst net.IP) (iface *net.Interface, gateway, preferredSrc net.IP, err error)
-
- // RouteWithSrc routes based on source information as well as destination
- // information. Either or both of input/src can be nil. If both are, this
- // should behave exactly like Route(dst)
- RouteWithSrc(input net.HardwareAddr, src, dst net.IP) (iface *net.Interface, gateway, preferredSrc net.IP, err error)
-}
diff --git a/vendor/github.com/google/gopacket/routing/other.go b/vendor/github.com/google/gopacket/routing/other.go
deleted file mode 100644
index b53fea9..0000000
--- a/vendor/github.com/google/gopacket/routing/other.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build !linux
-
-// Package routing is currently only supported in Linux, but the build system requires a valid go file for all architectures.
-
-package routing
-
-func New() (Router, error) {
- panic("router only implemented in linux")
-}
diff --git a/vendor/github.com/google/gopacket/routing/routing.go b/vendor/github.com/google/gopacket/routing/routing.go
deleted file mode 100644
index cbbeb6e..0000000
--- a/vendor/github.com/google/gopacket/routing/routing.go
+++ /dev/null
@@ -1,241 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// +build linux
-
-// Package routing provides a very basic but mostly functional implementation of
-// a routing table for IPv4/IPv6 addresses. It uses a routing table pulled from
-// the kernel via netlink to find the correct interface, gateway, and preferred
-// source IP address for packets destined to a particular location.
-//
-// The routing package is meant to be used with applications that are sending
-// raw packet data, which don't have the benefit of having the kernel route
-// packets for them.
-package routing
-
-import (
- "bytes"
- "errors"
- "fmt"
- "net"
- "sort"
- "strings"
- "syscall"
- "unsafe"
-)
-
-// Pulled from http://man7.org/linux/man-pages/man7/rtnetlink.7.html
-// See the section on RTM_NEWROUTE, specifically 'struct rtmsg'.
-type routeInfoInMemory struct {
- Family byte
- DstLen byte
- SrcLen byte
- TOS byte
-
- Table byte
- Protocol byte
- Scope byte
- Type byte
-
- Flags uint32
-}
-
-// rtInfo contains information on a single route.
-type rtInfo struct {
- Src, Dst *net.IPNet
- Gateway, PrefSrc net.IP
- // We currently ignore the InputIface.
- InputIface, OutputIface uint32
- Priority uint32
-}
-
-// routeSlice implements sort.Interface to sort routes by Priority.
-type routeSlice []*rtInfo
-
-func (r routeSlice) Len() int {
- return len(r)
-}
-func (r routeSlice) Less(i, j int) bool {
- return r[i].Priority < r[j].Priority
-}
-func (r routeSlice) Swap(i, j int) {
- r[i], r[j] = r[j], r[i]
-}
-
-type router struct {
- ifaces []net.Interface
- addrs []ipAddrs
- v4, v6 routeSlice
-}
-
-func (r *router) String() string {
- strs := []string{"ROUTER", "--- V4 ---"}
- for _, route := range r.v4 {
- strs = append(strs, fmt.Sprintf("%+v", *route))
- }
- strs = append(strs, "--- V6 ---")
- for _, route := range r.v6 {
- strs = append(strs, fmt.Sprintf("%+v", *route))
- }
- return strings.Join(strs, "\n")
-}
-
-type ipAddrs struct {
- v4, v6 net.IP
-}
-
-func (r *router) Route(dst net.IP) (iface *net.Interface, gateway, preferredSrc net.IP, err error) {
- return r.RouteWithSrc(nil, nil, dst)
-}
-
-func (r *router) RouteWithSrc(input net.HardwareAddr, src, dst net.IP) (iface *net.Interface, gateway, preferredSrc net.IP, err error) {
- var ifaceIndex int
- switch {
- case dst.To4() != nil:
- ifaceIndex, gateway, preferredSrc, err = r.route(r.v4, input, src, dst)
- case dst.To16() != nil:
- ifaceIndex, gateway, preferredSrc, err = r.route(r.v6, input, src, dst)
- default:
- err = errors.New("IP is not valid as IPv4 or IPv6")
- return
- }
-
- // Interfaces are 1-indexed, but we store them in a 0-indexed array.
- ifaceIndex--
-
- iface = &r.ifaces[ifaceIndex]
- if preferredSrc == nil {
- switch {
- case dst.To4() != nil:
- preferredSrc = r.addrs[ifaceIndex].v4
- case dst.To16() != nil:
- preferredSrc = r.addrs[ifaceIndex].v6
- }
- }
- return
-}
-
-func (r *router) route(routes routeSlice, input net.HardwareAddr, src, dst net.IP) (iface int, gateway, preferredSrc net.IP, err error) {
- var inputIndex uint32
- if input != nil {
- for i, iface := range r.ifaces {
- if bytes.Equal(input, iface.HardwareAddr) {
- // Convert from zero- to one-indexed.
- inputIndex = uint32(i + 1)
- break
- }
- }
- }
- for _, rt := range routes {
- if rt.InputIface != 0 && rt.InputIface != inputIndex {
- continue
- }
- if rt.Src != nil && !rt.Src.Contains(src) {
- continue
- }
- if rt.Dst != nil && !rt.Dst.Contains(dst) {
- continue
- }
- return int(rt.OutputIface), rt.Gateway, rt.PrefSrc, nil
- }
- err = fmt.Errorf("no route found for %v", dst)
- return
-}
-
-// New creates a new router object. The router returned by New currently does
-// not update its routes after construction... care should be taken for
-// long-running programs to call New() regularly to take into account any
-// changes to the routing table which have occurred since the last New() call.
-func New() (Router, error) {
- rtr := &router{}
- tab, err := syscall.NetlinkRIB(syscall.RTM_GETROUTE, syscall.AF_UNSPEC)
- if err != nil {
- return nil, err
- }
- msgs, err := syscall.ParseNetlinkMessage(tab)
- if err != nil {
- return nil, err
- }
-loop:
- for _, m := range msgs {
- switch m.Header.Type {
- case syscall.NLMSG_DONE:
- break loop
- case syscall.RTM_NEWROUTE:
- rt := (*routeInfoInMemory)(unsafe.Pointer(&m.Data[0]))
- routeInfo := rtInfo{}
- attrs, err := syscall.ParseNetlinkRouteAttr(&m)
- if err != nil {
- return nil, err
- }
- switch rt.Family {
- case syscall.AF_INET:
- rtr.v4 = append(rtr.v4, &routeInfo)
- case syscall.AF_INET6:
- rtr.v6 = append(rtr.v6, &routeInfo)
- default:
- continue loop
- }
- for _, attr := range attrs {
- switch attr.Attr.Type {
- case syscall.RTA_DST:
- routeInfo.Dst = &net.IPNet{
- IP: net.IP(attr.Value),
- Mask: net.CIDRMask(int(rt.DstLen), len(attr.Value)*8),
- }
- case syscall.RTA_SRC:
- routeInfo.Src = &net.IPNet{
- IP: net.IP(attr.Value),
- Mask: net.CIDRMask(int(rt.SrcLen), len(attr.Value)*8),
- }
- case syscall.RTA_GATEWAY:
- routeInfo.Gateway = net.IP(attr.Value)
- case syscall.RTA_PREFSRC:
- routeInfo.PrefSrc = net.IP(attr.Value)
- case syscall.RTA_IIF:
- routeInfo.InputIface = *(*uint32)(unsafe.Pointer(&attr.Value[0]))
- case syscall.RTA_OIF:
- routeInfo.OutputIface = *(*uint32)(unsafe.Pointer(&attr.Value[0]))
- case syscall.RTA_PRIORITY:
- routeInfo.Priority = *(*uint32)(unsafe.Pointer(&attr.Value[0]))
- }
- }
- }
- }
- sort.Sort(rtr.v4)
- sort.Sort(rtr.v6)
- ifaces, err := net.Interfaces()
- if err != nil {
- return nil, err
- }
- for i, iface := range ifaces {
- if i != iface.Index-1 {
- return nil, fmt.Errorf("out of order iface %d = %v", i, iface)
- }
- rtr.ifaces = append(rtr.ifaces, iface)
- var addrs ipAddrs
- ifaceAddrs, err := iface.Addrs()
- if err != nil {
- return nil, err
- }
- for _, addr := range ifaceAddrs {
- if inet, ok := addr.(*net.IPNet); ok {
- // Go has a nasty habit of giving you IPv4s as ::ffff:1.2.3.4 instead of 1.2.3.4.
- // We want to use mapped v4 addresses as v4 preferred addresses, never as v6
- // preferred addresses.
- if v4 := inet.IP.To4(); v4 != nil {
- if addrs.v4 == nil {
- addrs.v4 = v4
- }
- } else if addrs.v6 == nil {
- addrs.v6 = inet.IP
- }
- }
- }
- rtr.addrs = append(rtr.addrs, addrs)
- }
- return rtr, nil
-}
diff --git a/vendor/github.com/google/gopacket/tcpassembly/assembly.go b/vendor/github.com/google/gopacket/tcpassembly/assembly.go
deleted file mode 100644
index 50f6487..0000000
--- a/vendor/github.com/google/gopacket/tcpassembly/assembly.go
+++ /dev/null
@@ -1,788 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package tcpassembly provides TCP stream re-assembly.
-//
-// The tcpassembly package implements uni-directional TCP reassembly, for use in
-// packet-sniffing applications. The caller reads packets off the wire, then
-// presents them to an Assembler in the form of gopacket layers.TCP packets
-// (github.com/google/gopacket, github.com/google/gopacket/layers).
-//
-// The Assembler uses a user-supplied
-// StreamFactory to create a user-defined Stream interface, then passes packet
-// data in stream order to that object. A concurrency-safe StreamPool keeps
-// track of all current Streams being reassembled, so multiple Assemblers may
-// run at once to assemble packets while taking advantage of multiple cores.
-package tcpassembly
-
-import (
- "flag"
- "fmt"
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
- "log"
- "sync"
- "time"
-)
-
-var memLog = flag.Bool("assembly_memuse_log", false, "If true, the github.com/google/gopacket/tcpassembly library will log information regarding its memory use every once in a while.")
-var debugLog = flag.Bool("assembly_debug_log", false, "If true, the github.com/google/gopacket/tcpassembly library will log verbose debugging information (at least one line per packet)")
-
-const invalidSequence = -1
-const uint32Max = 0xFFFFFFFF
-
-// Sequence is a TCP sequence number. It provides a few convenience functions
-// for handling TCP wrap-around. The sequence should always be in the range
-// [0,0xFFFFFFFF]... its other bits are simply used in wrap-around calculations
-// and should never be set.
-type Sequence int64
-
-// Difference defines an ordering for comparing TCP sequences that's safe for
-// roll-overs. It returns:
-// > 0 : if t comes after s
-// < 0 : if t comes before s
-// 0 : if t == s
-// The number returned is the sequence difference, so 4.Difference(8) will
-// return 4.
-//
-// It handles rollovers by considering any sequence in the first quarter of the
-// uint32 space to be after any sequence in the last quarter of that space, thus
-// wrapping the uint32 space.
-func (s Sequence) Difference(t Sequence) int {
- if s > uint32Max-uint32Max/4 && t < uint32Max/4 {
- t += uint32Max
- } else if t > uint32Max-uint32Max/4 && s < uint32Max/4 {
- s += uint32Max
- }
- return int(t - s)
-}
-
-// Add adds an integer to a sequence and returns the resulting sequence.
-func (s Sequence) Add(t int) Sequence {
- return (s + Sequence(t)) & uint32Max
-}
-
-// Reassembly objects are passed by an Assembler into Streams using the
-// Reassembled call. Callers should not need to create these structs themselves
-// except for testing.
-type Reassembly struct {
- // Bytes is the next set of bytes in the stream. May be empty.
- Bytes []byte
- // Skip is set to non-zero if bytes were skipped between this and the
- // last Reassembly. If this is the first packet in a connection and we
- // didn't see the start, we have no idea how many bytes we skipped, so
- // we set it to -1. Otherwise, it's set to the number of bytes skipped.
- Skip int
- // Start is set if this set of bytes has a TCP SYN accompanying it.
- Start bool
- // End is set if this set of bytes has a TCP FIN or RST accompanying it.
- End bool
- // Seen is the timestamp this set of bytes was pulled off the wire.
- Seen time.Time
-}
-
-const pageBytes = 1900
-
-// page is used to store TCP data we're not ready for yet (out-of-order
-// packets). Unused pages are stored in and returned from a pageCache, which
-// avoids memory allocation. Used pages are stored in a doubly-linked list in
-// a connection.
-type page struct {
- Reassembly
- seq Sequence
- index int
- prev, next *page
- buf [pageBytes]byte
-}
-
-// pageCache is a concurrency-unsafe store of page objects we use to avoid
-// memory allocation as much as we can. It grows but never shrinks.
-type pageCache struct {
- free []*page
- pcSize int
- size, used int
- pages [][]page
- pageRequests int64
-}
-
-const initialAllocSize = 1024
-
-func newPageCache() *pageCache {
- pc := &pageCache{
- free: make([]*page, 0, initialAllocSize),
- pcSize: initialAllocSize,
- }
- pc.grow()
- return pc
-}
-
-// grow exponentially increases the size of our page cache as much as necessary.
-func (c *pageCache) grow() {
- pages := make([]page, c.pcSize)
- c.pages = append(c.pages, pages)
- c.size += c.pcSize
- for i := range pages {
- c.free = append(c.free, &pages[i])
- }
- if *memLog {
- log.Println("PageCache: created", c.pcSize, "new pages")
- }
- c.pcSize *= 2
-}
-
-// next returns a clean, ready-to-use page object.
-func (c *pageCache) next(ts time.Time) (p *page) {
- if *memLog {
- c.pageRequests++
- if c.pageRequests&0xFFFF == 0 {
- log.Println("PageCache:", c.pageRequests, "requested,", c.used, "used,", len(c.free), "free")
- }
- }
- if len(c.free) == 0 {
- c.grow()
- }
- i := len(c.free) - 1
- p, c.free = c.free[i], c.free[:i]
- p.prev = nil
- p.next = nil
- p.Seen = ts
- p.Bytes = p.buf[:0]
- c.used++
- return p
-}
-
-// replace replaces a page into the pageCache.
-func (c *pageCache) replace(p *page) {
- c.used--
- c.free = append(c.free, p)
-}
-
-// Stream is implemented by the caller to handle incoming reassembled
-// TCP data. Callers create a StreamFactory, then StreamPool uses
-// it to create a new Stream for every TCP stream.
-//
-// assembly will, in order:
-// 1) Create the stream via StreamFactory.New
-// 2) Call Reassembled 0 or more times, passing in reassembled TCP data in order
-// 3) Call ReassemblyComplete one time, after which the stream is dereferenced by assembly.
-type Stream interface {
- // Reassembled is called zero or more times. assembly guarantees
- // that the set of all Reassembly objects passed in during all
- // calls are presented in the order they appear in the TCP stream.
- // Reassembly objects are reused after each Reassembled call,
- // so it's important to copy anything you need out of them
- // (specifically out of Reassembly.Bytes) that you need to stay
- // around after you return from the Reassembled call.
- Reassembled([]Reassembly)
- // ReassemblyComplete is called when assembly decides there is
- // no more data for this Stream, either because a FIN or RST packet
- // was seen, or because the stream has timed out without any new
- // packet data (due to a call to FlushOlderThan).
- ReassemblyComplete()
-}
-
-// StreamFactory is used by assembly to create a new stream for each
-// new TCP session.
-type StreamFactory interface {
- // New should return a new stream for the given TCP key.
- New(netFlow, tcpFlow gopacket.Flow) Stream
-}
-
-func (p *StreamPool) connections() []*connection {
- p.mu.RLock()
- conns := make([]*connection, 0, len(p.conns))
- for _, conn := range p.conns {
- conns = append(conns, conn)
- }
- p.mu.RUnlock()
- return conns
-}
-
-// FlushOptions provide options for flushing connections.
-type FlushOptions struct {
- T time.Time // If nonzero, only connections with data older than T are flushed
- CloseAll bool // If true, ALL connections are closed post flush, not just those that correctly see FIN/RST.
-}
-
-// FlushWithOptions finds any streams waiting for packets older than
-// the given time, and pushes through the data they have (IE: tells
-// them to stop waiting and skip the data they're waiting for).
-//
-// Each Stream maintains a list of zero or more sets of bytes it has received
-// out-of-order. For example, if it has processed up through sequence number
-// 10, it might have bytes [15-20), [20-25), [30,50) in its list. Each set of
-// bytes also has the timestamp it was originally viewed. A flush call will
-// look at the smallest subsequent set of bytes, in this case [15-20), and if
-// its timestamp is older than the passed-in time, it will push it and all
-// contiguous byte-sets out to the Stream's Reassembled function. In this case,
-// it will push [15-20), but also [20-25), since that's contiguous. It will
-// only push [30-50) if its timestamp is also older than the passed-in time,
-// otherwise it will wait until the next FlushOlderThan to see if bytes [25-30)
-// come in.
-//
-// If it pushes all bytes (or there were no sets of bytes to begin with)
-// AND the connection has not received any bytes since the passed-in time,
-// the connection will be closed.
-//
-// If CloseAll is set, it will close out connections that have been drained.
-// Regardless of the CloseAll setting, connections stale for the specified
-// time will be closed.
-//
-// Returns the number of connections flushed, and of those, the number closed
-// because of the flush.
-func (a *Assembler) FlushWithOptions(opt FlushOptions) (flushed, closed int) {
- conns := a.connPool.connections()
- closes := 0
- flushes := 0
- for _, conn := range conns {
- flushed := false
- conn.mu.Lock()
- if conn.closed {
- // Already closed connection, nothing to do here.
- conn.mu.Unlock()
- continue
- }
- for conn.first != nil && conn.first.Seen.Before(opt.T) {
- a.skipFlush(conn)
- flushed = true
- if conn.closed {
- closes++
- break
- }
- }
- if opt.CloseAll && !conn.closed && conn.first == nil && conn.lastSeen.Before(opt.T) {
- flushed = true
- a.closeConnection(conn)
- closes++
- }
- if flushed {
- flushes++
- }
- conn.mu.Unlock()
- }
- return flushes, closes
-}
-
-// FlushOlderThan calls FlushWithOptions with the CloseAll option set to true.
-func (a *Assembler) FlushOlderThan(t time.Time) (flushed, closed int) {
- return a.FlushWithOptions(FlushOptions{CloseAll: true, T: t})
-}
-
-// FlushAll flushes all remaining data into all remaining connections, closing
-// those connections. It returns the total number of connections flushed/closed
-// by the call.
-func (a *Assembler) FlushAll() (closed int) {
- conns := a.connPool.connections()
- closed = len(conns)
- for _, conn := range conns {
- conn.mu.Lock()
- for !conn.closed {
- a.skipFlush(conn)
- }
- conn.mu.Unlock()
- }
- return
-}
-
-type key [2]gopacket.Flow
-
-func (k *key) String() string {
- return fmt.Sprintf("%s:%s", k[0], k[1])
-}
-
-// StreamPool stores all streams created by Assemblers, allowing multiple
-// assemblers to work together on stream processing while enforcing the fact
-// that a single stream receives its data serially. It is safe
-// for concurrency, usable by multiple Assemblers at once.
-//
-// StreamPool handles the creation and storage of Stream objects used by one or
-// more Assembler objects. When a new TCP stream is found by an Assembler, it
-// creates an associated Stream by calling its StreamFactory's New method.
-// Thereafter (until the stream is closed), that Stream object will receive
-// assembled TCP data via Assembler's calls to the stream's Reassembled
-// function.
-//
-// Like the Assembler, StreamPool attempts to minimize allocation. Unlike the
-// Assembler, though, it does have to do some locking to make sure that the
-// connection objects it stores are accessible to multiple Assemblers.
-type StreamPool struct {
- conns map[key]*connection
- users int
- mu sync.RWMutex
- factory StreamFactory
- free []*connection
- all [][]connection
- nextAlloc int
- newConnectionCount int64
-}
-
-func (p *StreamPool) grow() {
- conns := make([]connection, p.nextAlloc)
- p.all = append(p.all, conns)
- for i := range conns {
- p.free = append(p.free, &conns[i])
- }
- if *memLog {
- log.Println("StreamPool: created", p.nextAlloc, "new connections")
- }
- p.nextAlloc *= 2
-}
-
-// NewStreamPool creates a new connection pool. Streams will
-// be created as necessary using the passed-in StreamFactory.
-func NewStreamPool(factory StreamFactory) *StreamPool {
- return &StreamPool{
- conns: make(map[key]*connection, initialAllocSize),
- free: make([]*connection, 0, initialAllocSize),
- factory: factory,
- nextAlloc: initialAllocSize,
- }
-}
-
-const assemblerReturnValueInitialSize = 16
-
-// NewAssembler creates a new assembler. Pass in the StreamPool
-// to use, may be shared across assemblers.
-//
-// This sets some sane defaults for the assembler options,
-// see DefaultAssemblerOptions for details.
-func NewAssembler(pool *StreamPool) *Assembler {
- pool.mu.Lock()
- pool.users++
- pool.mu.Unlock()
- return &Assembler{
- ret: make([]Reassembly, assemblerReturnValueInitialSize),
- pc: newPageCache(),
- connPool: pool,
- AssemblerOptions: DefaultAssemblerOptions,
- }
-}
-
-// DefaultAssemblerOptions provides default options for an assembler.
-// These options are used by default when calling NewAssembler, so if
-// modified before a NewAssembler call they'll affect the resulting Assembler.
-//
-// Note that the default options can result in ever-increasing memory usage
-// unless one of the Flush* methods is called on a regular basis.
-var DefaultAssemblerOptions = AssemblerOptions{
- MaxBufferedPagesPerConnection: 0, // unlimited
- MaxBufferedPagesTotal: 0, // unlimited
-}
-
-type connection struct {
- key key
- pages int
- first, last *page
- nextSeq Sequence
- created, lastSeen time.Time
- stream Stream
- closed bool
- mu sync.Mutex
-}
-
-func (c *connection) reset(k key, s Stream, ts time.Time) {
- c.key = k
- c.pages = 0
- c.first, c.last = nil, nil
- c.nextSeq = invalidSequence
- c.created = ts
- c.stream = s
- c.closed = false
-}
-
-// AssemblerOptions controls the behavior of each assembler. Modify the
-// options of each assembler you create to change their behavior.
-type AssemblerOptions struct {
- // MaxBufferedPagesTotal is an upper limit on the total number of pages to
- // buffer while waiting for out-of-order packets. Once this limit is
- // reached, the assembler will degrade to flushing every connection it
- // gets a packet for. If <= 0, this is ignored.
- MaxBufferedPagesTotal int
- // MaxBufferedPagesPerConnection is an upper limit on the number of pages
- // buffered for a single connection. Should this limit be reached for a
- // particular connection, the smallest sequence number will be flushed, along
- // with any contiguous data. If <= 0, this is ignored.
- MaxBufferedPagesPerConnection int
-}
-
-// Assembler handles reassembling TCP streams. It is not safe for
-// concurrency... after passing a packet in via the Assemble call, the caller
-// must wait for that call to return before calling Assemble again. Callers can
-// get around this by creating multiple assemblers that share a StreamPool. In
-// that case, each individual stream will still be handled serially (each stream
-// has an individual mutex associated with it), however multiple assemblers can
-// assemble different connections concurrently.
-//
-// The Assembler provides (hopefully) fast TCP stream re-assembly for sniffing
-// applications written in Go. The Assembler uses the following methods to be
-// as fast as possible, to keep packet processing speedy:
-//
-// Avoids Lock Contention
-//
-// Assemblers locks connections, but each connection has an individual lock, and
-// rarely will two Assemblers be looking at the same connection. Assemblers
-// lock the StreamPool when looking up connections, but they use Reader
-// locks initially, and only force a write lock if they need to create a new
-// connection or close one down. These happen much less frequently than
-// individual packet handling.
-//
-// Each assembler runs in its own goroutine, and the only state shared between
-// goroutines is through the StreamPool. Thus all internal Assembler state
-// can be handled without any locking.
-//
-// NOTE: If you can guarantee that packets going to a set of Assemblers will
-// contain information on different connections per Assembler (for example,
-// they're already hashed by PF_RING hashing or some other hashing mechanism),
-// then we recommend you use a seperate StreamPool per Assembler, thus
-// avoiding all lock contention. Only when different Assemblers could receive
-// packets for the same Stream should a StreamPool be shared between them.
-//
-// Avoids Memory Copying
-//
-// In the common case, handling of a single TCP packet should result in zero
-// memory allocations. The Assembler will look up the connection, figure out
-// that the packet has arrived in order, and immediately pass that packet on to
-// the appropriate connection's handling code. Only if a packet arrives out of
-// order is its contents copied and stored in memory for later.
-//
-// Avoids Memory Allocation
-//
-// Assemblers try very hard to not use memory allocation unless absolutely
-// necessary. Packet data for sequential packets is passed directly to streams
-// with no copying or allocation. Packet data for out-of-order packets is
-// copied into reusable pages, and new pages are only allocated rarely when the
-// page cache runs out. Page caches are Assembler-specific, thus not used
-// concurrently and requiring no locking.
-//
-// Internal representations for connection objects are also reused over time.
-// Because of this, the most common memory allocation done by the Assembler is
-// generally what's done by the caller in StreamFactory.New. If no allocation
-// is done there, then very little allocation is done ever, mostly to handle
-// large increases in bandwidth or numbers of connections.
-//
-// TODO: The page caches used by an Assembler will grow to the size necessary
-// to handle a workload, and currently will never shrink. This means that
-// traffic spikes can result in large memory usage which isn't garbage
-// collected when typical traffic levels return.
-type Assembler struct {
- AssemblerOptions
- ret []Reassembly
- pc *pageCache
- connPool *StreamPool
-}
-
-func (p *StreamPool) newConnection(k key, s Stream, ts time.Time) (c *connection) {
- if *memLog {
- p.newConnectionCount++
- if p.newConnectionCount&0x7FFF == 0 {
- log.Println("StreamPool:", p.newConnectionCount, "requests,", len(p.conns), "used,", len(p.free), "free")
- }
- }
- if len(p.free) == 0 {
- p.grow()
- }
- index := len(p.free) - 1
- c, p.free = p.free[index], p.free[:index]
- c.reset(k, s, ts)
- return c
-}
-
-// getConnection returns a connection. If end is true and a connection
-// does not already exist, returns nil. This allows us to check for a
-// connection without actually creating one if it doesn't already exist.
-func (p *StreamPool) getConnection(k key, end bool, ts time.Time) *connection {
- p.mu.RLock()
- conn := p.conns[k]
- p.mu.RUnlock()
- if end || conn != nil {
- return conn
- }
- s := p.factory.New(k[0], k[1])
- p.mu.Lock()
- conn = p.newConnection(k, s, ts)
- if conn2 := p.conns[k]; conn2 != nil {
- p.mu.Unlock()
- return conn2
- }
- p.conns[k] = conn
- p.mu.Unlock()
- return conn
-}
-
-// Assemble calls AssembleWithTimestamp with the current timestamp, useful for
-// packets being read directly off the wire.
-func (a *Assembler) Assemble(netFlow gopacket.Flow, t *layers.TCP) {
- a.AssembleWithTimestamp(netFlow, t, time.Now())
-}
-
-// AssembleWithTimestamp reassembles the given TCP packet into its appropriate
-// stream.
-//
-// The timestamp passed in must be the timestamp the packet was seen.
-// For packets read off the wire, time.Now() should be fine. For packets read
-// from PCAP files, CaptureInfo.Timestamp should be passed in. This timestamp
-// will affect which streams are flushed by a call to FlushOlderThan.
-//
-// Each Assemble call results in, in order:
-//
-// zero or one calls to StreamFactory.New, creating a stream
-// zero or one calls to Reassembled on a single stream
-// zero or one calls to ReassemblyComplete on the same stream
-func (a *Assembler) AssembleWithTimestamp(netFlow gopacket.Flow, t *layers.TCP, timestamp time.Time) {
- // Ignore empty TCP packets
- if !t.SYN && !t.FIN && !t.RST && len(t.LayerPayload()) == 0 {
- if *debugLog {
- log.Println("ignoring useless packet")
- }
- return
- }
-
- a.ret = a.ret[:0]
- key := key{netFlow, t.TransportFlow()}
- var conn *connection
- // This for loop handles a race condition where a connection will close, lock
- // the connection pool, and remove itself, but before it locked the connection
- // pool it's returned to another Assemble statement. This should loop 0-1
- // times for the VAST majority of cases.
- for {
- conn = a.connPool.getConnection(
- key, !t.SYN && len(t.LayerPayload()) == 0, timestamp)
- if conn == nil {
- if *debugLog {
- log.Printf("%v got empty packet on otherwise empty connection", key)
- }
- return
- }
- conn.mu.Lock()
- if !conn.closed {
- break
- }
- conn.mu.Unlock()
- }
- if conn.lastSeen.Before(timestamp) {
- conn.lastSeen = timestamp
- }
- seq, bytes := Sequence(t.Seq), t.Payload
- if conn.nextSeq == invalidSequence {
- if t.SYN {
- if *debugLog {
- log.Printf("%v saw first SYN packet, returning immediately, seq=%v", key, seq)
- }
- a.ret = append(a.ret, Reassembly{
- Bytes: bytes,
- Skip: 0,
- Start: true,
- Seen: timestamp,
- })
- conn.nextSeq = seq.Add(len(bytes) + 1)
- } else {
- if *debugLog {
- log.Printf("%v waiting for start, storing into connection", key)
- }
- a.insertIntoConn(t, conn, timestamp)
- }
- } else if diff := conn.nextSeq.Difference(seq); diff > 0 {
- if *debugLog {
- log.Printf("%v gap in sequence numbers (%v, %v) diff %v, storing into connection", key, conn.nextSeq, seq, diff)
- }
- a.insertIntoConn(t, conn, timestamp)
- } else {
- bytes, conn.nextSeq = byteSpan(conn.nextSeq, seq, bytes)
- if *debugLog {
- log.Printf("%v found contiguous data (%v, %v), returning immediately", key, seq, conn.nextSeq)
- }
- a.ret = append(a.ret, Reassembly{
- Bytes: bytes,
- Skip: 0,
- End: t.RST || t.FIN,
- Seen: timestamp,
- })
- }
- if len(a.ret) > 0 {
- a.sendToConnection(conn)
- }
- conn.mu.Unlock()
-}
-
-func byteSpan(expected, received Sequence, bytes []byte) (toSend []byte, next Sequence) {
- if expected == invalidSequence {
- return bytes, received.Add(len(bytes))
- }
- span := int(received.Difference(expected))
- if span <= 0 {
- return bytes, received.Add(len(bytes))
- } else if len(bytes) < span {
- return nil, expected
- }
- return bytes[span:], expected.Add(len(bytes) - span)
-}
-
-// sendToConnection sends the current values in a.ret to the connection, closing
-// the connection if the last thing sent had End set.
-func (a *Assembler) sendToConnection(conn *connection) {
- a.addContiguous(conn)
- if conn.stream == nil {
- panic("why?")
- }
- conn.stream.Reassembled(a.ret)
- if a.ret[len(a.ret)-1].End {
- a.closeConnection(conn)
- }
-}
-
-// addContiguous adds contiguous byte-sets to a connection.
-func (a *Assembler) addContiguous(conn *connection) {
- for conn.first != nil && conn.nextSeq.Difference(conn.first.seq) <= 0 {
- a.addNextFromConn(conn)
- }
-}
-
-// skipFlush skips the first set of bytes we're waiting for and returns the
-// first set of bytes we have. If we have no bytes pending, it closes the
-// connection.
-func (a *Assembler) skipFlush(conn *connection) {
- if *debugLog {
- log.Printf("%v skipFlush %v", conn.key, conn.nextSeq)
- }
- if conn.first == nil {
- a.closeConnection(conn)
- return
- }
- a.ret = a.ret[:0]
- a.addNextFromConn(conn)
- a.addContiguous(conn)
- a.sendToConnection(conn)
-}
-
-func (p *StreamPool) remove(conn *connection) {
- p.mu.Lock()
- delete(p.conns, conn.key)
- p.free = append(p.free, conn)
- p.mu.Unlock()
-}
-
-func (a *Assembler) closeConnection(conn *connection) {
- if *debugLog {
- log.Printf("%v closing", conn.key)
- }
- conn.stream.ReassemblyComplete()
- conn.closed = true
- a.connPool.remove(conn)
- for p := conn.first; p != nil; p = p.next {
- a.pc.replace(p)
- }
-}
-
-// traverseConn traverses our doubly-linked list of pages for the correct
-// position to put the given sequence number. Note that it traverses backwards,
-// starting at the highest sequence number and going down, since we assume the
-// common case is that TCP packets for a stream will appear in-order, with
-// minimal loss or packet reordering.
-func (c *connection) traverseConn(seq Sequence) (prev, current *page) {
- prev = c.last
- for prev != nil && prev.seq.Difference(seq) < 0 {
- current = prev
- prev = current.prev
- }
- return
-}
-
-// pushBetween inserts the doubly-linked list first-...-last in between the
-// nodes prev-next in another doubly-linked list. If prev is nil, makes first
-// the new first page in the connection's list. If next is nil, makes last the
-// new last page in the list. first/last may point to the same page.
-func (c *connection) pushBetween(prev, next, first, last *page) {
- // Maintain our doubly linked list
- if next == nil || c.last == nil {
- c.last = last
- } else {
- last.next = next
- next.prev = last
- }
- if prev == nil || c.first == nil {
- c.first = first
- } else {
- first.prev = prev
- prev.next = first
- }
-}
-
-func (a *Assembler) insertIntoConn(t *layers.TCP, conn *connection, ts time.Time) {
- if conn.first != nil && conn.first.seq == conn.nextSeq {
- panic("wtf")
- }
- p, p2, numPages := a.pagesFromTCP(t, ts)
- prev, current := conn.traverseConn(Sequence(t.Seq))
- conn.pushBetween(prev, current, p, p2)
- conn.pages += numPages
- if (a.MaxBufferedPagesPerConnection > 0 && conn.pages >= a.MaxBufferedPagesPerConnection) ||
- (a.MaxBufferedPagesTotal > 0 && a.pc.used >= a.MaxBufferedPagesTotal) {
- if *debugLog {
- log.Printf("%v hit max buffer size: %+v, %v, %v", conn.key, a.AssemblerOptions, conn.pages, a.pc.used)
- }
- a.addNextFromConn(conn)
- }
-}
-
-// pagesFromTCP creates a page (or set of pages) from a TCP packet. Note that
-// it should NEVER receive a SYN packet, as it doesn't handle sequences
-// correctly.
-//
-// It returns the first and last page in its doubly-linked list of new pages.
-func (a *Assembler) pagesFromTCP(t *layers.TCP, ts time.Time) (p, p2 *page, numPages int) {
- first := a.pc.next(ts)
- current := first
- numPages++
- seq, bytes := Sequence(t.Seq), t.Payload
- for {
- length := min(len(bytes), pageBytes)
- current.Bytes = current.buf[:length]
- copy(current.Bytes, bytes)
- current.seq = seq
- bytes = bytes[length:]
- if len(bytes) == 0 {
- break
- }
- seq = seq.Add(length)
- current.next = a.pc.next(ts)
- current.next.prev = current
- current = current.next
- numPages++
- }
- current.End = t.RST || t.FIN
- return first, current, numPages
-}
-
-// addNextFromConn pops the first page from a connection off and adds it to the
-// return array.
-func (a *Assembler) addNextFromConn(conn *connection) {
- if conn.nextSeq == invalidSequence {
- conn.first.Skip = -1
- } else if diff := conn.nextSeq.Difference(conn.first.seq); diff > 0 {
- conn.first.Skip = int(diff)
- }
- conn.first.Bytes, conn.nextSeq = byteSpan(conn.nextSeq, conn.first.seq, conn.first.Bytes)
- if *debugLog {
- log.Printf("%v adding from conn (%v, %v)", conn.key, conn.first.seq, conn.nextSeq)
- }
- a.ret = append(a.ret, conn.first.Reassembly)
- a.pc.replace(conn.first)
- if conn.first == conn.last {
- conn.first = nil
- conn.last = nil
- } else {
- conn.first = conn.first.next
- conn.first.prev = nil
- }
- conn.pages--
-}
-
-func min(a, b int) int {
- if a < b {
- return a
- }
- return b
-}
diff --git a/vendor/github.com/google/gopacket/tcpassembly/assembly_test.go b/vendor/github.com/google/gopacket/tcpassembly/assembly_test.go
deleted file mode 100644
index 1bd2842..0000000
--- a/vendor/github.com/google/gopacket/tcpassembly/assembly_test.go
+++ /dev/null
@@ -1,562 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package tcpassembly
-
-import (
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
- "net"
- "reflect"
- "testing"
- "time"
-)
-
-var netFlow gopacket.Flow
-
-func init() {
- netFlow, _ = gopacket.FlowFromEndpoints(
- layers.NewIPEndpoint(net.IP{1, 2, 3, 4}),
- layers.NewIPEndpoint(net.IP{5, 6, 7, 8}))
-}
-
-type testSequence struct {
- in layers.TCP
- want []Reassembly
-}
-
-type testFactory struct {
- reassembly []Reassembly
-}
-
-func (t *testFactory) New(a, b gopacket.Flow) Stream {
- return t
-}
-func (t *testFactory) Reassembled(r []Reassembly) {
- t.reassembly = r
- for i := 0; i < len(r); i++ {
- t.reassembly[i].Seen = time.Time{}
- }
-}
-func (t *testFactory) ReassemblyComplete() {
-}
-
-func test(t *testing.T, s []testSequence) {
- fact := &testFactory{}
- p := NewStreamPool(fact)
- a := NewAssembler(p)
- a.MaxBufferedPagesPerConnection = 4
- for i, test := range s {
- fact.reassembly = []Reassembly{}
- a.Assemble(netFlow, &test.in)
- if !reflect.DeepEqual(fact.reassembly, test.want) {
- t.Fatalf("test %v:\nwant: %v\n got: %v\n", i, test.want, fact.reassembly)
- }
- }
-}
-
-func TestReorder(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1001,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1004,
- BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{4, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Skip: -1,
- Bytes: []byte{1, 2, 3},
- },
- Reassembly{
- Bytes: []byte{2, 2, 3},
- },
- Reassembly{
- Bytes: []byte{3, 2, 3},
- },
- Reassembly{
- Bytes: []byte{4, 2, 3},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1016,
- BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1019,
- BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1013,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{1, 2, 3},
- },
- Reassembly{
- Bytes: []byte{2, 2, 3},
- },
- Reassembly{
- Bytes: []byte{3, 2, 3},
- },
- },
- },
- })
-}
-
-func TestMaxPerSkip(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1000,
- SYN: true,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{4, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1013,
- BaseLayer: layers.BaseLayer{Payload: []byte{5, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1016,
- BaseLayer: layers.BaseLayer{Payload: []byte{6, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Skip: 3,
- Bytes: []byte{3, 2, 3},
- },
- Reassembly{
- Bytes: []byte{4, 2, 3},
- },
- Reassembly{
- Bytes: []byte{5, 2, 3},
- },
- Reassembly{
- Bytes: []byte{6, 2, 3},
- },
- },
- },
- })
-}
-
-func TestReorderFast(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{3, 2, 3}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1004,
- BaseLayer: layers.BaseLayer{Payload: []byte{2, 2, 3}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{2, 2, 3},
- },
- Reassembly{
- Bytes: []byte{3, 2, 3},
- },
- },
- },
- })
-}
-
-func TestOverlap(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{1, 2, 3, 4, 5},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{0, 1, 2, 3, 4, 5, 6, 7}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{6, 7},
- },
- },
- },
- })
-}
-
-func TestBufferedOverlap(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1007,
- BaseLayer: layers.BaseLayer{Payload: []byte{7, 8, 9, 0, 1, 2, 3, 4, 5}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1010,
- BaseLayer: layers.BaseLayer{Payload: []byte{0, 1, 2, 3, 4, 5, 6, 7}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- Reassembly{
- Bytes: []byte{1, 2, 3, 4, 5},
- },
- Reassembly{
- Bytes: []byte{6, 7},
- },
- },
- },
- })
-}
-
-func TestOverrun1(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 0xFFFFFFFF,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- },
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 10,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4}},
- },
- want: []Reassembly{
- Reassembly{
- Bytes: []byte{1, 2, 3, 4},
- },
- },
- },
- })
-}
-
-func TestOverrun2(t *testing.T) {
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 10,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4}},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 0xFFFFFFFF,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
- },
- Reassembly{
- Bytes: []byte{1, 2, 3, 4},
- },
- },
- },
- })
-}
-
-func TestCacheLargePacket(t *testing.T) {
- data := make([]byte, pageBytes*3)
- test(t, []testSequence{
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1001,
- BaseLayer: layers.BaseLayer{Payload: data},
- },
- want: []Reassembly{},
- },
- {
- in: layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 1000,
- SYN: true,
- BaseLayer: layers.BaseLayer{Payload: []byte{}},
- },
- want: []Reassembly{
- Reassembly{
- Start: true,
- Bytes: []byte{},
- },
- Reassembly{
- Bytes: data[:pageBytes],
- },
- Reassembly{
- Bytes: data[pageBytes : pageBytes*2],
- },
- Reassembly{
- Bytes: data[pageBytes*2 : pageBytes*3],
- },
- },
- },
- })
-}
-
-func BenchmarkSingleStream(b *testing.B) {
- t := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactory{}))
- for i := 0; i < b.N; i++ {
- a.Assemble(netFlow, &t)
- if t.SYN {
- t.SYN = false
- t.Seq++
- }
- t.Seq += 10
- }
-}
-
-func BenchmarkSingleStreamSkips(b *testing.B) {
- t := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactory{}))
- skipped := false
- for i := 0; i < b.N; i++ {
- if i%10 == 9 {
- t.Seq += 10
- skipped = true
- } else if skipped {
- t.Seq -= 20
- }
- a.Assemble(netFlow, &t)
- if t.SYN {
- t.SYN = false
- t.Seq++
- }
- t.Seq += 10
- if skipped {
- t.Seq += 10
- skipped = false
- }
- }
-}
-
-func BenchmarkSingleStreamLoss(b *testing.B) {
- t := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- SYN: true,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactory{}))
- for i := 0; i < b.N; i++ {
- a.Assemble(netFlow, &t)
- t.SYN = false
- t.Seq += 11
- }
-}
-
-func BenchmarkMultiStreamGrow(b *testing.B) {
- t := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 0,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactory{}))
- for i := 0; i < b.N; i++ {
- t.SrcPort = layers.TCPPort(i)
- a.Assemble(netFlow, &t)
- t.Seq += 10
- }
-}
-
-func BenchmarkMultiStreamConn(b *testing.B) {
- t := layers.TCP{
- SrcPort: 1,
- DstPort: 2,
- Seq: 0,
- SYN: true,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}},
- }
- a := NewAssembler(NewStreamPool(&testFactory{}))
- for i := 0; i < b.N; i++ {
- t.SrcPort = layers.TCPPort(i)
- a.Assemble(netFlow, &t)
- if i%65536 == 65535 {
- if t.SYN {
- t.SYN = false
- t.Seq++
- }
- t.Seq += 10
- }
- }
-}
diff --git a/vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader.go b/vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader.go
deleted file mode 100644
index 092b811..0000000
--- a/vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader.go
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-// Package tcpreader provides an implementation for tcpassembly.Stream which presents
-// the caller with an io.Reader for easy processing.
-//
-// The assembly package handles packet data reordering, but its output is
-// library-specific, thus not usable by the majority of external Go libraries.
-// The io.Reader interface, on the other hand, is used throughout much of Go
-// code as an easy mechanism for reading in data streams and decoding them. For
-// example, the net/http package provides the ReadRequest function, which can
-// parase an HTTP request from a live data stream, just what we'd want when
-// sniffing HTTP traffic. Using ReaderStream, this is relatively easy to set
-// up:
-//
-// // Create our StreamFactory
-// type httpStreamFactory struct {}
-// func (f *httpStreamFactory) New(a, b gopacket.Flow) {
-// r := tcpreader.NewReaderStream(false)
-// go printRequests(r)
-// return &r
-// }
-// func printRequests(r io.Reader) {
-// // Convert to bufio, since that's what ReadRequest wants.
-// buf := bufio.NewReader(r)
-// for {
-// if req, err := http.ReadRequest(buf); err == io.EOF {
-// return
-// } else if err != nil {
-// log.Println("Error parsing HTTP requests:", err)
-// } else {
-// fmt.Println("HTTP REQUEST:", req)
-// fmt.Println("Body contains", tcpreader.DiscardBytesToEOF(req.Body), "bytes")
-// }
-// }
-// }
-//
-// Using just this code, we're able to reference a powerful, built-in library
-// for HTTP request parsing to do all the dirty-work of parsing requests from
-// the wire in real-time. Pass this stream factory to an tcpassembly.StreamPool,
-// start up an tcpassembly.Assembler, and you're good to go!
-package tcpreader
-
-import (
- "errors"
- "github.com/google/gopacket/tcpassembly"
- "io"
-)
-
-var discardBuffer = make([]byte, 4096)
-
-// DiscardBytesToFirstError will read in all bytes up to the first error
-// reported by the given reader, then return the number of bytes discarded
-// and the error encountered.
-func DiscardBytesToFirstError(r io.Reader) (discarded int, err error) {
- for {
- n, e := r.Read(discardBuffer)
- discarded += n
- if e != nil {
- return discarded, e
- }
- }
-}
-
-// DiscardBytesToEOF will read in all bytes from a Reader until it
-// encounters an io.EOF, then return the number of bytes. Be careful
-// of this... if used on a Reader that returns a non-io.EOF error
-// consistently, this will loop forever discarding that error while
-// it waits for an EOF.
-func DiscardBytesToEOF(r io.Reader) (discarded int) {
- for {
- n, e := DiscardBytesToFirstError(r)
- discarded += n
- if e == io.EOF {
- return
- }
- }
-}
-
-// ReaderStream implements both tcpassembly.Stream and io.Reader. You can use it
-// as a building block to make simple, easy stream handlers.
-//
-// IMPORTANT: If you use a ReaderStream, you MUST read ALL BYTES from it,
-// quickly. Not reading available bytes will block TCP stream reassembly. It's
-// a common pattern to do this by starting a goroutine in the factory's New
-// method:
-//
-// type myStreamHandler struct {
-// r ReaderStream
-// }
-// func (m *myStreamHandler) run() {
-// // Do something here that reads all of the ReaderStream, or your assembly
-// // will block.
-// fmt.Println(tcpreader.DiscardBytesToEOF(&m.r))
-// }
-// func (f *myStreamFactory) New(a, b gopacket.Flow) tcpassembly.Stream {
-// s := &myStreamHandler{}
-// go s.run()
-// // Return the ReaderStream as the stream that assembly should populate.
-// return &s.r
-// }
-type ReaderStream struct {
- ReaderStreamOptions
- reassembled chan []tcpassembly.Reassembly
- done chan bool
- current []tcpassembly.Reassembly
- closed bool
- lossReported bool
- first bool
- initiated bool
-}
-
-// ReaderStreamOptions provides user-resettable options for a ReaderStream.
-type ReaderStreamOptions struct {
- // LossErrors determines whether this stream will return
- // ReaderStreamDataLoss errors from its Read function whenever it
- // determines data has been lost.
- LossErrors bool
-}
-
-// NewReaderStream returns a new ReaderStream object.
-func NewReaderStream() ReaderStream {
- r := ReaderStream{
- reassembled: make(chan []tcpassembly.Reassembly),
- done: make(chan bool),
- first: true,
- initiated: true,
- }
- return r
-}
-
-// Reassembled implements tcpassembly.Stream's Reassembled function.
-func (r *ReaderStream) Reassembled(reassembly []tcpassembly.Reassembly) {
- if !r.initiated {
- panic("ReaderStream not created via NewReaderStream")
- }
- r.reassembled <- reassembly
- <-r.done
-}
-
-// ReassemblyComplete implements tcpassembly.Stream's ReassemblyComplete function.
-func (r *ReaderStream) ReassemblyComplete() {
- close(r.reassembled)
- close(r.done)
-}
-
-// stripEmpty strips empty reassembly slices off the front of its current set of
-// slices.
-func (r *ReaderStream) stripEmpty() {
- for len(r.current) > 0 && len(r.current[0].Bytes) == 0 {
- r.current = r.current[1:]
- r.lossReported = false
- }
-}
-
-// DataLost is returned by the ReaderStream's Read function when it encounters
-// a Reassembly with Skip != 0.
-var DataLost = errors.New("lost data")
-
-// Read implements io.Reader's Read function.
-// Given a byte slice, it will either copy a non-zero number of bytes into
-// that slice and return the number of bytes and a nil error, or it will
-// leave slice p as is and return 0, io.EOF.
-func (r *ReaderStream) Read(p []byte) (int, error) {
- if !r.initiated {
- panic("ReaderStream not created via NewReaderStream")
- }
- var ok bool
- r.stripEmpty()
- for !r.closed && len(r.current) == 0 {
- if r.first {
- r.first = false
- } else {
- r.done <- true
- }
- if r.current, ok = <-r.reassembled; ok {
- r.stripEmpty()
- } else {
- r.closed = true
- }
- }
- if len(r.current) > 0 {
- current := &r.current[0]
- if r.LossErrors && !r.lossReported && current.Skip != 0 {
- r.lossReported = true
- return 0, DataLost
- }
- length := copy(p, current.Bytes)
- current.Bytes = current.Bytes[length:]
- return length, nil
- }
- return 0, io.EOF
-}
-
-// Close implements io.Closer's Close function, making ReaderStream a
-// io.ReadCloser. It discards all remaining bytes in the reassembly in a
-// manner that's safe for the assembler (IE: it doesn't block).
-func (r *ReaderStream) Close() error {
- r.current = nil
- r.closed = true
- for {
- if _, ok := <-r.reassembled; !ok {
- return nil
- }
- r.done <- true
- }
-}
diff --git a/vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader_test.go b/vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader_test.go
deleted file mode 100644
index 7da9fd9..0000000
--- a/vendor/github.com/google/gopacket/tcpassembly/tcpreader/reader_test.go
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package tcpreader
-
-import (
- "bytes"
- "fmt"
- "github.com/google/gopacket"
- "github.com/google/gopacket/layers"
- "github.com/google/gopacket/tcpassembly"
- "io"
- "net"
- "testing"
-)
-
-var netFlow gopacket.Flow
-
-func init() {
- netFlow, _ = gopacket.FlowFromEndpoints(
- layers.NewIPEndpoint(net.IP{1, 2, 3, 4}),
- layers.NewIPEndpoint(net.IP{5, 6, 7, 8}))
-}
-
-type readReturn struct {
- data []byte
- err error
-}
-type readSequence struct {
- in []layers.TCP
- want []readReturn
-}
-type testReaderFactory struct {
- lossErrors bool
- readSize int
- ReaderStream
- output chan []byte
-}
-
-func (t *testReaderFactory) New(a, b gopacket.Flow) tcpassembly.Stream {
- return &t.ReaderStream
-}
-
-func testReadSequence(t *testing.T, lossErrors bool, readSize int, seq readSequence) {
- f := &testReaderFactory{ReaderStream: NewReaderStream()}
- f.ReaderStream.LossErrors = lossErrors
- p := tcpassembly.NewStreamPool(f)
- a := tcpassembly.NewAssembler(p)
- buf := make([]byte, readSize)
- go func() {
- for i, test := range seq.in {
- fmt.Println("Assembling", i)
- a.Assemble(netFlow, &test)
- fmt.Println("Assembly done")
- }
- }()
- for i, test := range seq.want {
- fmt.Println("Waiting for read", i)
- n, err := f.Read(buf[:])
- fmt.Println("Got read")
- if n != len(test.data) {
- t.Errorf("test %d want %d bytes, got %d bytes", i, len(test.data), n)
- } else if err != test.err {
- t.Errorf("test %d want err %v, got err %v", i, test.err, err)
- } else if !bytes.Equal(buf[:n], test.data) {
- t.Errorf("test %d\nwant: %v\n got: %v\n", i, test.data, buf[:n])
- }
- }
- fmt.Println("All done reads")
-}
-
-func TestRead(t *testing.T) {
- testReadSequence(t, false, 10, readSequence{
- in: []layers.TCP{
- {
- SYN: true,
- SrcPort: 1,
- DstPort: 2,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- {
- FIN: true,
- SrcPort: 1,
- DstPort: 2,
- Seq: 1004,
- },
- },
- want: []readReturn{
- {data: []byte{1, 2, 3}},
- {err: io.EOF},
- },
- })
-}
-
-func TestReadSmallChunks(t *testing.T) {
- testReadSequence(t, false, 2, readSequence{
- in: []layers.TCP{
- {
- SYN: true,
- SrcPort: 1,
- DstPort: 2,
- Seq: 1000,
- BaseLayer: layers.BaseLayer{Payload: []byte{1, 2, 3}},
- },
- {
- FIN: true,
- SrcPort: 1,
- DstPort: 2,
- Seq: 1004,
- },
- },
- want: []readReturn{
- {data: []byte{1, 2}},
- {data: []byte{3}},
- {err: io.EOF},
- },
- })
-}
-
-func ExampleDiscardBytesToEOF() {
- b := bytes.NewBuffer([]byte{1, 2, 3, 4, 5})
- fmt.Println(DiscardBytesToEOF(b))
- // Output:
- // 5
-}
diff --git a/vendor/github.com/google/gopacket/writer_test.go b/vendor/github.com/google/gopacket/writer_test.go
deleted file mode 100644
index e19069b..0000000
--- a/vendor/github.com/google/gopacket/writer_test.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2012 Google, Inc. All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree.
-
-package gopacket
-
-import (
- "fmt"
- "testing"
-)
-
-func TestExponentialSizeIncreasePrepend(t *testing.T) {
- var b serializeBuffer
- for i, test := range []struct {
- prepend, size int
- }{
- {2, 2},
- {2, 4},
- {2, 8},
- {2, 8},
- {2, 16},
- {2, 16},
- {2, 16},
- {2, 16},
- {2, 32},
- } {
- b.PrependBytes(test.prepend)
- if test.size != cap(b.data) {
- t.Error(i, "size want", test.size, "got", cap(b.data))
- }
- }
- b.Clear()
- if b.start != 32 {
- t.Error(b.start)
- }
-}
-
-func TestExponentialSizeIncreaseAppend(t *testing.T) {
- var b serializeBuffer
- for i, test := range []struct {
- appnd, size int
- }{
- {2, 2},
- {2, 4},
- {2, 8},
- {2, 8},
- {2, 16},
- {2, 16},
- {2, 16},
- {2, 16},
- {2, 32},
- } {
- b.AppendBytes(test.appnd)
- if test.size != cap(b.data) {
- t.Error(i, "size want", test.size, "got", cap(b.data))
- }
- }
- b.Clear()
- if b.start != 0 {
- t.Error(b.start)
- }
-}
-
-func ExampleSerializeBuffer() {
- b := NewSerializeBuffer()
- fmt.Println("1:", b.Bytes())
- bytes, _ := b.PrependBytes(3)
- copy(bytes, []byte{1, 2, 3})
- fmt.Println("2:", b.Bytes())
- bytes, _ = b.AppendBytes(2)
- copy(bytes, []byte{4, 5})
- fmt.Println("3:", b.Bytes())
- bytes, _ = b.PrependBytes(1)
- copy(bytes, []byte{0})
- fmt.Println("4:", b.Bytes())
- bytes, _ = b.AppendBytes(3)
- copy(bytes, []byte{6, 7, 8})
- fmt.Println("5:", b.Bytes())
- b.Clear()
- fmt.Println("6:", b.Bytes())
- bytes, _ = b.PrependBytes(2)
- copy(bytes, []byte{9, 9})
- fmt.Println("7:", b.Bytes())
- // Output:
- // 1: []
- // 2: [1 2 3]
- // 3: [1 2 3 4 5]
- // 4: [0 1 2 3 4 5]
- // 5: [0 1 2 3 4 5 6 7 8]
- // 6: []
- // 7: [9 9]
-}
diff --git a/vendor/github.com/lunixbochs/struc/bench_test.go b/vendor/github.com/lunixbochs/struc/bench_test.go
deleted file mode 100644
index d73c110..0000000
--- a/vendor/github.com/lunixbochs/struc/bench_test.go
+++ /dev/null
@@ -1,165 +0,0 @@
-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/custom_float16_test.go b/vendor/github.com/lunixbochs/struc/custom_float16_test.go
deleted file mode 100644
index 11f73cb..0000000
--- a/vendor/github.com/lunixbochs/struc/custom_float16_test.go
+++ /dev/null
@@ -1,56 +0,0 @@
-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
deleted file mode 100644
index e601166..0000000
--- a/vendor/github.com/lunixbochs/struc/custom_test.go
+++ /dev/null
@@ -1,97 +0,0 @@
-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
index 5ab7da6..6e59c2a 100644
--- a/vendor/github.com/lunixbochs/struc/field.go
+++ b/vendor/github.com/lunixbochs/struc/field.go
@@ -222,13 +222,21 @@ func (f *Field) unpackVal(buf []byte, val reflect.Value, length int, options *Op
case Bool, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64:
var n uint64
switch typ {
- case Bool, Int8, Uint8:
+ case Int8:
+ n = uint64(int64(int8(buf[0])))
+ case Int16:
+ n = uint64(int64(int16(order.Uint16(buf))))
+ case Int32:
+ n = uint64(int64(int32(order.Uint32(buf))))
+ case Int64:
+ n = uint64(int64(order.Uint64(buf)))
+ case Bool, Uint8:
n = uint64(buf[0])
- case Int16, Uint16:
+ case Uint16:
n = uint64(order.Uint16(buf))
- case Int32, Uint32:
+ case Uint32:
n = uint64(order.Uint32(buf))
- case Int64, Uint64:
+ case Uint64:
n = uint64(order.Uint64(buf))
}
switch f.kind {
diff --git a/vendor/github.com/lunixbochs/struc/field_test.go b/vendor/github.com/lunixbochs/struc/field_test.go
deleted file mode 100644
index 45a07b2..0000000
--- a/vendor/github.com/lunixbochs/struc/field_test.go
+++ /dev/null
@@ -1,77 +0,0 @@
-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_test.go b/vendor/github.com/lunixbochs/struc/fields_test.go
deleted file mode 100644
index 850e377..0000000
--- a/vendor/github.com/lunixbochs/struc/fields_test.go
+++ /dev/null
@@ -1,59 +0,0 @@
-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/packable_test.go b/vendor/github.com/lunixbochs/struc/packable_test.go
deleted file mode 100644
index ec2bed9..0000000
--- a/vendor/github.com/lunixbochs/struc/packable_test.go
+++ /dev/null
@@ -1,123 +0,0 @@
-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/parse.go b/vendor/github.com/lunixbochs/struc/parse.go
index 060f43d..43c5875 100644
--- a/vendor/github.com/lunixbochs/struc/parse.go
+++ b/vendor/github.com/lunixbochs/struc/parse.go
@@ -11,13 +11,14 @@ import (
"sync"
)
-// struc:"int32,big,sizeof=Data"
+// struc:"int32,big,sizeof=Data,skip,sizefrom=Len"
type strucTag struct {
- Type string
- Order binary.ByteOrder
- Sizeof string
- Skip bool
+ Type string
+ Order binary.ByteOrder
+ Sizeof string
+ Skip bool
+ Sizefrom string
}
func parseStrucTag(tag reflect.StructTag) *strucTag {
@@ -35,6 +36,9 @@ func parseStrucTag(tag reflect.StructTag) *strucTag {
if strings.HasPrefix(s, "sizeof=") {
tmp := strings.SplitN(s, "=", 2)
t.Sizeof = tmp[1]
+ } else if strings.HasPrefix(s, "sizefrom=") {
+ tmp := strings.SplitN(s, "=", 2)
+ t.Sizefrom = tmp[1]
} else if s == "big" {
t.Order = binary.BigEndian
} else if s == "little" {
@@ -150,6 +154,13 @@ func parseFieldsLocked(v reflect.Value) (Fields, error) {
if sizefrom, ok := sizeofMap[field.Name]; ok {
f.Sizefrom = sizefrom
}
+ if tag.Sizefrom != "" {
+ source, ok := t.FieldByName(tag.Sizefrom)
+ if !ok {
+ return nil, fmt.Errorf("struc: `sizefrom=%s` field does not exist", tag.Sizefrom)
+ }
+ f.Sizefrom = source.Index
+ }
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)
}
diff --git a/vendor/github.com/lunixbochs/struc/parse_test.go b/vendor/github.com/lunixbochs/struc/parse_test.go
deleted file mode 100644
index 861fdd1..0000000
--- a/vendor/github.com/lunixbochs/struc/parse_test.go
+++ /dev/null
@@ -1,62 +0,0 @@
-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_test.go b/vendor/github.com/lunixbochs/struc/struc_test.go
deleted file mode 100644
index 4b50707..0000000
--- a/vendor/github.com/lunixbochs/struc/struc_test.go
+++ /dev/null
@@ -1,200 +0,0 @@
-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]
-
- Skip int `struc:"skip"`
-
- 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}},
- 0,
- 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_test.go b/vendor/github.com/lunixbochs/struc/types_test.go
deleted file mode 100644
index 3b33e8f..0000000
--- a/vendor/github.com/lunixbochs/struc/types_test.go
+++ /dev/null
@@ -1,53 +0,0 @@
-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/format/format_suite_test.go b/vendor/github.com/onsi/gomega/format/format_suite_test.go
deleted file mode 100644
index 8e65a95..0000000
--- a/vendor/github.com/onsi/gomega/format/format_suite_test.go
+++ /dev/null
@@ -1,13 +0,0 @@
-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
deleted file mode 100644
index a1a9031..0000000
--- a/vendor/github.com/onsi/gomega/format/format_test.go
+++ /dev/null
@@ -1,590 +0,0 @@
-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
deleted file mode 100644
index 8775b86..0000000
--- a/vendor/github.com/onsi/gomega/gbytes/buffer.go
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
-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
deleted file mode 100644
index b111138..0000000
--- a/vendor/github.com/onsi/gomega/gbytes/buffer_test.go
+++ /dev/null
@@ -1,158 +0,0 @@
-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
deleted file mode 100644
index 3a7dc06..0000000
--- a/vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go
+++ /dev/null
@@ -1,13 +0,0 @@
-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
deleted file mode 100644
index cbc266c..0000000
--- a/vendor/github.com/onsi/gomega/gbytes/say_matcher.go
+++ /dev/null
@@ -1,105 +0,0 @@
-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
deleted file mode 100644
index 63fb3b3..0000000
--- a/vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go
+++ /dev/null
@@ -1,163 +0,0 @@
-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
deleted file mode 100644
index 16091c2..0000000
--- a/vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go
+++ /dev/null
@@ -1,36 +0,0 @@
-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
deleted file mode 100644
index d11b2fd..0000000
--- a/vendor/github.com/onsi/gomega/gexec/build.go
+++ /dev/null
@@ -1,99 +0,0 @@
-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
deleted file mode 100644
index 8df0790..0000000
--- a/vendor/github.com/onsi/gomega/gexec/build_test.go
+++ /dev/null
@@ -1,59 +0,0 @@
-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
deleted file mode 100644
index e6f4329..0000000
--- a/vendor/github.com/onsi/gomega/gexec/exit_matcher.go
+++ /dev/null
@@ -1,88 +0,0 @@
-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
deleted file mode 100644
index 79615dd..0000000
--- a/vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go
+++ /dev/null
@@ -1,113 +0,0 @@
-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
deleted file mode 100644
index 87672aa..0000000
--- a/vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-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
deleted file mode 100644
index 05e695a..0000000
--- a/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go
+++ /dev/null
@@ -1,53 +0,0 @@
-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
deleted file mode 100644
index 8657d0c..0000000
--- a/vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go
+++ /dev/null
@@ -1,43 +0,0 @@
-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
deleted file mode 100644
index 387a72c..0000000
--- a/vendor/github.com/onsi/gomega/gexec/session.go
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
-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
deleted file mode 100644
index b7841a0..0000000
--- a/vendor/github.com/onsi/gomega/gexec/session_test.go
+++ /dev/null
@@ -1,351 +0,0 @@
-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
deleted file mode 100644
index 63ff691..0000000
--- a/vendor/github.com/onsi/gomega/ghttp/handlers.go
+++ /dev/null
@@ -1,313 +0,0 @@
-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
deleted file mode 100644
index b2972bc..0000000
--- a/vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index c55a484..0000000
--- a/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// 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
deleted file mode 100644
index 35b7145..0000000
--- a/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto
+++ /dev/null
@@ -1,9 +0,0 @@
-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
deleted file mode 100644
index 40d92de..0000000
--- a/vendor/github.com/onsi/gomega/ghttp/test_server.go
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
-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
deleted file mode 100644
index 7c12360..0000000
--- a/vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go
+++ /dev/null
@@ -1,13 +0,0 @@
-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
deleted file mode 100644
index 88b3246..0000000
--- a/vendor/github.com/onsi/gomega/ghttp/test_server_test.go
+++ /dev/null
@@ -1,1089 +0,0 @@
-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/gstruct/elements.go b/vendor/github.com/onsi/gomega/gstruct/elements.go
deleted file mode 100644
index a315fa1..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/elements.go
+++ /dev/null
@@ -1,145 +0,0 @@
-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
deleted file mode 100644
index 8ba78cb..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/elements_test.go
+++ /dev/null
@@ -1,144 +0,0 @@
-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
deleted file mode 100644
index 188492b..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go
+++ /dev/null
@@ -1,72 +0,0 @@
-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
deleted file mode 100644
index f3c1575..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/fields.go
+++ /dev/null
@@ -1,141 +0,0 @@
-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
deleted file mode 100644
index 61f4afc..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/fields_test.go
+++ /dev/null
@@ -1,76 +0,0 @@
-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
deleted file mode 100644
index d475663..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go
+++ /dev/null
@@ -1,13 +0,0 @@
-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
deleted file mode 100644
index 0365f32..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/ignore.go
+++ /dev/null
@@ -1,37 +0,0 @@
-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
deleted file mode 100644
index 70e1d40..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/ignore_test.go
+++ /dev/null
@@ -1,23 +0,0 @@
-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
deleted file mode 100644
index 0a2f35d..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/pointer.go
+++ /dev/null
@@ -1,56 +0,0 @@
-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
deleted file mode 100644
index b02081c..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/pointer_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-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
deleted file mode 100644
index 48cbbe8..0000000
--- a/vendor/github.com/onsi/gomega/gstruct/types.go
+++ /dev/null
@@ -1,15 +0,0 @@
-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_suite_test.go b/vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go
deleted file mode 100644
index dae47a4..0000000
--- a/vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go
+++ /dev/null
@@ -1,13 +0,0 @@
-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
deleted file mode 100644
index c03b7a3..0000000
--- a/vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go
+++ /dev/null
@@ -1,252 +0,0 @@
-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_suite_test.go b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go
deleted file mode 100644
index bdb0c3d..0000000
--- a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go
+++ /dev/null
@@ -1,13 +0,0 @@
-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
deleted file mode 100644
index 3d7e348..0000000
--- a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go
+++ /dev/null
@@ -1,345 +0,0 @@
-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
deleted file mode 100644
index 6e351a7..0000000
--- a/vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go
+++ /dev/null
@@ -1,23 +0,0 @@
-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/testingtsupport/testing_t_support_test.go b/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go
deleted file mode 100644
index b9fbd6c..0000000
--- a/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go
+++ /dev/null
@@ -1,12 +0,0 @@
-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/and_test.go b/vendor/github.com/onsi/gomega/matchers/and_test.go
deleted file mode 100644
index acf778c..0000000
--- a/vendor/github.com/onsi/gomega/matchers/and_test.go
+++ /dev/null
@@ -1,103 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go
deleted file mode 100644
index d2280e0..0000000
--- a/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go
+++ /dev/null
@@ -1,30 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go
deleted file mode 100644
index e59d769..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go
deleted file mode 100644
index 951e750..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go
deleted file mode 100644
index 775f7b6..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go
deleted file mode 100644
index b2c40c9..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go
+++ /dev/null
@@ -1,70 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go
deleted file mode 100644
index 541c1b9..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go
+++ /dev/null
@@ -1,52 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go
deleted file mode 100644
index def5104..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go
+++ /dev/null
@@ -1,50 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go
deleted file mode 100644
index 3965a2c..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go
+++ /dev/null
@@ -1,20 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go
deleted file mode 100644
index 8b90a1a..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go
+++ /dev/null
@@ -1,61 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go
deleted file mode 100644
index 7533253..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go
+++ /dev/null
@@ -1,28 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go
deleted file mode 100644
index 43fdb1f..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go
+++ /dev/null
@@ -1,148 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go
deleted file mode 100644
index 205d71f..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go
+++ /dev/null
@@ -1,106 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go
deleted file mode 100644
index feb33e5..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go
+++ /dev/null
@@ -1,98 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go
deleted file mode 100644
index ca32e56..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go
+++ /dev/null
@@ -1,20 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go
deleted file mode 100644
index 8ec3643..0000000
--- a/vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go
+++ /dev/null
@@ -1,30 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/consist_of_test.go
deleted file mode 100644
index dcd1afe..0000000
--- a/vendor/github.com/onsi/gomega/matchers/consist_of_test.go
+++ /dev/null
@@ -1,75 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go
deleted file mode 100644
index 38ee518..0000000
--- a/vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go
+++ /dev/null
@@ -1,76 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go
deleted file mode 100644
index 6935168..0000000
--- a/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go
+++ /dev/null
@@ -1,36 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go
deleted file mode 100644
index 2add0b7..0000000
--- a/vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go
+++ /dev/null
@@ -1,78 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go
deleted file mode 100644
index a92a177..0000000
--- a/vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go
+++ /dev/null
@@ -1,50 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go
deleted file mode 100644
index c663e30..0000000
--- a/vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go
+++ /dev/null
@@ -1,73 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go
deleted file mode 100644
index 06a2242..0000000
--- a/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go
+++ /dev/null
@@ -1,82 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go
deleted file mode 100644
index 1e6aa69..0000000
--- a/vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go
+++ /dev/null
@@ -1,53 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go
deleted file mode 100644
index 009e23e..0000000
--- a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go
+++ /dev/null
@@ -1,58 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go
deleted file mode 100644
index bec3f97..0000000
--- a/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go
+++ /dev/null
@@ -1,36 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go
deleted file mode 100644
index 72e8975..0000000
--- a/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go
+++ /dev/null
@@ -1,36 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go
deleted file mode 100644
index 338b512..0000000
--- a/vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go
+++ /dev/null
@@ -1,93 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go
deleted file mode 100644
index 755c4ad..0000000
--- a/vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go
+++ /dev/null
@@ -1,73 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go
deleted file mode 100644
index bb521cc..0000000
--- a/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go
+++ /dev/null
@@ -1,44 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go
deleted file mode 100644
index 8e63de1..0000000
--- a/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go
+++ /dev/null
@@ -1,94 +0,0 @@
-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
deleted file mode 100644
index 01b11b9..0000000
--- a/vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go
+++ /dev/null
@@ -1,30 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/not_test.go
deleted file mode 100644
index b3c1fdb..0000000
--- a/vendor/github.com/onsi/gomega/matchers/not_test.go
+++ /dev/null
@@ -1,57 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/or_test.go
deleted file mode 100644
index 9589a17..0000000
--- a/vendor/github.com/onsi/gomega/matchers/or_test.go
+++ /dev/null
@@ -1,85 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go
deleted file mode 100644
index 6b859a7..0000000
--- a/vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go
+++ /dev/null
@@ -1,45 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go
deleted file mode 100644
index 938c078..0000000
--- a/vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go
+++ /dev/null
@@ -1,280 +0,0 @@
-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_test.go b/vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go
deleted file mode 100644
index 6b62c8b..0000000
--- a/vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go
+++ /dev/null
@@ -1,62 +0,0 @@
-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
deleted file mode 100644
index 8edd817..0000000
--- a/vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-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/with_transform_test.go b/vendor/github.com/onsi/gomega/matchers/with_transform_test.go
deleted file mode 100644
index e52bf8e..0000000
--- a/vendor/github.com/onsi/gomega/matchers/with_transform_test.go
+++ /dev/null
@@ -1,102 +0,0 @@
-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/pkg/profile/example_test.go b/vendor/github.com/pkg/profile/example_test.go
deleted file mode 100644
index 98a54b5..0000000
--- a/vendor/github.com/pkg/profile/example_test.go
+++ /dev/null
@@ -1,58 +0,0 @@
-package profile_test
-
-import (
- "flag"
- "os"
-
- "github.com/pkg/profile"
-)
-
-func ExampleStart() {
- // start a simple CPU profile and register
- // a defer to Stop (flush) the profiling data.
- defer profile.Start().Stop()
-}
-
-func ExampleCPUProfile() {
- // CPU profiling is the default profiling mode, but you can specify it
- // explicitly for completeness.
- defer profile.Start(profile.CPUProfile).Stop()
-}
-
-func ExampleMemProfile() {
- // use memory profiling, rather than the default cpu profiling.
- defer profile.Start(profile.MemProfile).Stop()
-}
-
-func ExampleMemProfileRate() {
- // use memory profiling with custom rate.
- defer profile.Start(profile.MemProfileRate(2048)).Stop()
-}
-
-func ExampleProfilePath() {
- // set the location that the profile will be written to
- defer profile.Start(profile.ProfilePath(os.Getenv("HOME"))).Stop()
-}
-
-func ExampleNoShutdownHook() {
- // disable the automatic shutdown hook.
- defer profile.Start(profile.NoShutdownHook).Stop()
-}
-
-func ExampleStart_withFlags() {
- // use the flags package to selectively enable profiling.
- mode := flag.String("profile.mode", "", "enable profiling mode, one of [cpu, mem, mutex, block]")
- flag.Parse()
- switch *mode {
- case "cpu":
- defer profile.Start(profile.CPUProfile).Stop()
- case "mem":
- defer profile.Start(profile.MemProfile).Stop()
- case "mutex":
- defer profile.Start(profile.MutexProfile).Stop()
- case "block":
- defer profile.Start(profile.BlockProfile).Stop()
- default:
- // do nothing
- }
-}
diff --git a/vendor/github.com/pkg/profile/profile_test.go b/vendor/github.com/pkg/profile/profile_test.go
deleted file mode 100644
index e33012c..0000000
--- a/vendor/github.com/pkg/profile/profile_test.go
+++ /dev/null
@@ -1,330 +0,0 @@
-package profile
-
-import (
- "bufio"
- "bytes"
- "io"
- "io/ioutil"
- "os"
- "os/exec"
- "path/filepath"
- "strings"
- "testing"
-)
-
-type checkFn func(t *testing.T, stdout, stderr []byte, err error)
-
-func TestProfile(t *testing.T) {
- f, err := ioutil.TempFile("", "profile_test")
- if err != nil {
- t.Fatal(err)
- }
- defer os.Remove(f.Name())
-
- var profileTests = []struct {
- name string
- code string
- checks []checkFn
- }{{
- name: "default profile (cpu)",
- code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
- defer profile.Start().Stop()
-}
-`,
- checks: []checkFn{
- NoStdout,
- Stderr("profile: cpu profiling enabled"),
- NoErr,
- },
- }, {
- name: "memory profile",
- code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
- defer profile.Start(profile.MemProfile).Stop()
-}
-`,
- checks: []checkFn{
- NoStdout,
- Stderr("profile: memory profiling enabled"),
- NoErr,
- },
- }, {
- name: "memory profile (rate 2048)",
- code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
- defer profile.Start(profile.MemProfileRate(2048)).Stop()
-}
-`,
- checks: []checkFn{
- NoStdout,
- Stderr("profile: memory profiling enabled (rate 2048)"),
- NoErr,
- },
- }, {
- name: "double start",
- code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
- profile.Start()
- profile.Start()
-}
-`,
- checks: []checkFn{
- NoStdout,
- Stderr("cpu profiling enabled", "profile: Start() already called"),
- Err,
- },
- }, {
- name: "block profile",
- code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
- defer profile.Start(profile.BlockProfile).Stop()
-}
-`,
- checks: []checkFn{
- NoStdout,
- Stderr("profile: block profiling enabled"),
- NoErr,
- },
- }, {
- name: "mutex profile",
- code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
- defer profile.Start(profile.MutexProfile).Stop()
-}
-`,
- checks: []checkFn{
- NoStdout,
- Stderr("profile: mutex profiling enabled"),
- NoErr,
- },
- }, {
- name: "profile path",
- code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
- defer profile.Start(profile.ProfilePath(".")).Stop()
-}
-`,
- checks: []checkFn{
- NoStdout,
- Stderr("profile: cpu profiling enabled, cpu.pprof"),
- NoErr,
- },
- }, {
- name: "profile path error",
- code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
- defer profile.Start(profile.ProfilePath("` + f.Name() + `")).Stop()
-}
-`,
- checks: []checkFn{
- NoStdout,
- Stderr("could not create initial output"),
- Err,
- },
- }, {
- name: "multiple profile sessions",
- code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
- profile.Start(profile.CPUProfile).Stop()
- profile.Start(profile.MemProfile).Stop()
- profile.Start(profile.BlockProfile).Stop()
- profile.Start(profile.CPUProfile).Stop()
- profile.Start(profile.MutexProfile).Stop()
-}
-`,
- checks: []checkFn{
- NoStdout,
- Stderr("profile: cpu profiling enabled",
- "profile: cpu profiling disabled",
- "profile: memory profiling enabled",
- "profile: memory profiling disabled",
- "profile: block profiling enabled",
- "profile: block profiling disabled",
- "profile: cpu profiling enabled",
- "profile: cpu profiling disabled",
- "profile: mutex profiling enabled",
- "profile: mutex profiling disabled"),
- NoErr,
- },
- }, {
- name: "profile quiet",
- code: `
-package main
-
-import "github.com/pkg/profile"
-
-func main() {
- defer profile.Start(profile.Quiet).Stop()
-}
-`,
- checks: []checkFn{NoStdout, NoStderr, NoErr},
- }}
- for _, tt := range profileTests {
- t.Log(tt.name)
- stdout, stderr, err := runTest(t, tt.code)
- for _, f := range tt.checks {
- f(t, stdout, stderr, err)
- }
- }
-}
-
-// NoStdout checks that stdout was blank.
-func NoStdout(t *testing.T, stdout, _ []byte, _ error) {
- if len := len(stdout); len > 0 {
- t.Errorf("stdout: wanted 0 bytes, got %d", len)
- }
-}
-
-// Stderr verifies that the given lines match the output from stderr
-func Stderr(lines ...string) checkFn {
- return func(t *testing.T, _, stderr []byte, _ error) {
- r := bytes.NewReader(stderr)
- if !validateOutput(r, lines) {
- t.Errorf("stderr: wanted '%s', got '%s'", lines, stderr)
- }
- }
-}
-
-// NoStderr checks that stderr was blank.
-func NoStderr(t *testing.T, _, stderr []byte, _ error) {
- if len := len(stderr); len > 0 {
- t.Errorf("stderr: wanted 0 bytes, got %d", len)
- }
-}
-
-// Err checks that there was an error returned
-func Err(t *testing.T, _, _ []byte, err error) {
- if err == nil {
- t.Errorf("expected error")
- }
-}
-
-// NoErr checks that err was nil
-func NoErr(t *testing.T, _, _ []byte, err error) {
- if err != nil {
- t.Errorf("error: expected nil, got %v", err)
- }
-}
-
-// validatedOutput validates the given slice of lines against data from the given reader.
-func validateOutput(r io.Reader, want []string) bool {
- s := bufio.NewScanner(r)
- for _, line := range want {
- if !s.Scan() || !strings.Contains(s.Text(), line) {
- return false
- }
- }
- return true
-}
-
-var validateOutputTests = []struct {
- input string
- lines []string
- want bool
-}{{
- input: "",
- want: true,
-}, {
- input: `profile: yes
-`,
- want: true,
-}, {
- input: `profile: yes
-`,
- lines: []string{"profile: yes"},
- want: true,
-}, {
- input: `profile: yes
-profile: no
-`,
- lines: []string{"profile: yes"},
- want: true,
-}, {
- input: `profile: yes
-profile: no
-`,
- lines: []string{"profile: yes", "profile: no"},
- want: true,
-}, {
- input: `profile: yes
-profile: no
-`,
- lines: []string{"profile: no"},
- want: false,
-}}
-
-func TestValidateOutput(t *testing.T) {
- for _, tt := range validateOutputTests {
- r := strings.NewReader(tt.input)
- got := validateOutput(r, tt.lines)
- if tt.want != got {
- t.Errorf("validateOutput(%q, %q), want %v, got %v", tt.input, tt.lines, tt.want, got)
- }
- }
-}
-
-// runTest executes the go program supplied and returns the contents of stdout,
-// stderr, and an error which may contain status information about the result
-// of the program.
-func runTest(t *testing.T, code string) ([]byte, []byte, error) {
- chk := func(err error) {
- if err != nil {
- t.Fatal(err)
- }
- }
- gopath, err := ioutil.TempDir("", "profile-gopath")
- chk(err)
- defer os.RemoveAll(gopath)
-
- srcdir := filepath.Join(gopath, "src")
- err = os.Mkdir(srcdir, 0755)
- chk(err)
- src := filepath.Join(srcdir, "main.go")
- err = ioutil.WriteFile(src, []byte(code), 0644)
- chk(err)
-
- cmd := exec.Command("go", "run", src)
-
- var stdout, stderr bytes.Buffer
- cmd.Stdout = &stdout
- cmd.Stderr = &stderr
- err = cmd.Run()
- return stdout.Bytes(), stderr.Bytes(), err
-}
diff --git a/vendor/github.com/pkg/profile/trace_test.go b/vendor/github.com/pkg/profile/trace_test.go
deleted file mode 100644
index 6a61d79..0000000
--- a/vendor/github.com/pkg/profile/trace_test.go
+++ /dev/null
@@ -1,8 +0,0 @@
-package profile_test
-
-import "github.com/pkg/profile"
-
-func ExampleTraceProfile() {
- // use execution tracing, rather than the default cpu profiling.
- defer profile.Start(profile.TraceProfile).Stop()
-}
diff --git a/vendor/github.com/sirupsen/logrus/alt_exit_test.go b/vendor/github.com/sirupsen/logrus/alt_exit_test.go
deleted file mode 100644
index d182963..0000000
--- a/vendor/github.com/sirupsen/logrus/alt_exit_test.go
+++ /dev/null
@@ -1,74 +0,0 @@
-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/entry_test.go b/vendor/github.com/sirupsen/logrus/entry_test.go
deleted file mode 100644
index 99c3b41..0000000
--- a/vendor/github.com/sirupsen/logrus/entry_test.go
+++ /dev/null
@@ -1,77 +0,0 @@
-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
deleted file mode 100644
index 3e112b4..0000000
--- a/vendor/github.com/sirupsen/logrus/examples/basic/basic.go
+++ /dev/null
@@ -1,59 +0,0 @@
-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
deleted file mode 100644
index c8470c3..0000000
--- a/vendor/github.com/sirupsen/logrus/examples/hook/hook.go
+++ /dev/null
@@ -1,30 +0,0 @@
-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/formatter_bench_test.go b/vendor/github.com/sirupsen/logrus/formatter_bench_test.go
deleted file mode 100644
index d948158..0000000
--- a/vendor/github.com/sirupsen/logrus/formatter_bench_test.go
+++ /dev/null
@@ -1,101 +0,0 @@
-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
deleted file mode 100644
index 13f34cb..0000000
--- a/vendor/github.com/sirupsen/logrus/hook_test.go
+++ /dev/null
@@ -1,122 +0,0 @@
-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/syslog/README.md b/vendor/github.com/sirupsen/logrus/hooks/syslog/README.md
deleted file mode 100644
index 92b391c..0000000
--- a/vendor/github.com/sirupsen/logrus/hooks/syslog/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# 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)
- }
-}
-```
diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go
deleted file mode 100644
index 204f001..0000000
--- a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// +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
deleted file mode 100644
index 8d7fbe4..0000000
--- a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-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
deleted file mode 100644
index 62c4845..0000000
--- a/vendor/github.com/sirupsen/logrus/hooks/test/test.go
+++ /dev/null
@@ -1,95 +0,0 @@
-// The Test package is used for testing logrus. It is here for backwards
-// compatibility from when logrus' organization was upper-case. Please use
-// lower-case logrus and the `null` package instead of this one.
-package test
-
-import (
- "io/ioutil"
- "sync"
-
- "github.com/sirupsen/logrus"
-)
-
-// Hook is a hook designed for dealing with logs in test scenarios.
-type Hook struct {
- // Entries is an array of all entries that have been received by this hook.
- // For safe access, use the AllEntries() method, rather than reading this
- // value directly.
- Entries []*logrus.Entry
- mu sync.RWMutex
-}
-
-// NewGlobal installs a test hook for the global logger.
-func NewGlobal() *Hook {
-
- hook := new(Hook)
- logrus.AddHook(hook)
-
- return hook
-
-}
-
-// NewLocal installs a test hook for a given local logger.
-func NewLocal(logger *logrus.Logger) *Hook {
-
- hook := new(Hook)
- logger.Hooks.Add(hook)
-
- return hook
-
-}
-
-// NewNullLogger 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.mu.Lock()
- defer t.mu.Unlock()
- 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() *logrus.Entry {
- t.mu.RLock()
- defer t.mu.RUnlock()
- i := len(t.Entries) - 1
- if i < 0 {
- return nil
- }
- // Make a copy, for safety
- e := *t.Entries[i]
- return &e
-}
-
-// AllEntries returns all entries that were logged.
-func (t *Hook) AllEntries() []*logrus.Entry {
- t.mu.RLock()
- defer t.mu.RUnlock()
- // Make a copy so the returned value won't race with future log requests
- entries := make([]*logrus.Entry, len(t.Entries))
- for i, entry := range t.Entries {
- // Make a copy, for safety
- e := *entry
- entries[i] = &e
- }
- return entries
-}
-
-// Reset removes all Entries from this test hook.
-func (t *Hook) Reset() {
- t.mu.Lock()
- defer t.mu.Unlock()
- 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
deleted file mode 100644
index 3f55cfe..0000000
--- a/vendor/github.com/sirupsen/logrus/hooks/test/test_test.go
+++ /dev/null
@@ -1,39 +0,0 @@
-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_test.go b/vendor/github.com/sirupsen/logrus/json_formatter_test.go
deleted file mode 100644
index 51093a7..0000000
--- a/vendor/github.com/sirupsen/logrus/json_formatter_test.go
+++ /dev/null
@@ -1,199 +0,0 @@
-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_bench_test.go b/vendor/github.com/sirupsen/logrus/logger_bench_test.go
deleted file mode 100644
index dd23a35..0000000
--- a/vendor/github.com/sirupsen/logrus/logger_bench_test.go
+++ /dev/null
@@ -1,61 +0,0 @@
-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_test.go b/vendor/github.com/sirupsen/logrus/logrus_test.go
deleted file mode 100644
index 78cbc28..0000000
--- a/vendor/github.com/sirupsen/logrus/logrus_test.go
+++ /dev/null
@@ -1,386 +0,0 @@
-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/text_formatter_test.go b/vendor/github.com/sirupsen/logrus/text_formatter_test.go
deleted file mode 100644
index 9793b5f..0000000
--- a/vendor/github.com/sirupsen/logrus/text_formatter_test.go
+++ /dev/null
@@ -1,87 +0,0 @@
-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/golang.org/x/sys/.gitattributes b/vendor/golang.org/x/sys/.gitattributes
deleted file mode 100644
index d2f212e..0000000
--- a/vendor/golang.org/x/sys/.gitattributes
+++ /dev/null
@@ -1,10 +0,0 @@
-# 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
deleted file mode 100644
index 8339fd6..0000000
--- a/vendor/golang.org/x/sys/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Add no patterns to .hgignore except for files generated by the build.
-last-change
diff --git a/vendor/golang.org/x/sys/CONTRIBUTING.md b/vendor/golang.org/x/sys/CONTRIBUTING.md
deleted file mode 100644
index 88dff59..0000000
--- a/vendor/golang.org/x/sys/CONTRIBUTING.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# 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/README b/vendor/golang.org/x/sys/README
deleted file mode 100644
index bd422b4..0000000
--- a/vendor/golang.org/x/sys/README
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index 3f8b14b..0000000
--- a/vendor/golang.org/x/sys/codereview.cfg
+++ /dev/null
@@ -1 +0,0 @@
-issuerepo: golang/go
diff --git a/vendor/golang.org/x/sys/plan9/asm.s b/vendor/golang.org/x/sys/plan9/asm.s
deleted file mode 100644
index d4ca868..0000000
--- a/vendor/golang.org/x/sys/plan9/asm.s
+++ /dev/null
@@ -1,8 +0,0 @@
-// 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
deleted file mode 100644
index bc5cab1..0000000
--- a/vendor/golang.org/x/sys/plan9/asm_plan9_386.s
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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
deleted file mode 100644
index d3448e6..0000000
--- a/vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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
deleted file mode 100644
index b4e85a3..0000000
--- a/vendor/golang.org/x/sys/plan9/const_plan9.go
+++ /dev/null
@@ -1,70 +0,0 @@
-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
deleted file mode 100644
index 0955e0c..0000000
--- a/vendor/golang.org/x/sys/plan9/dir_plan9.go
+++ /dev/null
@@ -1,212 +0,0 @@
-// 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
deleted file mode 100644
index 25a96e7..0000000
--- a/vendor/golang.org/x/sys/plan9/env_plan9.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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
deleted file mode 100644
index c37fc26..0000000
--- a/vendor/golang.org/x/sys/plan9/env_unset.go
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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
deleted file mode 100644
index 110cf6a..0000000
--- a/vendor/golang.org/x/sys/plan9/errors_plan9.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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
deleted file mode 100755
index 9f73c60..0000000
--- a/vendor/golang.org/x/sys/plan9/mkall.sh
+++ /dev/null
@@ -1,138 +0,0 @@
-#!/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
deleted file mode 100755
index 052c86d..0000000
--- a/vendor/golang.org/x/sys/plan9/mkerrors.sh
+++ /dev/null
@@ -1,246 +0,0 @@
-#!/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
deleted file mode 100755
index ce8e1e4..0000000
--- a/vendor/golang.org/x/sys/plan9/mksyscall.pl
+++ /dev/null
@@ -1,319 +0,0 @@
-#!/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
deleted file mode 100755
index 3c3ab05..0000000
--- a/vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/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
deleted file mode 100644
index 87ae9d2..0000000
--- a/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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
deleted file mode 100644
index c07c798..0000000
--- a/vendor/golang.org/x/sys/plan9/pwd_plan9.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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
deleted file mode 100644
index c7ff5df..0000000
--- a/vendor/golang.org/x/sys/plan9/race.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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
deleted file mode 100644
index 06cabcc..0000000
--- a/vendor/golang.org/x/sys/plan9/race0.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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
deleted file mode 100644
index 4f7f9ad..0000000
--- a/vendor/golang.org/x/sys/plan9/str.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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
deleted file mode 100644
index df6f8c5..0000000
--- a/vendor/golang.org/x/sys/plan9/syscall.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// 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
deleted file mode 100644
index d39d07d..0000000
--- a/vendor/golang.org/x/sys/plan9/syscall_plan9.go
+++ /dev/null
@@ -1,349 +0,0 @@
-// 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
deleted file mode 100644
index 8f829ba..0000000
--- a/vendor/golang.org/x/sys/plan9/syscall_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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
deleted file mode 100644
index b35598a..0000000
--- a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go
+++ /dev/null
@@ -1,292 +0,0 @@
-// 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
deleted file mode 100644
index b35598a..0000000
--- a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go
+++ /dev/null
@@ -1,292 +0,0 @@
-// 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
deleted file mode 100644
index 22e8abd..0000000
--- a/vendor/golang.org/x/sys/plan9/zsysnum_plan9.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// 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/creds_test.go b/vendor/golang.org/x/sys/unix/creds_test.go
deleted file mode 100644
index eaae7c3..0000000
--- a/vendor/golang.org/x/sys/unix/creds_test.go
+++ /dev/null
@@ -1,121 +0,0 @@
-// 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/export_test.go b/vendor/golang.org/x/sys/unix/export_test.go
deleted file mode 100644
index b4fdd97..0000000
--- a/vendor/golang.org/x/sys/unix/export_test.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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/linux/Dockerfile b/vendor/golang.org/x/sys/unix/linux/Dockerfile
deleted file mode 100644
index 4397143..0000000
--- a/vendor/golang.org/x/sys/unix/linux/Dockerfile
+++ /dev/null
@@ -1,48 +0,0 @@
-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
deleted file mode 100644
index 429754f..0000000
--- a/vendor/golang.org/x/sys/unix/linux/mkall.go
+++ /dev/null
@@ -1,379 +0,0 @@
-// 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
deleted file mode 100755
index 63fd800..0000000
--- a/vendor/golang.org/x/sys/unix/linux/mksysnum.pl
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/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
deleted file mode 100644
index d3bf24a..0000000
--- a/vendor/golang.org/x/sys/unix/linux/types.go
+++ /dev/null
@@ -1,536 +0,0 @@
-// 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/mmap_unix_test.go b/vendor/golang.org/x/sys/unix/mmap_unix_test.go
deleted file mode 100644
index 18ccec0..0000000
--- a/vendor/golang.org/x/sys/unix/mmap_unix_test.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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_test.go b/vendor/golang.org/x/sys/unix/openbsd_test.go
deleted file mode 100644
index 734d765..0000000
--- a/vendor/golang.org/x/sys/unix/openbsd_test.go
+++ /dev/null
@@ -1,113 +0,0 @@
-// 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/syscall_bsd_test.go b/vendor/golang.org/x/sys/unix/syscall_bsd_test.go
deleted file mode 100644
index d8085a0..0000000
--- a/vendor/golang.org/x/sys/unix/syscall_bsd_test.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// 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_freebsd_test.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go
deleted file mode 100644
index 3c3d825..0000000
--- a/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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_test.go b/vendor/golang.org/x/sys/unix/syscall_linux_test.go
deleted file mode 100644
index 91184ca..0000000
--- a/vendor/golang.org/x/sys/unix/syscall_linux_test.go
+++ /dev/null
@@ -1,186 +0,0 @@
-// 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_test.go b/vendor/golang.org/x/sys/unix/syscall_test.go
deleted file mode 100644
index 95eac92..0000000
--- a/vendor/golang.org/x/sys/unix/syscall_test.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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_test.go b/vendor/golang.org/x/sys/unix/syscall_unix_test.go
deleted file mode 100644
index 49208a0..0000000
--- a/vendor/golang.org/x/sys/unix/syscall_unix_test.go
+++ /dev/null
@@ -1,353 +0,0 @@
-// 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/windows/asm_windows_386.s b/vendor/golang.org/x/sys/windows/asm_windows_386.s
deleted file mode 100644
index 1c20dd2..0000000
--- a/vendor/golang.org/x/sys/windows/asm_windows_386.s
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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
deleted file mode 100644
index 4d025ab..0000000
--- a/vendor/golang.org/x/sys/windows/asm_windows_amd64.s
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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
deleted file mode 100644
index 0f62046..0000000
--- a/vendor/golang.org/x/sys/windows/dll_windows.go
+++ /dev/null
@@ -1,378 +0,0 @@
-// 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
deleted file mode 100644
index 4ed03ae..0000000
--- a/vendor/golang.org/x/sys/windows/env_unset.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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
deleted file mode 100644
index a9d8ef4..0000000
--- a/vendor/golang.org/x/sys/windows/env_windows.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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
deleted file mode 100644
index 40af946..0000000
--- a/vendor/golang.org/x/sys/windows/eventlog.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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
deleted file mode 100644
index 3606c3a..0000000
--- a/vendor/golang.org/x/sys/windows/exec_windows.go
+++ /dev/null
@@ -1,97 +0,0 @@
-// 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
deleted file mode 100644
index e1c88c9..0000000
--- a/vendor/golang.org/x/sys/windows/mksyscall.go
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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
deleted file mode 100644
index 343e18a..0000000
--- a/vendor/golang.org/x/sys/windows/race.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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
deleted file mode 100644
index 17af843..0000000
--- a/vendor/golang.org/x/sys/windows/race0.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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
deleted file mode 100644
index 8badf6f..0000000
--- a/vendor/golang.org/x/sys/windows/registry/export_test.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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
deleted file mode 100644
index d0beb19..0000000
--- a/vendor/golang.org/x/sys/windows/registry/key.go
+++ /dev/null
@@ -1,200 +0,0 @@
-// 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
deleted file mode 100644
index 0ac95ff..0000000
--- a/vendor/golang.org/x/sys/windows/registry/mksyscall.go
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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
deleted file mode 100644
index 9c1b782..0000000
--- a/vendor/golang.org/x/sys/windows/registry/registry_test.go
+++ /dev/null
@@ -1,756 +0,0 @@
-// 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
deleted file mode 100644
index e66643c..0000000
--- a/vendor/golang.org/x/sys/windows/registry/syscall.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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
deleted file mode 100644
index 71d4e15..0000000
--- a/vendor/golang.org/x/sys/windows/registry/value.go
+++ /dev/null
@@ -1,384 +0,0 @@
-// 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
deleted file mode 100644
index ceebdd7..0000000
--- a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go
+++ /dev/null
@@ -1,120 +0,0 @@
-// 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
deleted file mode 100644
index ca09bdd..0000000
--- a/vendor/golang.org/x/sys/windows/security_windows.go
+++ /dev/null
@@ -1,435 +0,0 @@
-// 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
deleted file mode 100644
index 1c11d39..0000000
--- a/vendor/golang.org/x/sys/windows/service.go
+++ /dev/null
@@ -1,143 +0,0 @@
-// 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
deleted file mode 100644
index 917cc2a..0000000
--- a/vendor/golang.org/x/sys/windows/str.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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
deleted file mode 100644
index e51ab42..0000000
--- a/vendor/golang.org/x/sys/windows/svc/debug/log.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// 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
deleted file mode 100644
index d5ab94b..0000000
--- a/vendor/golang.org/x/sys/windows/svc/debug/service.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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
deleted file mode 100644
index 0508e22..0000000
--- a/vendor/golang.org/x/sys/windows/svc/event.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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
deleted file mode 100644
index c76a376..0000000
--- a/vendor/golang.org/x/sys/windows/svc/eventlog/install.go
+++ /dev/null
@@ -1,80 +0,0 @@
-// 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
deleted file mode 100644
index 46e5153..0000000
--- a/vendor/golang.org/x/sys/windows/svc/eventlog/log.go
+++ /dev/null
@@ -1,70 +0,0 @@
-// 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
deleted file mode 100644
index 4dd8ad9..0000000
--- a/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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
deleted file mode 100644
index dcf2340..0000000
--- a/vendor/golang.org/x/sys/windows/svc/example/beep.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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
deleted file mode 100644
index 39cb00d..0000000
--- a/vendor/golang.org/x/sys/windows/svc/example/install.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// 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
deleted file mode 100644
index dc96c08..0000000
--- a/vendor/golang.org/x/sys/windows/svc/example/main.go
+++ /dev/null
@@ -1,76 +0,0 @@
-// 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
deleted file mode 100644
index 782dbd9..0000000
--- a/vendor/golang.org/x/sys/windows/svc/example/manage.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// 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
deleted file mode 100644
index 237e809..0000000
--- a/vendor/golang.org/x/sys/windows/svc/example/service.go
+++ /dev/null
@@ -1,82 +0,0 @@
-// 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
deleted file mode 100644
index 6f1be1f..0000000
--- a/vendor/golang.org/x/sys/windows/svc/go12.c
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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
deleted file mode 100644
index 6f0a924..0000000
--- a/vendor/golang.org/x/sys/windows/svc/go12.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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
deleted file mode 100644
index 432a9e7..0000000
--- a/vendor/golang.org/x/sys/windows/svc/go13.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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
deleted file mode 100644
index 0a6edba..0000000
--- a/vendor/golang.org/x/sys/windows/svc/mgr/config.go
+++ /dev/null
@@ -1,139 +0,0 @@
-// 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
deleted file mode 100644
index da8ceb6..0000000
--- a/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go
+++ /dev/null
@@ -1,119 +0,0 @@
-// 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
deleted file mode 100644
index 78be970..0000000
--- a/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go
+++ /dev/null
@@ -1,154 +0,0 @@
-// 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
deleted file mode 100644
index 465f3c3..0000000
--- a/vendor/golang.org/x/sys/windows/svc/mgr/service.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// 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
deleted file mode 100644
index 6fbc923..0000000
--- a/vendor/golang.org/x/sys/windows/svc/security.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// 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
deleted file mode 100644
index 9864f7a..0000000
--- a/vendor/golang.org/x/sys/windows/svc/service.go
+++ /dev/null
@@ -1,316 +0,0 @@
-// 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
deleted file mode 100644
index 764da54..0000000
--- a/vendor/golang.org/x/sys/windows/svc/svc_test.go
+++ /dev/null
@@ -1,118 +0,0 @@
-// 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
deleted file mode 100644
index 5e11bfa..0000000
--- a/vendor/golang.org/x/sys/windows/svc/sys_386.s
+++ /dev/null
@@ -1,67 +0,0 @@
-// 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
deleted file mode 100644
index 87dbec8..0000000
--- a/vendor/golang.org/x/sys/windows/svc/sys_amd64.s
+++ /dev/null
@@ -1,41 +0,0 @@
-// 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
deleted file mode 100644
index 4e2fbe8..0000000
--- a/vendor/golang.org/x/sys/windows/syscall.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// 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
deleted file mode 100644
index 62588b9..0000000
--- a/vendor/golang.org/x/sys/windows/syscall_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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
deleted file mode 100644
index 99b11fe..0000000
--- a/vendor/golang.org/x/sys/windows/syscall_windows.go
+++ /dev/null
@@ -1,991 +0,0 @@
-// 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
deleted file mode 100644
index 0f73c11..0000000
--- a/vendor/golang.org/x/sys/windows/syscall_windows_test.go
+++ /dev/null
@@ -1,107 +0,0 @@
-// 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
deleted file mode 100644
index f7bc8d6..0000000
--- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go
+++ /dev/null
@@ -1,2289 +0,0 @@
-// 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
deleted file mode 100644
index a907ff2..0000000
--- a/vendor/golang.org/x/sys/windows/ztypes_windows.go
+++ /dev/null
@@ -1,1242 +0,0 @@
-// 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
deleted file mode 100644
index 10f33be..0000000
--- a/vendor/golang.org/x/sys/windows/ztypes_windows_386.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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
deleted file mode 100644
index 3f272c2..0000000
--- a/vendor/golang.org/x/sys/windows/ztypes_windows_amd64.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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/decode_test.go b/vendor/gopkg.in/yaml.v2/decode_test.go
deleted file mode 100644
index a6fea0f..0000000
--- a/vendor/gopkg.in/yaml.v2/decode_test.go
+++ /dev/null
@@ -1,998 +0,0 @@
-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/encode_test.go b/vendor/gopkg.in/yaml.v2/encode_test.go
deleted file mode 100644
index 84099bd..0000000
--- a/vendor/gopkg.in/yaml.v2/encode_test.go
+++ /dev/null
@@ -1,501 +0,0 @@
-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/suite_test.go b/vendor/gopkg.in/yaml.v2/suite_test.go
deleted file mode 100644
index c5cf1ed..0000000
--- a/vendor/gopkg.in/yaml.v2/suite_test.go
+++ /dev/null
@@ -1,12 +0,0 @@
-package yaml_test
-
-import (
- . "gopkg.in/check.v1"
- "testing"
-)
-
-func Test(t *testing.T) { TestingT(t) }
-
-type S struct{}
-
-var _ = Suite(&S{})